From 2fb5c2b6299f1fa01c2bc4c1a5d2b10121bd99ee Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Mon, 23 Sep 2024 18:49:38 -0300 Subject: [PATCH 01/23] Remove the binary generation and cli features --- packages/form-generation-tool/package.json | 23 +- packages/form-generation-tool/src/cli/cli.ts | 107 ------- .../form-generation-tool/src/cli/index.ts | 20 -- .../src/generation/formGenerationCommand.ts | 59 ---- .../src/generation/fs/checks.ts | 45 --- .../src/generation/fs/index.ts | 22 -- .../src/generation/fs/loadProjectSchemas.ts | 64 ----- .../src/generation/fs/storeFormAsset.ts | 64 ----- .../{index.ts => generation/generateForms.ts} | 13 +- .../src/generation/index.ts | 20 -- ...tionTool.ts => Bootstrap4FormGenerator.ts} | 11 +- .../utils => }/InputSanitizationUtil.ts | 0 ...tionTool.ts => PatternflyFormGenerator.ts} | 11 +- .../tools/formGenerationToolRegistry.ts | 26 +- ...rmsSchemaUtils.ts => getUniformsSchema.ts} | 4 +- .../src/generation/tools/index.ts | 20 -- .../src/generation/types.ts | 6 +- .../form-generation-tool/webpack.config.js | 35 --- pnpm-lock.yaml | 267 ++---------------- 19 files changed, 64 insertions(+), 753 deletions(-) delete mode 100644 packages/form-generation-tool/src/cli/cli.ts delete mode 100644 packages/form-generation-tool/src/cli/index.ts delete mode 100644 packages/form-generation-tool/src/generation/formGenerationCommand.ts delete mode 100644 packages/form-generation-tool/src/generation/fs/checks.ts delete mode 100644 packages/form-generation-tool/src/generation/fs/index.ts delete mode 100644 packages/form-generation-tool/src/generation/fs/loadProjectSchemas.ts delete mode 100644 packages/form-generation-tool/src/generation/fs/storeFormAsset.ts rename packages/form-generation-tool/src/{index.ts => generation/generateForms.ts} (67%) delete mode 100644 packages/form-generation-tool/src/generation/index.ts rename packages/form-generation-tool/src/generation/tools/{uniforms/bootstrap4/Bootstrap4FormGenerationTool.ts => Bootstrap4FormGenerator.ts} (86%) rename packages/form-generation-tool/src/generation/tools/{uniforms/utils => }/InputSanitizationUtil.ts (100%) rename packages/form-generation-tool/src/generation/tools/{uniforms/patternfly/PatternflyFormGenerationTool.ts => PatternflyFormGenerator.ts} (83%) rename packages/form-generation-tool/src/generation/tools/{uniforms/utils/UniformsSchemaUtils.ts => getUniformsSchema.ts} (96%) delete mode 100644 packages/form-generation-tool/src/generation/tools/index.ts delete mode 100644 packages/form-generation-tool/webpack.config.js diff --git a/packages/form-generation-tool/package.json b/packages/form-generation-tool/package.json index 061d8edc1df..640334ed26e 100644 --- a/packages/form-generation-tool/package.json +++ b/packages/form-generation-tool/package.json @@ -21,35 +21,24 @@ "dist" ], "scripts": { - "build:dev": "rimraf dist && webpack --env dev && pnpm build-binaries", - "build:prod": "pnpm lint && pnpm test && rimraf dist && webpack && pnpm build-binaries:darwin && pnpm build-binaries:linux && pnpm build-binaries:win32", - "build:prod:all": "pnpm lint && pnpm test && rimraf dist && webpack && pnpm && pnpm package:prod:linux && pnpm package:prod:darwin && pnpm package:prod:win32", - "build-binaries": "run-script-os", - "build-binaries:darwin": "pkg dist/index.js --output dist/form-generation-cli-macos --target node18-macos-x64", - "build-binaries:linux": "pkg dist/index.js --output dist/form-generation-cli-linux --target node18-linux-x64", - "build-binaries:win32": "pkg dist/index.js --output dist/form-generation-cli-win.exe --target node18-win-x64", + "build:dev": "rimraf dist && tsc -p tsconfig.json", + "build:prod": "rimraf dist && && tsc -p tsconfig.json && pnpm lint && pnpm test", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, "dependencies": { "@kie-tools/uniforms-bootstrap4-codegen": "workspace:*", "@kie-tools/uniforms-patternfly-codegen": "workspace:*", - "inquirer": "^8.1.1", "lodash": "^4.17.21", "uniforms": "^3.10.2", "uniforms-bridge-json-schema": "^3.10.2" }, "devDependencies": { - "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@babel/preset-react": "^7.16.0", - "@kie-tools-core/webpack-base": "workspace:*", "@kie-tools/eslint": "workspace:*", "@kie-tools/jest-base": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/tsconfig": "workspace:*", "@testing-library/jest-dom": "^6.4.6", - "@types/inquirer": "^7.3.2", "@types/jest": "^29.5.12", "@types/jest-when": "^3.5.5", "@types/lodash": "^4.14.168", @@ -57,15 +46,9 @@ "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", "jest-when": "^3.6.0", - "pkg": "^5.8.1", "rimraf": "^3.0.2", "run-script-os": "^1.1.6", "ts-jest": "^29.1.5", - "typescript": "^5.5.3", - "webpack": "^5.94.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.15.1", - "webpack-merge": "^5.9.0", - "webpack-node-externals": "^3.0.0" + "typescript": "^5.5.3" } } diff --git a/packages/form-generation-tool/src/cli/cli.ts b/packages/form-generation-tool/src/cli/cli.ts deleted file mode 100644 index 760ab89424f..00000000000 --- a/packages/form-generation-tool/src/cli/cli.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import inquirer, { Answers } from "inquirer"; - -import { Args, generateForms } from "../generation"; -import { checkKogitoProjectHasForms, checkKogitoProjectStructure } from "../generation/fs"; - -export function run() { - const validateProjectPath = (path: string): string | boolean => { - if (!path || path === "") { - return "Please type a Kogito Project path"; - } - try { - checkKogitoProjectStructure(path); - } catch (err) { - return err.message; - } - - return true; - }; - - const isOverwriteVisible = (answers: Answers): boolean => { - return checkKogitoProjectHasForms(answers.path); - }; - - const execute = (answers: Answers): void => { - const args: Args = { - path: answers.path, - type: answers.type, - overwrite: answers.overwrite, - }; - - const message = - "\nCurrent selection:" + - `\nProject path: ${args.path}` + - `\nForm type: ${args.type}` + - `${args.overwrite !== undefined ? `\nOverwrite existing forms: ${args.overwrite}` : ""}\n`; - - console.log(message); - - inquirer - .prompt({ - name: "confirm", - type: "confirm", - message: "Do you want to continue?", - default: true, - }) - .then((answers) => { - if (answers.confirm) { - generateForms(args); - } - console.log("\nGood bye!"); - }); - }; - - const questions = [ - { - name: "path", - type: "string", - message: "Type your Kogito Project path:", - validate: validateProjectPath, - }, - { - name: "overwrite", - type: "confirm", - message: "The project already contains forms, do you want to overwrite the existing ones?", - default: false, - when: isOverwriteVisible, - }, - { - name: "type", - type: "list", - message: "Select the Form type:", - choices: ["patternfly", "bootstrap"], - default: "patternfly", - }, - ]; - - console.log("Kogito Form Generation CLI"); - console.log("==========================="); - console.log(); - console.log("This tool will help you generate forms for the Processes and User Tasks in your Kogito Projects."); - console.log( - "The tool will search for the User Tasks JSON schemas generated in your project, so make sure the project is build." - ); - console.log("The generated forms will be stored as resources in your project (in src/main/resources/forms folder)."); - console.log(); - - inquirer.prompt(questions).then(execute); -} diff --git a/packages/form-generation-tool/src/cli/index.ts b/packages/form-generation-tool/src/cli/index.ts deleted file mode 100644 index 900d4290b24..00000000000 --- a/packages/form-generation-tool/src/cli/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { run } from "./cli"; diff --git a/packages/form-generation-tool/src/generation/formGenerationCommand.ts b/packages/form-generation-tool/src/generation/formGenerationCommand.ts deleted file mode 100644 index 5a914b1cebb..00000000000 --- a/packages/form-generation-tool/src/generation/formGenerationCommand.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { lookupFormGenerationTool } from "./tools"; -import { FormGenerationTool, FormSchema, FormAsset } from "./types"; -import { loadProjectSchemas, storeFormAsset } from "./fs"; - -export interface Args { - path: string; - type: string; - overwrite: boolean; -} - -export function generateForms({ path, type, overwrite }: Args) { - console.log("\nStarting Form generation:"); - - try { - const tool: FormGenerationTool = lookupFormGenerationTool(type); - - const forms: FormSchema[] = loadProjectSchemas(path); - - if (forms.length === 0) { - console.log(`\nCouldn't find any form schema in "${path}", check if your project is already built.`); - return; - } - - console.log(`\nFound ${forms.length} schemas`); - - forms.forEach((form) => { - try { - console.log(`\nGenerating form "${form.name}"`); - const output: FormAsset = tool.generate(form); - storeFormAsset(output, path, overwrite); - console.log(`Successfully generated form "${output.sanitizedAssetName}"`); - } catch (err) { - console.log(`Cannot generate form "${form.name}": `, err.message); - } - }); - } catch (err) { - console.log("Error during form generation:"); - console.log(err.message); - } -} diff --git a/packages/form-generation-tool/src/generation/fs/checks.ts b/packages/form-generation-tool/src/generation/fs/checks.ts deleted file mode 100644 index 5c369d36723..00000000000 --- a/packages/form-generation-tool/src/generation/fs/checks.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import fs from "fs"; -import path from "path"; -import { ERROR_INVALID_FOLDER, ERROR_NOT_DIRECTORY, ERROR_NOT_MVN_PROJECT } from "./loadProjectSchemas"; -import { FORM_STORAGE_FOLDER } from "./storeFormAsset"; - -export function checkKogitoProjectStructure(projectPath: string) { - if (!fs.existsSync(projectPath)) { - throw new Error(ERROR_INVALID_FOLDER); - } - - const sourceStat = fs.statSync(projectPath); - - if (!sourceStat.isDirectory()) { - throw new Error(ERROR_NOT_DIRECTORY); - } - - if (!fs.existsSync(`${projectPath}/pom.xml`)) { - throw new Error(ERROR_NOT_MVN_PROJECT); - } -} - -export function checkKogitoProjectHasForms(projectPath: string) { - const formsPath = path.join(projectPath, FORM_STORAGE_FOLDER); - - return fs.existsSync(formsPath); -} diff --git a/packages/form-generation-tool/src/generation/fs/index.ts b/packages/form-generation-tool/src/generation/fs/index.ts deleted file mode 100644 index cf27275ea6e..00000000000 --- a/packages/form-generation-tool/src/generation/fs/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { checkKogitoProjectStructure, checkKogitoProjectHasForms } from "./checks"; -export { loadProjectSchemas } from "./loadProjectSchemas"; -export { storeFormAsset } from "./storeFormAsset"; diff --git a/packages/form-generation-tool/src/generation/fs/loadProjectSchemas.ts b/packages/form-generation-tool/src/generation/fs/loadProjectSchemas.ts deleted file mode 100644 index 0b6b12b3941..00000000000 --- a/packages/form-generation-tool/src/generation/fs/loadProjectSchemas.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import fs from "fs"; -import { FormSchema } from "../types"; -import path from "path"; -import { checkKogitoProjectStructure } from "./checks"; - -const JSON_SCHEMA_PATH = "target/classes/META-INF/jsonSchema"; -const JSON_SCHEMA_EXTENSION = ".json"; - -export const ERROR_INVALID_FOLDER = "Path doesn't exist"; -export const ERROR_NOT_DIRECTORY = "Path isn't a directory"; -export const ERROR_NOT_MVN_PROJECT = "Cannot find 'pom.xml' in source folder, are you sure it is a Kogito Project?"; - -function isValidFile(schemasPath: string, file: string): boolean { - if (!file.endsWith(JSON_SCHEMA_EXTENSION)) { - return false; - } - const stat = fs.statSync(`${schemasPath}/${file}`); - return stat.isFile(); -} - -export function loadProjectSchemas(projectPath: string, jsonSchemaPath?: string): FormSchema[] { - checkKogitoProjectStructure(projectPath); - - const schemasPath = `${projectPath}/${jsonSchemaPath || JSON_SCHEMA_PATH}`; - - if (!fs.existsSync(schemasPath)) { - return []; - } - - const files = fs.readdirSync(schemasPath); - - return files - .filter((file) => isValidFile(schemasPath, file)) - .map((file) => { - try { - return { - name: path.parse(file).name, - schema: JSON.parse(fs.readFileSync(`${schemasPath}/${file}`, "utf8")), - }; - } catch (err) { - console.log(`Cannot load form content for "${file}":`, err.message); - } - }) - .filter((formSchema) => formSchema !== undefined) as FormSchema[]; -} diff --git a/packages/form-generation-tool/src/generation/fs/storeFormAsset.ts b/packages/form-generation-tool/src/generation/fs/storeFormAsset.ts deleted file mode 100644 index 70b2c587d06..00000000000 --- a/packages/form-generation-tool/src/generation/fs/storeFormAsset.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { FormAsset } from "../types"; -import fs from "fs"; -import path from "path"; - -export const FORM_STORAGE_FOLDER = "src/main/resources/forms"; -export const FORM_CONFIG_EXT = ".config"; - -function getFormsFolder(sourcePath: string): string { - return `${sourcePath}/${FORM_STORAGE_FOLDER}`; -} - -export function getFormAssetPath(sourcePath: string, formAsset: string): string { - return `${getFormsFolder(sourcePath)}/${formAsset}`; -} - -export function getFormConfigAssetPath(source: string, formAsset: FormAsset): string { - return getFormAssetPath(source, `${formAsset.sanitizedId}${FORM_CONFIG_EXT}`); -} - -export function storeFormAsset(formAsset: FormAsset, source: string, overwriteExisting: boolean) { - const storagePath = getFormsFolder(source); - - if (!fs.existsSync(storagePath)) { - fs.mkdirSync(storagePath); - } - - const existingFormAssets = fs.readdirSync(storagePath).filter((file) => { - const extension = path.extname(file); - return path.basename(file, extension) === formAsset.sanitizedId; - }); - - if (existingFormAssets.length > 0) { - if (!overwriteExisting) { - throw new Error(`Form already exists.`); - } - - console.log(`Form "${formAsset.sanitizedId}" already exists. Proceeding to overwrite it.`); - - existingFormAssets.forEach((file) => { - fs.rmSync(getFormAssetPath(source, file)); - }); - } - fs.writeFileSync(getFormAssetPath(source, formAsset.sanitizedAssetName), formAsset.content); - fs.writeFileSync(getFormConfigAssetPath(source, formAsset), JSON.stringify(formAsset.config, null, 4)); -} diff --git a/packages/form-generation-tool/src/index.ts b/packages/form-generation-tool/src/generation/generateForms.ts similarity index 67% rename from packages/form-generation-tool/src/index.ts rename to packages/form-generation-tool/src/generation/generateForms.ts index 1fe8e566468..9e0c9069df9 100644 --- a/packages/form-generation-tool/src/index.ts +++ b/packages/form-generation-tool/src/generation/generateForms.ts @@ -17,6 +17,15 @@ * under the License. */ -import * as cli from "./cli"; +import { getFormGenerationTool } from "./tools/formGenerationToolRegistry"; +import { FormGenerator, FormSchema, FormAsset } from "./types"; -cli.run(); +export interface Args { + type: string; + forms: FormSchema[]; +} + +export function generateForms({ type, forms }: Args): FormAsset[] { + const tool: FormGenerator = getFormGenerationTool(type); + return forms.map((form) => tool.generate(form)); +} diff --git a/packages/form-generation-tool/src/generation/index.ts b/packages/form-generation-tool/src/generation/index.ts deleted file mode 100644 index 8ff98501e40..00000000000 --- a/packages/form-generation-tool/src/generation/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export * from "./formGenerationCommand"; diff --git a/packages/form-generation-tool/src/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool.ts b/packages/form-generation-tool/src/generation/tools/Bootstrap4FormGenerator.ts similarity index 86% rename from packages/form-generation-tool/src/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool.ts rename to packages/form-generation-tool/src/generation/tools/Bootstrap4FormGenerator.ts index 4fb02eb3389..a7107aaa0c4 100644 --- a/packages/form-generation-tool/src/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool.ts +++ b/packages/form-generation-tool/src/generation/tools/Bootstrap4FormGenerator.ts @@ -18,19 +18,18 @@ */ import unescape from "lodash/unescape"; -import { FormAssetType, FormAsset, FormStyle, FormConfig, FormGenerationTool, FormSchema } from "../../../types"; - +import { FormAssetType, FormAsset, FormStyle, FormConfiguration, FormGenerator, FormSchema } from "../types"; import { renderForm } from "@kie-tools/uniforms-bootstrap4-codegen/dist"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; -import { getUniformsSchema } from "../utils/UniformsSchemaUtils"; -import { inputSanitizationUtil } from "../utils/InputSanitizationUtil"; +import { getUniformsSchema } from "./getUniformsSchema"; +import { inputSanitizationUtil } from "./InputSanitizationUtil"; export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"; export const BOOTSTRAP4_JS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"; export const JQUERY_URL = "https://code.jquery.com/jquery-3.2.1.slim.min.js"; -export class Bootstrap4FormConfig implements FormConfig { +export class Bootstrap4FormConfig implements FormConfiguration { public readonly schema: string; constructor(formSchema: any) { @@ -48,7 +47,7 @@ export class Bootstrap4FormConfig implements FormConfig { }; } -export class Bootstrap4FormGenerationTool implements FormGenerationTool { +export class Bootstrap4FormGenerator implements FormGenerator { type: string = FormStyle.BOOTSTRAP; generate(inputSchema: FormSchema): FormAsset { diff --git a/packages/form-generation-tool/src/generation/tools/uniforms/utils/InputSanitizationUtil.ts b/packages/form-generation-tool/src/generation/tools/InputSanitizationUtil.ts similarity index 100% rename from packages/form-generation-tool/src/generation/tools/uniforms/utils/InputSanitizationUtil.ts rename to packages/form-generation-tool/src/generation/tools/InputSanitizationUtil.ts diff --git a/packages/form-generation-tool/src/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool.ts b/packages/form-generation-tool/src/generation/tools/PatternflyFormGenerator.ts similarity index 83% rename from packages/form-generation-tool/src/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool.ts rename to packages/form-generation-tool/src/generation/tools/PatternflyFormGenerator.ts index cb8c77ffd01..d5b54a5d66b 100644 --- a/packages/form-generation-tool/src/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool.ts +++ b/packages/form-generation-tool/src/generation/tools/PatternflyFormGenerator.ts @@ -18,14 +18,13 @@ */ import unescape from "lodash/unescape"; -import { FormAssetType, FormAsset, FormStyle, FormConfig, FormGenerationTool, FormSchema } from "../../../types"; - +import { FormAssetType, FormAsset, FormStyle, FormConfiguration, FormGenerator, FormSchema } from "../types"; import { renderForm } from "@kie-tools/uniforms-patternfly-codegen/dist"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; -import { getUniformsSchema } from "../utils/UniformsSchemaUtils"; -import { inputSanitizationUtil } from "../utils/InputSanitizationUtil"; +import { getUniformsSchema } from "./getUniformsSchema"; +import { inputSanitizationUtil } from "./InputSanitizationUtil"; -export class PatternflyFormConfig implements FormConfig { +export class PatternflyFormConfig implements FormConfiguration { public readonly schema: string; constructor(formSchema: any) { @@ -38,7 +37,7 @@ export class PatternflyFormConfig implements FormConfig { }; } -export class PatternflyFormGenerationTool implements FormGenerationTool { +export class PatternflyFormGenerator implements FormGenerator { type: string = FormStyle.PATTERNFLY; generate(inputSchema: FormSchema): FormAsset { diff --git a/packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts b/packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts index ef4b51eb3bf..f6f469aa4fa 100644 --- a/packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts +++ b/packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts @@ -17,23 +17,23 @@ * under the License. */ -import { PatternflyFormGenerationTool } from "./uniforms/patternfly/PatternflyFormGenerationTool"; -import { FormGenerationTool } from "../types"; -import { Bootstrap4FormGenerationTool } from "./uniforms/bootstrap4/Bootstrap4FormGenerationTool"; +import { PatternflyFormGenerator } from "./PatternflyFormGenerator"; +import { FormGenerator } from "../types"; +import { Bootstrap4FormGenerator } from "./Bootstrap4FormGenerator"; -const toolsRegistry: Map = new Map(); +const formGeneratorIndex: Map = new Map(); -export function registerFormGenerationTool(formGenerationTool: FormGenerationTool) { - toolsRegistry.set(formGenerationTool.type, formGenerationTool); +export function registerFormGenerator(formGenerator: FormGenerator) { + formGeneratorIndex.set(formGenerator.type, formGenerator); } -registerFormGenerationTool(new PatternflyFormGenerationTool()); -registerFormGenerationTool(new Bootstrap4FormGenerationTool()); +registerFormGenerator(new PatternflyFormGenerator()); +registerFormGenerator(new Bootstrap4FormGenerator()); -export function lookupFormGenerationTool(type: string): FormGenerationTool { - const tool = toolsRegistry.get(type); - if (tool) { - return tool; +export function getFormGenerationTool(type: string): FormGenerator { + const formGenerator = formGeneratorIndex.get(type); + if (formGenerator) { + return formGenerator; } - throw new Error(`Unsupported form type "${type}"`); + throw new Error(`Unsupported form generation type: "${type}"`); } diff --git a/packages/form-generation-tool/src/generation/tools/uniforms/utils/UniformsSchemaUtils.ts b/packages/form-generation-tool/src/generation/tools/getUniformsSchema.ts similarity index 96% rename from packages/form-generation-tool/src/generation/tools/uniforms/utils/UniformsSchemaUtils.ts rename to packages/form-generation-tool/src/generation/tools/getUniformsSchema.ts index e52f0ab188b..bcb7d0f192b 100644 --- a/packages/form-generation-tool/src/generation/tools/uniforms/utils/UniformsSchemaUtils.ts +++ b/packages/form-generation-tool/src/generation/tools/getUniformsSchema.ts @@ -22,7 +22,7 @@ import get from "lodash/get"; import set from "lodash/set"; import unset from "lodash/unset"; -export const getUniformsSchema = (schema: any): any => { +export function getUniformsSchema(schema: any) { const schemaClone = cloneDeep(schema); if (schemaClone.properties) { @@ -43,4 +43,4 @@ export const getUniformsSchema = (schema: any): any => { } return schemaClone; -}; +} diff --git a/packages/form-generation-tool/src/generation/tools/index.ts b/packages/form-generation-tool/src/generation/tools/index.ts deleted file mode 100644 index 1cef086b8a3..00000000000 --- a/packages/form-generation-tool/src/generation/tools/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { registerFormGenerationTool, lookupFormGenerationTool } from "./formGenerationToolRegistry"; diff --git a/packages/form-generation-tool/src/generation/types.ts b/packages/form-generation-tool/src/generation/types.ts index 523e30b3892..c4d294d09a9 100644 --- a/packages/form-generation-tool/src/generation/types.ts +++ b/packages/form-generation-tool/src/generation/types.ts @@ -37,7 +37,7 @@ export interface FormResources { scripts: Record; } -export interface FormConfig { +export interface FormConfiguration { schema: string; resources: FormResources; } @@ -49,10 +49,10 @@ export interface FormAsset { sanitizedAssetName: string; content: string; type: FormAssetType | string; - config: FormConfig; + config: FormConfiguration; } -export interface FormGenerationTool { +export interface FormGenerator { type: string; generate: (schema: FormSchema) => FormAsset; } diff --git a/packages/form-generation-tool/webpack.config.js b/packages/form-generation-tool/webpack.config.js deleted file mode 100644 index 6063e28adf9..00000000000 --- a/packages/form-generation-tool/webpack.config.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const nodeExternals = require("webpack-node-externals"); -const { merge } = require("webpack-merge"); -const common = require("@kie-tools-core/webpack-base/webpack.common.config"); - -module.exports = (env, argv) => [ - merge(common(env, argv), { - entry: { - index: "./src/index.ts", - }, - target: "node", - output: { - libraryTarget: "commonjs2", - }, - externals: [nodeExternals({ modulesDir: "../../node_modules" })], - }), -]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e6dcff6232..067d7446daa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -861,13 +861,13 @@ importers: version: 1.67.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + version: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) jest-junit: specifier: ^16.0.0 version: 16.0.0 jest-when: specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + version: 3.6.0(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -876,7 +876,7 @@ importers: version: 0.0.2 ts-jest: specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -4173,7 +4173,7 @@ importers: version: link:../tsconfig '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))) + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) '@testing-library/react': specifier: ^12.1.5 version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -4200,7 +4200,7 @@ importers: version: 2.4.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -4209,13 +4209,13 @@ importers: version: 16.0.0 jest-when: specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))) + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) rimraf: specifier: ^3.0.2 version: 3.0.2 ts-jest: specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -4833,9 +4833,6 @@ importers: '@kie-tools/uniforms-patternfly-codegen': specifier: workspace:* version: link:../uniforms-patternfly-codegen - inquirer: - specifier: ^8.1.1 - version: 8.2.0 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -4846,18 +4843,6 @@ importers: specifier: ^3.10.2 version: 3.10.2(react@17.0.2) devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.16.12 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.11(@babel/core@7.16.12) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.16.12) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base '@kie-tools/eslint': specifier: workspace:* version: link:../eslint @@ -4872,10 +4857,7 @@ importers: version: link:../tsconfig '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@types/inquirer': - specifier: ^7.3.2 - version: 7.3.3 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -4887,7 +4869,7 @@ importers: version: 4.14.169 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -4896,10 +4878,7 @@ importers: version: 16.0.0 jest-when: specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - pkg: - specifier: ^5.8.1 - version: 5.8.1(encoding@0.1.13) + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -4908,25 +4887,10 @@ importers: version: 1.1.6 ts-jest: specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.1.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.5.3 version: 5.5.3 - webpack: - specifier: ^5.94.0 - version: 5.94.0(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 packages/i18n: dependencies: @@ -7787,7 +7751,7 @@ importers: version: 2.3.0(react@17.0.2) react-json-view: specifier: ^1.21.3 - version: 1.21.3(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 1.21.3(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react-moment: specifier: 0.9.7 version: 0.9.7(moment@2.29.4)(prop-types@15.8.1)(react@17.0.2) @@ -8102,7 +8066,7 @@ importers: version: 2.3.0(react@17.0.2) react-json-view: specifier: ^1.21.3 - version: 1.21.3(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 1.21.3(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react-moment: specifier: 0.9.7 version: 0.9.7(moment@2.29.4)(prop-types@15.8.1)(react@17.0.2) @@ -19200,9 +19164,6 @@ packages: '@types/http-proxy@1.17.14': resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} - '@types/inquirer@7.3.3': - resolution: {integrity: sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==} - '@types/invariant@2.2.35': resolution: {integrity: sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==} @@ -19473,9 +19434,6 @@ packages: '@types/testing-library__jest-dom@5.14.9': resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} - '@types/through@0.0.30': - resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} - '@types/tough-cookie@4.0.2': resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} @@ -23981,10 +23939,6 @@ packages: resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@8.2.0: - resolution: {integrity: sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==} - engines: {node: '>=8.0.0'} - inquirer@8.2.4: resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} engines: {node: '>=12.0.0'} @@ -27873,10 +27827,6 @@ packages: resolution: {integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==} hasBin: true - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - rxjs@7.5.2: resolution: {integrity: sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==} @@ -38054,41 +38004,6 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.14.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.3.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -38153,6 +38068,7 @@ snapshots: v8-to-istanbul: 9.1.3 transitivePeerDependencies: - supports-color + optional: true '@jest/reporters@29.7.0(node-notifier@8.0.2)': dependencies: @@ -42314,21 +42230,6 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))': - dependencies: - '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.6 - aria-query: 5.1.3 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.7.0 - '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))': dependencies: '@adobe/css-tools': 4.4.0 @@ -42359,21 +42260,6 @@ snapshots: '@types/jest': 29.5.12 jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))': - dependencies: - '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.6 - aria-query: 5.1.3 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.7.0 - '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@testing-library/react-hooks@8.0.1(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react-test-renderer@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: '@babel/runtime': 7.23.6 @@ -42773,11 +42659,6 @@ snapshots: dependencies: '@types/node': 20.14.13 - '@types/inquirer@7.3.3': - dependencies: - '@types/through': 0.0.30 - rxjs: 6.6.7 - '@types/invariant@2.2.35': {} '@types/istanbul-lib-coverage@2.0.1': {} @@ -43083,10 +42964,6 @@ snapshots: dependencies: '@types/jest': 29.5.12 - '@types/through@0.0.30': - dependencies: - '@types/node': 20.14.2 - '@types/tough-cookie@4.0.2': {} '@types/treeify@1.0.0': {} @@ -43453,9 +43330,9 @@ snapshots: webpack: 5.94.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0) - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0))': dependencies: - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) + webpack: 5.94.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0))': @@ -48423,12 +48300,6 @@ snapshots: transitivePeerDependencies: - encoding - fbemitter@3.0.0(encoding@0.1.13): - dependencies: - fbjs: 3.0.2(encoding@0.1.13) - transitivePeerDependencies: - - encoding - fbjs-css-vars@1.0.2: {} fbjs@3.0.2: @@ -48674,14 +48545,6 @@ snapshots: flow-parser@0.218.0: {} - flux@4.0.3(encoding@0.1.13)(react@17.0.2): - dependencies: - fbemitter: 3.0.0(encoding@0.1.13) - fbjs: 3.0.2(encoding@0.1.13) - react: 17.0.2 - transitivePeerDependencies: - - encoding - flux@4.0.3(react@17.0.2): dependencies: fbemitter: 3.0.0 @@ -49772,23 +49635,6 @@ snapshots: ini@4.1.3: {} - inquirer@8.2.0: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.5.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - inquirer@8.2.4: dependencies: ansi-escapes: 4.3.2 @@ -50371,25 +50217,6 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - exit: 0.1.2 - import-local: 3.0.2 - jest-config: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-config@29.7.0(@types/node@20.14.2): dependencies: '@babel/core': 7.23.9 @@ -50953,10 +50780,6 @@ snapshots: dependencies: jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-when@3.6.0(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))): - dependencies: - jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-worker@25.5.0: dependencies: merge-stream: 2.0.0 @@ -51050,18 +50873,6 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@jest/types': 29.6.3 - import-local: 3.0.2 - jest-cli: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jiti@1.17.1: {} jiti@1.21.6: {} @@ -54264,18 +54075,6 @@ snapshots: react-is@18.1.0: {} - react-json-view@1.21.3(@types/react@17.0.21)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): - dependencies: - flux: 4.0.3(encoding@0.1.13)(react@17.0.2) - react: 17.0.2 - react-base16-styling: 0.6.0 - react-dom: 17.0.2(react@17.0.2) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.3.3(@types/react@17.0.21)(react@17.0.2) - transitivePeerDependencies: - - '@types/react' - - encoding - react-json-view@1.21.3(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): dependencies: flux: 4.0.3(react@17.0.2) @@ -54986,10 +54785,6 @@ snapshots: run-script-os@1.1.6: {} - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - rxjs@7.5.2: dependencies: tslib: 2.3.1 @@ -56593,24 +56388,6 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.16.12) - ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.4 - typescript: 5.5.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.16.12 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.16.12) - ts-jest@29.1.5(@babel/core@7.18.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.18.10))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 @@ -57781,7 +57558,7 @@ snapshots: webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0)) '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0)) colorette: 2.0.16 @@ -57791,7 +57568,7 @@ snapshots: import-local: 3.0.2 interpret: 2.2.0 rechoir: 0.7.0 - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) + webpack: 5.94.0(webpack-cli@4.10.0) webpack-merge: 5.9.0 optionalDependencies: webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) @@ -57812,14 +57589,14 @@ snapshots: webpack: 5.94.0(webpack-cli@4.10.0) webpack-merge: 5.9.0 - webpack-dev-middleware@5.3.3(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)): + webpack-dev-middleware@5.3.3(webpack@5.94.0(webpack-cli@4.10.0)): dependencies: colorette: 2.0.20 memfs: 3.5.1 mime-types: 2.1.34 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) + webpack: 5.94.0(webpack-cli@4.10.0) webpack-dev-middleware@5.3.3(webpack@5.94.0): dependencies: @@ -57911,10 +57688,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.3(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) + webpack-dev-middleware: 5.3.3(webpack@5.94.0(webpack-cli@4.10.0)) ws: 8.18.0 optionalDependencies: - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) + webpack: 5.94.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) transitivePeerDependencies: - bufferutil From 0fe5cfb03e5f468f6c36977d8380a1e4c9895550 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Mon, 23 Sep 2024 21:10:50 -0300 Subject: [PATCH 02/23] Fix test imports and re-organize --- .../tools => }/formGenerationToolRegistry.ts | 6 +- .../src/{generation => }/generateForms.ts | 2 +- .../Bootstrap4FormGenerator.ts | 4 +- .../PatternflyFormGenerator.ts | 4 +- .../tools => }/getUniformsSchema.ts | 0 ...zationUtil.ts => inputSanitizationUtil.ts} | 0 .../src/{generation => }/types.ts | 0 .../mock.ts => __mocks__/bootstrap.ts} | 0 .../mock.ts => __mocks__/partternfly.ts} | 0 .../formGenerationToolsRegistry.test.ts | 16 ++-- ...nCommand.test.ts => generateForms.test.ts} | 25 ++--- .../tests/generation/fs/checks.test.ts | 79 --------------- .../generation/fs/loadProjectSchemas.test.ts | 36 ------- .../generation/fs/resources/empty/pom.xml | 0 .../generation/fs/resources/full/pom.xml | 0 .../fs/resources/full/schemas/empty.json | 0 .../full/schemas/travels_ApplyForVisa.json | 50 ---------- .../full/schemas/travels_ConfirmTravel.json | 64 ------------- .../generation/fs/storeFormAsset.test.ts | 95 ------------------- .../Bootstrap4FormGenerationTool.test.ts | 13 +-- .../PatternflyFormGenerationTool.test.ts | 13 +-- 21 files changed, 33 insertions(+), 374 deletions(-) rename packages/form-generation-tool/src/{generation/tools => }/formGenerationToolRegistry.ts (87%) rename packages/form-generation-tool/src/{generation => }/generateForms.ts (93%) rename packages/form-generation-tool/src/{generation/tools => generators}/Bootstrap4FormGenerator.ts (95%) rename packages/form-generation-tool/src/{generation/tools => generators}/PatternflyFormGenerator.ts (94%) rename packages/form-generation-tool/src/{generation/tools => }/getUniformsSchema.ts (100%) rename packages/form-generation-tool/src/{generation/tools/InputSanitizationUtil.ts => inputSanitizationUtil.ts} (100%) rename packages/form-generation-tool/src/{generation => }/types.ts (100%) rename packages/form-generation-tool/tests/{generation/tools/uniforms/bootstrap4/mock.ts => __mocks__/bootstrap.ts} (100%) rename packages/form-generation-tool/tests/{generation/tools/uniforms/patternfly/mock.ts => __mocks__/partternfly.ts} (100%) rename packages/form-generation-tool/tests/{generation/tools => }/formGenerationToolsRegistry.test.ts (70%) rename packages/form-generation-tool/tests/{generation/formGenerationCommand.test.ts => generateForms.test.ts} (85%) delete mode 100644 packages/form-generation-tool/tests/generation/fs/checks.test.ts delete mode 100644 packages/form-generation-tool/tests/generation/fs/loadProjectSchemas.test.ts delete mode 100644 packages/form-generation-tool/tests/generation/fs/resources/empty/pom.xml delete mode 100644 packages/form-generation-tool/tests/generation/fs/resources/full/pom.xml delete mode 100644 packages/form-generation-tool/tests/generation/fs/resources/full/schemas/empty.json delete mode 100644 packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ApplyForVisa.json delete mode 100644 packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ConfirmTravel.json delete mode 100644 packages/form-generation-tool/tests/generation/fs/storeFormAsset.test.ts rename packages/form-generation-tool/tests/{generation/tools/uniforms/bootstrap4 => generators}/Bootstrap4FormGenerationTool.test.ts (79%) rename packages/form-generation-tool/tests/{generation/tools/uniforms/patternfly => generators}/PatternflyFormGenerationTool.test.ts (81%) diff --git a/packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts b/packages/form-generation-tool/src/formGenerationToolRegistry.ts similarity index 87% rename from packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts rename to packages/form-generation-tool/src/formGenerationToolRegistry.ts index f6f469aa4fa..6813bfc6900 100644 --- a/packages/form-generation-tool/src/generation/tools/formGenerationToolRegistry.ts +++ b/packages/form-generation-tool/src/formGenerationToolRegistry.ts @@ -17,9 +17,9 @@ * under the License. */ -import { PatternflyFormGenerator } from "./PatternflyFormGenerator"; -import { FormGenerator } from "../types"; -import { Bootstrap4FormGenerator } from "./Bootstrap4FormGenerator"; +import { PatternflyFormGenerator } from "./generators/PatternflyFormGenerator"; +import { FormGenerator } from "./types"; +import { Bootstrap4FormGenerator } from "./generators/Bootstrap4FormGenerator"; const formGeneratorIndex: Map = new Map(); diff --git a/packages/form-generation-tool/src/generation/generateForms.ts b/packages/form-generation-tool/src/generateForms.ts similarity index 93% rename from packages/form-generation-tool/src/generation/generateForms.ts rename to packages/form-generation-tool/src/generateForms.ts index 9e0c9069df9..8b74842cfbe 100644 --- a/packages/form-generation-tool/src/generation/generateForms.ts +++ b/packages/form-generation-tool/src/generateForms.ts @@ -17,7 +17,7 @@ * under the License. */ -import { getFormGenerationTool } from "./tools/formGenerationToolRegistry"; +import { getFormGenerationTool } from "./formGenerationToolRegistry"; import { FormGenerator, FormSchema, FormAsset } from "./types"; export interface Args { diff --git a/packages/form-generation-tool/src/generation/tools/Bootstrap4FormGenerator.ts b/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts similarity index 95% rename from packages/form-generation-tool/src/generation/tools/Bootstrap4FormGenerator.ts rename to packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts index a7107aaa0c4..050bb4710f1 100644 --- a/packages/form-generation-tool/src/generation/tools/Bootstrap4FormGenerator.ts +++ b/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts @@ -21,8 +21,8 @@ import unescape from "lodash/unescape"; import { FormAssetType, FormAsset, FormStyle, FormConfiguration, FormGenerator, FormSchema } from "../types"; import { renderForm } from "@kie-tools/uniforms-bootstrap4-codegen/dist"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; -import { getUniformsSchema } from "./getUniformsSchema"; -import { inputSanitizationUtil } from "./InputSanitizationUtil"; +import { getUniformsSchema } from "../getUniformsSchema"; +import { inputSanitizationUtil } from "../inputSanitizationUtil"; export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"; export const BOOTSTRAP4_JS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"; diff --git a/packages/form-generation-tool/src/generation/tools/PatternflyFormGenerator.ts b/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts similarity index 94% rename from packages/form-generation-tool/src/generation/tools/PatternflyFormGenerator.ts rename to packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts index d5b54a5d66b..305f38b98d7 100644 --- a/packages/form-generation-tool/src/generation/tools/PatternflyFormGenerator.ts +++ b/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts @@ -21,8 +21,8 @@ import unescape from "lodash/unescape"; import { FormAssetType, FormAsset, FormStyle, FormConfiguration, FormGenerator, FormSchema } from "../types"; import { renderForm } from "@kie-tools/uniforms-patternfly-codegen/dist"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; -import { getUniformsSchema } from "./getUniformsSchema"; -import { inputSanitizationUtil } from "./InputSanitizationUtil"; +import { getUniformsSchema } from "../getUniformsSchema"; +import { inputSanitizationUtil } from "../inputSanitizationUtil"; export class PatternflyFormConfig implements FormConfiguration { public readonly schema: string; diff --git a/packages/form-generation-tool/src/generation/tools/getUniformsSchema.ts b/packages/form-generation-tool/src/getUniformsSchema.ts similarity index 100% rename from packages/form-generation-tool/src/generation/tools/getUniformsSchema.ts rename to packages/form-generation-tool/src/getUniformsSchema.ts diff --git a/packages/form-generation-tool/src/generation/tools/InputSanitizationUtil.ts b/packages/form-generation-tool/src/inputSanitizationUtil.ts similarity index 100% rename from packages/form-generation-tool/src/generation/tools/InputSanitizationUtil.ts rename to packages/form-generation-tool/src/inputSanitizationUtil.ts diff --git a/packages/form-generation-tool/src/generation/types.ts b/packages/form-generation-tool/src/types.ts similarity index 100% rename from packages/form-generation-tool/src/generation/types.ts rename to packages/form-generation-tool/src/types.ts diff --git a/packages/form-generation-tool/tests/generation/tools/uniforms/bootstrap4/mock.ts b/packages/form-generation-tool/tests/__mocks__/bootstrap.ts similarity index 100% rename from packages/form-generation-tool/tests/generation/tools/uniforms/bootstrap4/mock.ts rename to packages/form-generation-tool/tests/__mocks__/bootstrap.ts diff --git a/packages/form-generation-tool/tests/generation/tools/uniforms/patternfly/mock.ts b/packages/form-generation-tool/tests/__mocks__/partternfly.ts similarity index 100% rename from packages/form-generation-tool/tests/generation/tools/uniforms/patternfly/mock.ts rename to packages/form-generation-tool/tests/__mocks__/partternfly.ts diff --git a/packages/form-generation-tool/tests/generation/tools/formGenerationToolsRegistry.test.ts b/packages/form-generation-tool/tests/formGenerationToolsRegistry.test.ts similarity index 70% rename from packages/form-generation-tool/tests/generation/tools/formGenerationToolsRegistry.test.ts rename to packages/form-generation-tool/tests/formGenerationToolsRegistry.test.ts index 0b1ee6f6d2b..fb5ba1fea55 100644 --- a/packages/form-generation-tool/tests/generation/tools/formGenerationToolsRegistry.test.ts +++ b/packages/form-generation-tool/tests/formGenerationToolsRegistry.test.ts @@ -17,12 +17,12 @@ * under the License. */ -import { lookupFormGenerationTool, registerFormGenerationTool } from "../../../src/generation/tools"; -import { FormGenerationTool, FormStyle } from "../../../src/generation/types"; +import { getFormGenerationTool, registerFormGenerator } from "../dist/formGenerationToolRegistry"; +import { FormGenerator, FormStyle } from "../dist/types"; describe("formGenerationToolsRegistry tests", () => { it("Lookup existing tool - patternfly", () => { - const tool = lookupFormGenerationTool(FormStyle.PATTERNFLY); + const tool = getFormGenerationTool(FormStyle.PATTERNFLY); expect(tool).not.toBeUndefined(); @@ -31,22 +31,22 @@ describe("formGenerationToolsRegistry tests", () => { it("Lookup wrong tool", () => { const toolType = "wrong tool type"; - expect(() => lookupFormGenerationTool(toolType)).toThrow(`Unsupported form type "${toolType}"`); + expect(() => getFormGenerationTool(toolType)).toThrow(`Unsupported form type "${toolType}"`); }); it("Register tool & lookup", () => { - const tool: FormGenerationTool = { + const tool: FormGenerator = { type: "cool new tool", generate: jest.fn(), }; - registerFormGenerationTool(tool); + registerFormGenerator(tool); - const coolTool = lookupFormGenerationTool(tool.type); + const coolTool = getFormGenerationTool(tool.type); expect(coolTool).not.toBeUndefined(); expect(coolTool).toStrictEqual(tool); - const patternfly = lookupFormGenerationTool(FormStyle.PATTERNFLY); + const patternfly = getFormGenerationTool(FormStyle.PATTERNFLY); expect(patternfly).not.toBeUndefined(); }); }); diff --git a/packages/form-generation-tool/tests/generation/formGenerationCommand.test.ts b/packages/form-generation-tool/tests/generateForms.test.ts similarity index 85% rename from packages/form-generation-tool/tests/generation/formGenerationCommand.test.ts rename to packages/form-generation-tool/tests/generateForms.test.ts index 3a5b2e19c0c..db5fd3809fe 100644 --- a/packages/form-generation-tool/tests/generation/formGenerationCommand.test.ts +++ b/packages/form-generation-tool/tests/generateForms.test.ts @@ -17,14 +17,11 @@ * under the License. */ -import { generateForms } from "../../src/generation"; -import * as fs from "../../src/generation/fs"; -import { FormAsset, FormGenerationTool, FormSchema } from "../../src/generation/types"; -import { ApplyForVisaSchema, ConfirmTravelSchema } from "./tools/uniforms/patternfly/mock"; -import { registerFormGenerationTool } from "../../src/generation/tools"; -import { inputSanitizationUtil } from "../../src/generation/tools/uniforms/utils/InputSanitizationUtil"; - -jest.mock("../../src/generation/fs"); +import { generateForms } from "../dist/generateForms"; +import { FormAsset, FormGenerator, FormSchema } from "../dist/types"; +import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/partternfly"; +import { registerFormGenerator } from "../dist/formGenerationToolRegistry"; +import { inputSanitizationUtil } from "../dist/inputSanitizationUtil"; describe("formGenerationCommand tests", () => { const loadProjectSchemasMock = jest.spyOn(fs, "loadProjectSchemas"); @@ -38,9 +35,7 @@ describe("formGenerationCommand tests", () => { it("Generate forms with wrong tool type", () => { generateForms({ - path: sourcePath, type: "wrong type", - overwrite: true, }); expect(loadProjectSchemasMock).not.toHaveBeenCalled(); @@ -51,9 +46,7 @@ describe("formGenerationCommand tests", () => { loadProjectSchemasMock.mockReturnValueOnce([]); generateForms({ - path: sourcePath, type: "patternfly", - overwrite: true, }); expect(loadProjectSchemasMock).toHaveBeenCalledTimes(1); @@ -75,9 +68,7 @@ describe("formGenerationCommand tests", () => { loadProjectSchemasMock.mockReturnValueOnce(schemas); generateForms({ - path: sourcePath, type: "patternfly", - overwrite: true, }); expect(loadProjectSchemasMock).toHaveBeenCalledTimes(1); @@ -105,7 +96,7 @@ describe("formGenerationCommand tests", () => { it("Generate forms project with schemas and one failure", () => { const ERROR_MESSAGE = "Unexpected Error!"; - const tool: FormGenerationTool = { + const tool: FormGenerator = { type: "cool tool", generate(schema: FormSchema): FormAsset { @@ -128,7 +119,7 @@ describe("formGenerationCommand tests", () => { }, }; - registerFormGenerationTool(tool); + registerFormGenerator(tool); const schemas: FormSchema[] = [ { @@ -144,9 +135,7 @@ describe("formGenerationCommand tests", () => { loadProjectSchemasMock.mockReturnValueOnce(schemas); generateForms({ - path: sourcePath, type: tool.type, - overwrite: true, }); expect(loadProjectSchemasMock).toHaveBeenCalledTimes(1); diff --git a/packages/form-generation-tool/tests/generation/fs/checks.test.ts b/packages/form-generation-tool/tests/generation/fs/checks.test.ts deleted file mode 100644 index d58988a3046..00000000000 --- a/packages/form-generation-tool/tests/generation/fs/checks.test.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import * as fs from "fs"; -import { checkKogitoProjectHasForms, checkKogitoProjectStructure } from "../../../src/generation/fs"; -import { - ERROR_INVALID_FOLDER, - ERROR_NOT_DIRECTORY, - ERROR_NOT_MVN_PROJECT, -} from "../../../src/generation/fs/loadProjectSchemas"; - -jest.mock("fs"); - -describe("checks tests", function () { - const mockFs = fs as jest.Mocked; - - const fsExistsSyncMock = jest.fn(); - const fsStatSyncMock = jest.fn(); - - mockFs.existsSync.mockImplementation(fsExistsSyncMock); - mockFs.statSync.mockImplementation(fsStatSyncMock); - - const sourcePath = "/a/test/path"; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it("Check Project structure with invalid path", () => { - fsExistsSyncMock.mockReturnValueOnce(false); - - expect(() => checkKogitoProjectStructure(sourcePath)).toThrow(ERROR_INVALID_FOLDER); - }); - - it("Check Project structure not a directory", () => { - fsExistsSyncMock.mockReturnValueOnce(true); - fsStatSyncMock.mockReturnValueOnce({ - isDirectory: () => false, - }); - expect(() => checkKogitoProjectStructure(sourcePath)).toThrow(ERROR_NOT_DIRECTORY); - }); - - it("Check Project structure not a mvn project", () => { - fsExistsSyncMock.mockReturnValueOnce(true).mockReturnValueOnce(false); - - fsStatSyncMock.mockReturnValueOnce({ - isDirectory: () => true, - }); - expect(() => checkKogitoProjectStructure(sourcePath)).toThrow(ERROR_NOT_MVN_PROJECT); - }); - - it("Check Project contains forms", () => { - fsExistsSyncMock.mockReturnValueOnce(true); - - expect(checkKogitoProjectHasForms(sourcePath)).toBeTruthy(); - }); - - it("Check Project does not contain forms", () => { - fsExistsSyncMock.mockReturnValueOnce(false); - - expect(checkKogitoProjectHasForms(sourcePath)).toBeFalsy(); - }); -}); diff --git a/packages/form-generation-tool/tests/generation/fs/loadProjectSchemas.test.ts b/packages/form-generation-tool/tests/generation/fs/loadProjectSchemas.test.ts deleted file mode 100644 index 4d9933b5fab..00000000000 --- a/packages/form-generation-tool/tests/generation/fs/loadProjectSchemas.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { loadProjectSchemas } from "../../../src/generation/fs"; -import { FormSchema } from "../../../src/generation/types"; - -describe("loadProjectSchemas tests", () => { - it("Load project without schemas", () => { - expect(loadProjectSchemas(`${__dirname}/resources/empty`)).toHaveLength(0); - }); - - it("Load project with schemas", () => { - const schemas: FormSchema[] = loadProjectSchemas(`${__dirname}/resources/full`, "schemas"); - - expect(schemas).toHaveLength(2); - - expect(schemas[0].name).toBe("travels_ApplyForVisa"); - expect(schemas[1].name).toBe("travels_ConfirmTravel"); - }); -}); diff --git a/packages/form-generation-tool/tests/generation/fs/resources/empty/pom.xml b/packages/form-generation-tool/tests/generation/fs/resources/empty/pom.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/form-generation-tool/tests/generation/fs/resources/full/pom.xml b/packages/form-generation-tool/tests/generation/fs/resources/full/pom.xml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/empty.json b/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/empty.json deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ApplyForVisa.json b/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ApplyForVisa.json deleted file mode 100644 index e7d7bc0b500..00000000000 --- a/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ApplyForVisa.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "traveller": { - "type": "object", - "properties": { - "address": { - "type": "object", - "properties": { - "city": { "type": "string" }, - "country": { "type": "string" }, - "street": { "type": "string" }, - "zipCode": { "type": "string" } - } - }, - "email": { "type": "string" }, - "firstName": { "type": "string" }, - "lastName": { "type": "string" }, - "nationality": { "type": "string" } - }, - "input": true - }, - "trip": { - "type": "object", - "properties": { - "begin": { "type": "string", "format": "date-time" }, - "city": { "type": "string" }, - "country": { "type": "string" }, - "end": { "type": "string", "format": "date-time" }, - "visaRequired": { "type": "boolean" } - }, - "input": true - }, - "visaApplication": { - "type": "object", - "properties": { - "approved": { "type": "boolean" }, - "city": { "type": "string" }, - "country": { "type": "string" }, - "duration": { "type": "integer" }, - "firstName": { "type": "string" }, - "lastName": { "type": "string" }, - "nationality": { "type": "string" }, - "passportNumber": { "type": "string" } - }, - "output": true - } - } -} diff --git a/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ConfirmTravel.json b/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ConfirmTravel.json deleted file mode 100644 index 093260b40eb..00000000000 --- a/packages/form-generation-tool/tests/generation/fs/resources/full/schemas/travels_ConfirmTravel.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "flight": { - "type": "object", - "properties": { - "arrival": { - "type": "string", - "format": "date-time" - }, - "departure": { - "type": "string", - "format": "date-time" - }, - "flightNumber": { - "type": "string" - }, - "gate": { - "type": "string" - }, - "seat": { - "type": "string" - } - }, - "input": true - }, - "hotel": { - "type": "object", - "properties": { - "address": { - "type": "object", - "properties": { - "city": { - "type": "string" - }, - "country": { - "type": "string" - }, - "street": { - "type": "string" - }, - "zipCode": { - "type": "string" - } - } - }, - "bookingNumber": { - "type": "string" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - }, - "room": { - "type": "string" - } - }, - "input": true - } - } -} diff --git a/packages/form-generation-tool/tests/generation/fs/storeFormAsset.test.ts b/packages/form-generation-tool/tests/generation/fs/storeFormAsset.test.ts deleted file mode 100644 index 66df95e5127..00000000000 --- a/packages/form-generation-tool/tests/generation/fs/storeFormAsset.test.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import * as fs from "fs"; -import { FormAsset, FormAssetType } from "../../../src/generation/types"; -import { storeFormAsset } from "../../../src/generation/fs"; -import { getFormAssetPath, getFormConfigAssetPath } from "../../../src/generation/fs/storeFormAsset"; -import { PatternflyFormConfig } from "../../../src/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool"; - -jest.mock("fs"); - -describe("storeFormAssets tests", () => { - const mockFs = fs as jest.Mocked; - - const fsRmSyncMock = jest.fn(); - const fsMkDirSyncMock = jest.fn(); - const fsWriteFileSyncMock = jest.fn(); - const fsReaddirSyncMock = jest.fn(); - - mockFs.readdirSync.mockImplementation(fsReaddirSyncMock); - mockFs.rmSync.mockImplementation(fsRmSyncMock); - mockFs.mkdirSync.mockImplementation(fsMkDirSyncMock); - mockFs.writeFileSync.mockImplementation(fsWriteFileSyncMock); - - const sourcePath = "/a/test/path"; - const formAsset: FormAsset = { - id: "test", - sanitizedId: "test", - assetName: "test.tsx", - sanitizedAssetName: "test.tsx", - type: FormAssetType.TSX, - content: "content", - config: new PatternflyFormConfig({}), - }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it("Store existing asset without overwrite", () => { - mockFs.existsSync.mockReturnValue(true); - fsReaddirSyncMock.mockReturnValue(["test.tsx", "test.config"]); - - expect(() => storeFormAsset(formAsset, sourcePath, false)).toThrow(`Form already exists.`); - }); - - it("Store existing asset with overwrite", () => { - mockFs.existsSync.mockReturnValue(true); - fsReaddirSyncMock.mockReturnValue(["test.tsx", "test.config"]); - - expect(() => storeFormAsset(formAsset, sourcePath, true)).not.toThrow(); - expect(fsRmSyncMock).toHaveBeenCalledTimes(2); - expect(fsMkDirSyncMock).not.toHaveBeenCalled(); - expect(fsWriteFileSyncMock).toHaveBeenCalledTimes(2); - - expect(fsWriteFileSyncMock.mock.calls[0][0]).toStrictEqual(getFormAssetPath(sourcePath, formAsset.assetName)); - expect(fsWriteFileSyncMock.mock.calls[0][1]).toStrictEqual(formAsset.content); - - expect(fsWriteFileSyncMock.mock.calls[1][0]).toStrictEqual(getFormConfigAssetPath(sourcePath, formAsset)); - expect(fsWriteFileSyncMock.mock.calls[1][1]).toStrictEqual(JSON.stringify(new PatternflyFormConfig({}), null, 4)); - }); - - it("Store asset", () => { - mockFs.existsSync.mockImplementation(() => false); - fsReaddirSyncMock.mockReturnValue([]); - - expect(() => storeFormAsset(formAsset, sourcePath, true)).not.toThrow(); - expect(fsMkDirSyncMock).toHaveBeenCalled(); - expect(fsRmSyncMock).not.toHaveBeenCalled(); - - expect(fsWriteFileSyncMock).toHaveBeenCalledTimes(2); - - expect(fsWriteFileSyncMock.mock.calls[0][0]).toStrictEqual(getFormAssetPath(sourcePath, formAsset.assetName)); - expect(fsWriteFileSyncMock.mock.calls[0][1]).toStrictEqual(formAsset.content); - - expect(fsWriteFileSyncMock.mock.calls[1][0]).toStrictEqual(getFormConfigAssetPath(sourcePath, formAsset)); - expect(fsWriteFileSyncMock.mock.calls[1][1]).toStrictEqual(JSON.stringify(new PatternflyFormConfig({}), null, 4)); - }); -}); diff --git a/packages/form-generation-tool/tests/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool.test.ts b/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts similarity index 79% rename from packages/form-generation-tool/tests/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool.test.ts rename to packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts index 9ce6ab75427..ff05f2e7ab6 100644 --- a/packages/form-generation-tool/tests/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool.test.ts +++ b/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts @@ -17,16 +17,13 @@ * under the License. */ -import { FormAsset } from "../../../../../src/generation/types"; -import { ApplyForVisaSchema } from "./mock"; -import { - Bootstrap4FormConfig, - Bootstrap4FormGenerationTool, -} from "../../../../../src/generation/tools/uniforms/bootstrap4/Bootstrap4FormGenerationTool"; +import { FormAsset } from "../../dist/types"; +import { ApplyForVisaSchema } from "../__mocks__/bootstrap"; +import { Bootstrap4FormConfig, Bootstrap4FormGenerator } from "../../dist/generators/Bootstrap4FormGenerator"; -describe("Bootstrap4FormGenerationTool tests", () => { +describe("Bootstrap4FormGenerator tests", () => { it("Generate", () => { - const tool = new Bootstrap4FormGenerationTool(); + const tool = new Bootstrap4FormGenerator(); const formAsset: FormAsset = tool.generate({ name: "ApplyFor#Visa", diff --git a/packages/form-generation-tool/tests/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool.test.ts b/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts similarity index 81% rename from packages/form-generation-tool/tests/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool.test.ts rename to packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts index e8f59869c25..9b69f2f2fcc 100644 --- a/packages/form-generation-tool/tests/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool.test.ts +++ b/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts @@ -17,16 +17,13 @@ * under the License. */ -import { - PatternflyFormConfig, - PatternflyFormGenerationTool, -} from "../../../../../src/generation/tools/uniforms/patternfly/PatternflyFormGenerationTool"; -import { FormAsset } from "../../../../../src/generation/types"; -import { ApplyForVisaSchema } from "./mock"; +import { PatternflyFormConfig, PatternflyFormGenerator } from "../../dist/generators/PatternflyFormGenerator"; +import { FormAsset } from "../../dist/types"; +import { ApplyForVisaSchema } from "../__mocks__/partternfly"; -describe("PatternflyFormGenerationTool tests", () => { +describe("PatternflyFormGenerator tests", () => { it("Generate", () => { - const tool = new PatternflyFormGenerationTool(); + const tool = new PatternflyFormGenerator(); const formAsset: FormAsset = tool.generate({ name: "ApplyFor#Visa", From 33f6ba5bede9a944e690641d6794c7208e3ee495 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 15:38:53 -0300 Subject: [PATCH 03/23] Rename and fix tests --- .../form-generation-tool/src/generateForms.ts | 18 ++- .../src/generators/Bootstrap4FormGenerator.ts | 10 +- .../src/generators/PatternflyFormGenerator.ts | 8 +- ...ionToolRegistry.ts => getFormGenerator.ts} | 11 +- .../src/getUniformsSchema.ts | 7 +- packages/form-generation-tool/src/types.ts | 6 +- .../tests/generateForms.test.ts | 145 ++++++++---------- .../Bootstrap4FormGenerationTool.test.ts | 4 +- .../PatternflyFormGenerationTool.test.ts | 4 +- ...istry.test.ts => getFormGenerator.test.ts} | 15 +- .../tests/getUniformsSchema.test.ts | 48 ++++++ 11 files changed, 164 insertions(+), 112 deletions(-) rename packages/form-generation-tool/src/{formGenerationToolRegistry.ts => getFormGenerator.ts} (80%) rename packages/form-generation-tool/tests/{formGenerationToolsRegistry.test.ts => getFormGenerator.test.ts} (74%) create mode 100644 packages/form-generation-tool/tests/getUniformsSchema.test.ts diff --git a/packages/form-generation-tool/src/generateForms.ts b/packages/form-generation-tool/src/generateForms.ts index 8b74842cfbe..b0caa76f4cc 100644 --- a/packages/form-generation-tool/src/generateForms.ts +++ b/packages/form-generation-tool/src/generateForms.ts @@ -17,15 +17,23 @@ * under the License. */ -import { getFormGenerationTool } from "./formGenerationToolRegistry"; -import { FormGenerator, FormSchema, FormAsset } from "./types"; +import { getFormGenerator } from "./getFormGenerator"; +import { FormGenerator, FormSchema, FormAsset, FormGenerationError } from "./types"; export interface Args { type: string; forms: FormSchema[]; } -export function generateForms({ type, forms }: Args): FormAsset[] { - const tool: FormGenerator = getFormGenerationTool(type); - return forms.map((form) => tool.generate(form)); +export function generateForms({ type, forms }: Args): (FormAsset | FormGenerationError)[] { + const tool: FormGenerator = getFormGenerator(type); + return forms.reduce((generatedForms: (FormAsset | FormGenerationError)[], form) => { + try { + generatedForms.push(tool.generate(form)); + } catch (error) { + console.error(`Error generating form: ${error}`); + generatedForms.push({ error }); + } + return generatedForms; + }, []); } diff --git a/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts b/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts index 050bb4710f1..cce4542023a 100644 --- a/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts +++ b/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts @@ -26,10 +26,9 @@ import { inputSanitizationUtil } from "../inputSanitizationUtil"; export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"; export const BOOTSTRAP4_JS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"; - export const JQUERY_URL = "https://code.jquery.com/jquery-3.2.1.slim.min.js"; -export class Bootstrap4FormConfig implements FormConfiguration { +export class Bootstrap4FormConfiguration implements FormConfiguration { public readonly schema: string; constructor(formSchema: any) { @@ -48,11 +47,10 @@ export class Bootstrap4FormConfig implements FormConfiguration { } export class Bootstrap4FormGenerator implements FormGenerator { - type: string = FormStyle.BOOTSTRAP; + public type: string = FormStyle.BOOTSTRAP; - generate(inputSchema: FormSchema): FormAsset { + public generate(inputSchema: FormSchema): FormAsset { const uniformsSchema = getUniformsSchema(inputSchema.schema); - const form = renderForm({ id: inputSchema.name, sanitizedId: inputSanitizationUtil(inputSchema.name), @@ -67,7 +65,7 @@ export class Bootstrap4FormGenerator implements FormGenerator { sanitizedAssetName: `${inputSanitizationUtil(inputSchema.name)}.${FormAssetType.HTML}`, type: FormAssetType.HTML, content: unescape(form), - config: new Bootstrap4FormConfig(inputSchema.schema), + config: new Bootstrap4FormConfiguration(inputSchema.schema), }; } } diff --git a/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts b/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts index 305f38b98d7..a3ca100c39c 100644 --- a/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts +++ b/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts @@ -24,7 +24,7 @@ import JSONSchemaBridge from "uniforms-bridge-json-schema"; import { getUniformsSchema } from "../getUniformsSchema"; import { inputSanitizationUtil } from "../inputSanitizationUtil"; -export class PatternflyFormConfig implements FormConfiguration { +export class PatternflyFormConfiguration implements FormConfiguration { public readonly schema: string; constructor(formSchema: any) { @@ -38,9 +38,9 @@ export class PatternflyFormConfig implements FormConfiguration { } export class PatternflyFormGenerator implements FormGenerator { - type: string = FormStyle.PATTERNFLY; + public type: string = FormStyle.PATTERNFLY; - generate(inputSchema: FormSchema): FormAsset { + public generate(inputSchema: FormSchema): FormAsset { const uniformsSchema = getUniformsSchema(inputSchema.schema); const form = renderForm({ id: inputSchema.name, @@ -56,7 +56,7 @@ export class PatternflyFormGenerator implements FormGenerator { sanitizedAssetName: `${inputSanitizationUtil(inputSchema.name)}.${FormAssetType.TSX}`, type: FormAssetType.TSX, content: unescape(form), - config: new PatternflyFormConfig(inputSchema.schema), + config: new PatternflyFormConfiguration(inputSchema.schema), }; } } diff --git a/packages/form-generation-tool/src/formGenerationToolRegistry.ts b/packages/form-generation-tool/src/getFormGenerator.ts similarity index 80% rename from packages/form-generation-tool/src/formGenerationToolRegistry.ts rename to packages/form-generation-tool/src/getFormGenerator.ts index 6813bfc6900..4a0a26a571d 100644 --- a/packages/form-generation-tool/src/formGenerationToolRegistry.ts +++ b/packages/form-generation-tool/src/getFormGenerator.ts @@ -21,16 +21,19 @@ import { PatternflyFormGenerator } from "./generators/PatternflyFormGenerator"; import { FormGenerator } from "./types"; import { Bootstrap4FormGenerator } from "./generators/Bootstrap4FormGenerator"; +/** + * A index of form generator type by its generator class + */ const formGeneratorIndex: Map = new Map(); -export function registerFormGenerator(formGenerator: FormGenerator) { +export function registerFormGeneratorType(formGenerator: FormGenerator) { formGeneratorIndex.set(formGenerator.type, formGenerator); } -registerFormGenerator(new PatternflyFormGenerator()); -registerFormGenerator(new Bootstrap4FormGenerator()); +registerFormGeneratorType(new PatternflyFormGenerator()); +registerFormGeneratorType(new Bootstrap4FormGenerator()); -export function getFormGenerationTool(type: string): FormGenerator { +export function getFormGenerator(type: string): FormGenerator { const formGenerator = formGeneratorIndex.get(type); if (formGenerator) { return formGenerator; diff --git a/packages/form-generation-tool/src/getUniformsSchema.ts b/packages/form-generation-tool/src/getUniformsSchema.ts index bcb7d0f192b..56fef2f22a6 100644 --- a/packages/form-generation-tool/src/getUniformsSchema.ts +++ b/packages/form-generation-tool/src/getUniformsSchema.ts @@ -22,7 +22,12 @@ import get from "lodash/get"; import set from "lodash/set"; import unset from "lodash/unset"; -export function getUniformsSchema(schema: any) { +type Schema = { [x: string]: any }; + +/** + * Removes the `input` and `output` values and determines if the field should be disabled + */ +export function getUniformsSchema(schema: Schema) { const schemaClone = cloneDeep(schema); if (schemaClone.properties) { diff --git a/packages/form-generation-tool/src/types.ts b/packages/form-generation-tool/src/types.ts index c4d294d09a9..b74c4db741f 100644 --- a/packages/form-generation-tool/src/types.ts +++ b/packages/form-generation-tool/src/types.ts @@ -52,7 +52,11 @@ export interface FormAsset { config: FormConfiguration; } +export interface FormGenerationError { + error: Error; +} + export interface FormGenerator { type: string; - generate: (schema: FormSchema) => FormAsset; + generate: (schema: FormSchema) => FormAsset | FormGenerationError; } diff --git a/packages/form-generation-tool/tests/generateForms.test.ts b/packages/form-generation-tool/tests/generateForms.test.ts index db5fd3809fe..9849d262f82 100644 --- a/packages/form-generation-tool/tests/generateForms.test.ts +++ b/packages/form-generation-tool/tests/generateForms.test.ts @@ -20,88 +20,75 @@ import { generateForms } from "../dist/generateForms"; import { FormAsset, FormGenerator, FormSchema } from "../dist/types"; import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/partternfly"; -import { registerFormGenerator } from "../dist/formGenerationToolRegistry"; +import { registerFormGeneratorType } from "../dist/getFormGenerator"; import { inputSanitizationUtil } from "../dist/inputSanitizationUtil"; -describe("formGenerationCommand tests", () => { - const loadProjectSchemasMock = jest.spyOn(fs, "loadProjectSchemas"); - const storeFormAssetsMock = jest.spyOn(fs, "storeFormAsset"); - - const sourcePath = "/a/test/path"; - - beforeEach(() => { - jest.clearAllMocks(); - }); - +describe("generateForms tests", () => { it("Generate forms with wrong tool type", () => { - generateForms({ - type: "wrong type", - }); - - expect(loadProjectSchemasMock).not.toHaveBeenCalled(); - expect(storeFormAssetsMock).not.toHaveBeenCalled(); + expect(() => + generateForms({ + forms: [{ name: "", schema: {} }], + type: "wrong type", + }) + ).toThrow('Unsupported form generation type: "wrong type"'); }); - it("Generate forms for empty project", () => { - loadProjectSchemasMock.mockReturnValueOnce([]); - - generateForms({ + it("Generate forms for empty schema", () => { + const formAssets = generateForms({ + forms: [{ name: "test", schema: {} }], type: "patternfly", }); - expect(loadProjectSchemasMock).toHaveBeenCalledTimes(1); - expect(storeFormAssetsMock).not.toHaveBeenCalled(); + expect(formAssets[0]).toEqual( + expect.objectContaining({ + id: "test", + sanitizedId: "test", + assetName: "test.tsx", + sanitizedAssetName: "test.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: "{}" }, + type: "tsx", + }) + ); }); it("Generate forms project with schemas", () => { - const schemas: FormSchema[] = [ - { - name: "Apply#For#Visa", - schema: ApplyForVisaSchema, - }, - { - name: "ConfirmTravel", - schema: ConfirmTravelSchema, - }, - ]; - - loadProjectSchemasMock.mockReturnValueOnce(schemas); - - generateForms({ + const formAssets = generateForms({ + forms: [ + { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], type: "patternfly", }); - expect(loadProjectSchemasMock).toHaveBeenCalledTimes(1); - expect(storeFormAssetsMock).toHaveBeenCalledTimes(2); - - const applyForVisaAsset: FormAsset = storeFormAssetsMock.mock.calls[0][0]; - expect(applyForVisaAsset.id).toEqual("Apply#For#Visa"); - expect(applyForVisaAsset.sanitizedId).toEqual("Apply_For_Visa"); - expect(applyForVisaAsset.assetName).toEqual("Apply#For#Visa.tsx"); - expect(applyForVisaAsset.sanitizedAssetName).toEqual("Apply_For_Visa.tsx"); - expect(applyForVisaAsset.content).toContain("const Form__Apply_For_Visa"); - expect(storeFormAssetsMock.mock.calls[0][1]).toEqual(sourcePath); - expect(storeFormAssetsMock.mock.calls[0][2]).toBeTruthy(); - - const confirmTravelAsset: FormAsset = storeFormAssetsMock.mock.calls[1][0]; - expect(confirmTravelAsset.id).toEqual("ConfirmTravel"); - expect(confirmTravelAsset.sanitizedId).toEqual("ConfirmTravel"); - expect(confirmTravelAsset.assetName).toEqual("ConfirmTravel.tsx"); - expect(confirmTravelAsset.sanitizedAssetName).toEqual("ConfirmTravel.tsx"); - expect(confirmTravelAsset.content).toContain("const Form__ConfirmTravel"); - expect(storeFormAssetsMock.mock.calls[1][1]).toEqual(sourcePath); - expect(storeFormAssetsMock.mock.calls[1][2]).toBeTruthy(); + expect(formAssets[0]).toEqual( + expect.objectContaining({ + id: "Apply#For#Visa", + sanitizedId: "Apply_For_Visa", + assetName: "Apply#For#Visa.tsx", + sanitizedAssetName: "Apply_For_Visa.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, + type: "tsx", + }) + ); + expect(formAssets[1]).toEqual( + expect.objectContaining({ + id: "ConfirmTravel", + sanitizedId: "ConfirmTravel", + assetName: "ConfirmTravel.tsx", + sanitizedAssetName: "ConfirmTravel.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, + type: "tsx", + }) + ); }); it("Generate forms project with schemas and one failure", () => { - const ERROR_MESSAGE = "Unexpected Error!"; - - const tool: FormGenerator = { + const testTool: FormGenerator = { type: "cool tool", generate(schema: FormSchema): FormAsset { if (schema.name === "ApplyForVisa") { - throw new Error(ERROR_MESSAGE); + throw new Error("Unexpected Error!"); } return { @@ -119,26 +106,26 @@ describe("formGenerationCommand tests", () => { }, }; - registerFormGenerator(tool); - - const schemas: FormSchema[] = [ - { - name: "ApplyForVisa", - schema: ApplyForVisaSchema, - }, - { - name: "ConfirmTravel", - schema: ConfirmTravelSchema, - }, - ]; - - loadProjectSchemasMock.mockReturnValueOnce(schemas); + registerFormGeneratorType(testTool); - generateForms({ - type: tool.type, + const formAssets = generateForms({ + forms: [ + { name: "ApplyForVisa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + type: testTool.type, }); - expect(loadProjectSchemasMock).toHaveBeenCalledTimes(1); - expect(storeFormAssetsMock).toHaveBeenCalledTimes(1); + expect(formAssets[0]).toEqual({ error: new Error("Unexpected Error!") }); + expect(formAssets[1]).toEqual( + expect.objectContaining({ + id: "ConfirmTravel", + sanitizedId: "ConfirmTravel", + assetName: "ConfirmTravel.txt", + sanitizedAssetName: "ConfirmTravel.txt", + config: { resources: { scripts: {}, styles: {} }, schema: "" }, + type: "txt", + }) + ); }); }); diff --git a/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts b/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts index ff05f2e7ab6..cb70fb03ed1 100644 --- a/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts +++ b/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts @@ -19,7 +19,7 @@ import { FormAsset } from "../../dist/types"; import { ApplyForVisaSchema } from "../__mocks__/bootstrap"; -import { Bootstrap4FormConfig, Bootstrap4FormGenerator } from "../../dist/generators/Bootstrap4FormGenerator"; +import { Bootstrap4FormConfiguration, Bootstrap4FormGenerator } from "../../dist/generators/Bootstrap4FormGenerator"; describe("Bootstrap4FormGenerator tests", () => { it("Generate", () => { @@ -37,6 +37,6 @@ describe("Bootstrap4FormGenerator tests", () => { expect(formAsset.sanitizedAssetName).toStrictEqual("ApplyFor_Visa.html"); expect(formAsset.content).not.toBeUndefined(); expect(formAsset.config).not.toBeUndefined(); - expect(formAsset.config).toMatchObject(new Bootstrap4FormConfig(ApplyForVisaSchema)); + expect(formAsset.config).toMatchObject(new Bootstrap4FormConfiguration(ApplyForVisaSchema)); }); }); diff --git a/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts b/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts index 9b69f2f2fcc..67609cc0674 100644 --- a/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts +++ b/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { PatternflyFormConfig, PatternflyFormGenerator } from "../../dist/generators/PatternflyFormGenerator"; +import { PatternflyFormConfiguration, PatternflyFormGenerator } from "../../dist/generators/PatternflyFormGenerator"; import { FormAsset } from "../../dist/types"; import { ApplyForVisaSchema } from "../__mocks__/partternfly"; @@ -39,6 +39,6 @@ describe("PatternflyFormGenerator tests", () => { expect(formAsset.content).toContain("const Form__ApplyFor_Visa"); expect(formAsset.content).toContain("export default Form__ApplyFor_Visa;"); expect(formAsset.config).not.toBeUndefined(); - expect(formAsset.config).toMatchObject(new PatternflyFormConfig(ApplyForVisaSchema)); + expect(formAsset.config).toMatchObject(new PatternflyFormConfiguration(ApplyForVisaSchema)); }); }); diff --git a/packages/form-generation-tool/tests/formGenerationToolsRegistry.test.ts b/packages/form-generation-tool/tests/getFormGenerator.test.ts similarity index 74% rename from packages/form-generation-tool/tests/formGenerationToolsRegistry.test.ts rename to packages/form-generation-tool/tests/getFormGenerator.test.ts index fb5ba1fea55..bc5a722f85a 100644 --- a/packages/form-generation-tool/tests/formGenerationToolsRegistry.test.ts +++ b/packages/form-generation-tool/tests/getFormGenerator.test.ts @@ -17,21 +17,20 @@ * under the License. */ -import { getFormGenerationTool, registerFormGenerator } from "../dist/formGenerationToolRegistry"; +import { getFormGenerator, registerFormGeneratorType } from "../dist/getFormGenerator"; import { FormGenerator, FormStyle } from "../dist/types"; -describe("formGenerationToolsRegistry tests", () => { +describe("getFormGenerator tests", () => { it("Lookup existing tool - patternfly", () => { - const tool = getFormGenerationTool(FormStyle.PATTERNFLY); + const tool = getFormGenerator(FormStyle.PATTERNFLY); expect(tool).not.toBeUndefined(); - expect(tool.type).toStrictEqual(FormStyle.PATTERNFLY); }); it("Lookup wrong tool", () => { const toolType = "wrong tool type"; - expect(() => getFormGenerationTool(toolType)).toThrow(`Unsupported form type "${toolType}"`); + expect(() => getFormGenerator(toolType)).toThrow(`Unsupported form generation type: "${toolType}"`); }); it("Register tool & lookup", () => { @@ -40,13 +39,13 @@ describe("formGenerationToolsRegistry tests", () => { generate: jest.fn(), }; - registerFormGenerator(tool); + registerFormGeneratorType(tool); - const coolTool = getFormGenerationTool(tool.type); + const coolTool = getFormGenerator(tool.type); expect(coolTool).not.toBeUndefined(); expect(coolTool).toStrictEqual(tool); - const patternfly = getFormGenerationTool(FormStyle.PATTERNFLY); + const patternfly = getFormGenerator(FormStyle.PATTERNFLY); expect(patternfly).not.toBeUndefined(); }); }); diff --git a/packages/form-generation-tool/tests/getUniformsSchema.test.ts b/packages/form-generation-tool/tests/getUniformsSchema.test.ts new file mode 100644 index 00000000000..dc7b1e3c270 --- /dev/null +++ b/packages/form-generation-tool/tests/getUniformsSchema.test.ts @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { getUniformsSchema } from "../dist/getUniformsSchema"; + +describe("getUniformsSchema tests", () => { + it("get empty uniforms schema", () => { + expect(getUniformsSchema({})).toEqual({}); + }); + + it("get uniforms schema with empty properties", () => { + expect(getUniformsSchema({ properties: {} })).toEqual({ properties: {} }); + }); + + it("get uniforms schema with properties that are empty", () => { + expect(getUniformsSchema({ properties: { a: {} } })).toEqual({ properties: { a: {} } }); + }); + + it("get uniforms schema with input property", () => { + expect(getUniformsSchema({ properties: { a: { input: true } } })).toEqual({ + properties: { a: { uniforms: { disabled: true } } }, + }); + }); + + it("get uniforms schema with output property", () => { + expect(getUniformsSchema({ properties: { a: { output: true } } })).toEqual({ properties: { a: {} } }); + }); + + it("get uniforms schema with input and output property", () => { + expect(getUniformsSchema({ properties: { a: { input: true, output: true } } })).toEqual({ properties: { a: {} } }); + }); +}); From 89c0d08f25a654b3c40d0688adb987eff192610d Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 17:56:32 -0300 Subject: [PATCH 04/23] Rename to jbpm-form-generator --- .../README.md | 0 .../bin.js | 0 .../docs/form-generation-1.png | Bin .../docs/form-generation-2.png | Bin .../docs/form-generation-3.png | Bin .../docs/form-generation-4.png | Bin .../docs/form-generation-5.png | Bin .../env/index.js | 0 .../jest.config.js | 0 .../package.json | 5 +- .../src/generateForms.ts | 0 .../src/generators/Bootstrap4FormGenerator.ts | 0 .../src/generators/PatternflyFormGenerator.ts | 0 .../src/getFormGenerator.ts | 0 .../src/getUniformsSchema.ts | 0 .../src/inputSanitizationUtil.ts | 0 .../src/types.ts | 0 .../tests/__mocks__/bootstrap.ts | 0 .../tests/__mocks__/partternfly.ts | 0 .../tests/generateForms.test.ts | 0 .../Bootstrap4FormGenerationTool.test.ts | 0 .../PatternflyFormGenerationTool.test.ts | 0 .../tests/getFormGenerator.test.ts | 0 .../tests/getUniformsSchema.test.ts | 0 .../tests/jest.setup.ts | 0 .../tsconfig.json | 0 .../tsconfig.tests.json | 0 pnpm-lock.yaml | 169 ++++++++++++------ repo/graph.dot | 10 +- repo/graph.json | 60 +++---- 30 files changed, 154 insertions(+), 90 deletions(-) rename packages/{form-generation-tool => jbpm-form-generator}/README.md (100%) rename packages/{form-generation-tool => jbpm-form-generator}/bin.js (100%) rename packages/{form-generation-tool => jbpm-form-generator}/docs/form-generation-1.png (100%) rename packages/{form-generation-tool => jbpm-form-generator}/docs/form-generation-2.png (100%) rename packages/{form-generation-tool => jbpm-form-generator}/docs/form-generation-3.png (100%) rename packages/{form-generation-tool => jbpm-form-generator}/docs/form-generation-4.png (100%) rename packages/{form-generation-tool => jbpm-form-generator}/docs/form-generation-5.png (100%) rename packages/{form-generation-tool => jbpm-form-generator}/env/index.js (100%) rename packages/{form-generation-tool => jbpm-form-generator}/jest.config.js (100%) rename packages/{form-generation-tool => jbpm-form-generator}/package.json (94%) rename packages/{form-generation-tool => jbpm-form-generator}/src/generateForms.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/src/generators/Bootstrap4FormGenerator.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/src/generators/PatternflyFormGenerator.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/src/getFormGenerator.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/src/getUniformsSchema.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/src/inputSanitizationUtil.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/src/types.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/__mocks__/bootstrap.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/__mocks__/partternfly.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/generateForms.test.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/generators/Bootstrap4FormGenerationTool.test.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/generators/PatternflyFormGenerationTool.test.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/getFormGenerator.test.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/getUniformsSchema.test.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tests/jest.setup.ts (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tsconfig.json (100%) rename packages/{form-generation-tool => jbpm-form-generator}/tsconfig.tests.json (100%) diff --git a/packages/form-generation-tool/README.md b/packages/jbpm-form-generator/README.md similarity index 100% rename from packages/form-generation-tool/README.md rename to packages/jbpm-form-generator/README.md diff --git a/packages/form-generation-tool/bin.js b/packages/jbpm-form-generator/bin.js similarity index 100% rename from packages/form-generation-tool/bin.js rename to packages/jbpm-form-generator/bin.js diff --git a/packages/form-generation-tool/docs/form-generation-1.png b/packages/jbpm-form-generator/docs/form-generation-1.png similarity index 100% rename from packages/form-generation-tool/docs/form-generation-1.png rename to packages/jbpm-form-generator/docs/form-generation-1.png diff --git a/packages/form-generation-tool/docs/form-generation-2.png b/packages/jbpm-form-generator/docs/form-generation-2.png similarity index 100% rename from packages/form-generation-tool/docs/form-generation-2.png rename to packages/jbpm-form-generator/docs/form-generation-2.png diff --git a/packages/form-generation-tool/docs/form-generation-3.png b/packages/jbpm-form-generator/docs/form-generation-3.png similarity index 100% rename from packages/form-generation-tool/docs/form-generation-3.png rename to packages/jbpm-form-generator/docs/form-generation-3.png diff --git a/packages/form-generation-tool/docs/form-generation-4.png b/packages/jbpm-form-generator/docs/form-generation-4.png similarity index 100% rename from packages/form-generation-tool/docs/form-generation-4.png rename to packages/jbpm-form-generator/docs/form-generation-4.png diff --git a/packages/form-generation-tool/docs/form-generation-5.png b/packages/jbpm-form-generator/docs/form-generation-5.png similarity index 100% rename from packages/form-generation-tool/docs/form-generation-5.png rename to packages/jbpm-form-generator/docs/form-generation-5.png diff --git a/packages/form-generation-tool/env/index.js b/packages/jbpm-form-generator/env/index.js similarity index 100% rename from packages/form-generation-tool/env/index.js rename to packages/jbpm-form-generator/env/index.js diff --git a/packages/form-generation-tool/jest.config.js b/packages/jbpm-form-generator/jest.config.js similarity index 100% rename from packages/form-generation-tool/jest.config.js rename to packages/jbpm-form-generator/jest.config.js diff --git a/packages/form-generation-tool/package.json b/packages/jbpm-form-generator/package.json similarity index 94% rename from packages/form-generation-tool/package.json rename to packages/jbpm-form-generator/package.json index 640334ed26e..a909c30e6bf 100644 --- a/packages/form-generation-tool/package.json +++ b/packages/jbpm-form-generator/package.json @@ -1,5 +1,5 @@ { - "name": "@kie-tools/form-generation-tool", + "name": "@kie-tools/jbpm-form-generator", "version": "0.0.0", "description": "", "license": "Apache-2.0", @@ -12,9 +12,6 @@ "bugs": { "url": "https://github.com/apache/incubator-kie-tools/issues" }, - "bin": { - "form-generation-tool": "bin.js" - }, "types": "./dist/index.d.ts", "main": "dist/index.js", "files": [ diff --git a/packages/form-generation-tool/src/generateForms.ts b/packages/jbpm-form-generator/src/generateForms.ts similarity index 100% rename from packages/form-generation-tool/src/generateForms.ts rename to packages/jbpm-form-generator/src/generateForms.ts diff --git a/packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts b/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts similarity index 100% rename from packages/form-generation-tool/src/generators/Bootstrap4FormGenerator.ts rename to packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts diff --git a/packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts b/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts similarity index 100% rename from packages/form-generation-tool/src/generators/PatternflyFormGenerator.ts rename to packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts diff --git a/packages/form-generation-tool/src/getFormGenerator.ts b/packages/jbpm-form-generator/src/getFormGenerator.ts similarity index 100% rename from packages/form-generation-tool/src/getFormGenerator.ts rename to packages/jbpm-form-generator/src/getFormGenerator.ts diff --git a/packages/form-generation-tool/src/getUniformsSchema.ts b/packages/jbpm-form-generator/src/getUniformsSchema.ts similarity index 100% rename from packages/form-generation-tool/src/getUniformsSchema.ts rename to packages/jbpm-form-generator/src/getUniformsSchema.ts diff --git a/packages/form-generation-tool/src/inputSanitizationUtil.ts b/packages/jbpm-form-generator/src/inputSanitizationUtil.ts similarity index 100% rename from packages/form-generation-tool/src/inputSanitizationUtil.ts rename to packages/jbpm-form-generator/src/inputSanitizationUtil.ts diff --git a/packages/form-generation-tool/src/types.ts b/packages/jbpm-form-generator/src/types.ts similarity index 100% rename from packages/form-generation-tool/src/types.ts rename to packages/jbpm-form-generator/src/types.ts diff --git a/packages/form-generation-tool/tests/__mocks__/bootstrap.ts b/packages/jbpm-form-generator/tests/__mocks__/bootstrap.ts similarity index 100% rename from packages/form-generation-tool/tests/__mocks__/bootstrap.ts rename to packages/jbpm-form-generator/tests/__mocks__/bootstrap.ts diff --git a/packages/form-generation-tool/tests/__mocks__/partternfly.ts b/packages/jbpm-form-generator/tests/__mocks__/partternfly.ts similarity index 100% rename from packages/form-generation-tool/tests/__mocks__/partternfly.ts rename to packages/jbpm-form-generator/tests/__mocks__/partternfly.ts diff --git a/packages/form-generation-tool/tests/generateForms.test.ts b/packages/jbpm-form-generator/tests/generateForms.test.ts similarity index 100% rename from packages/form-generation-tool/tests/generateForms.test.ts rename to packages/jbpm-form-generator/tests/generateForms.test.ts diff --git a/packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts b/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts similarity index 100% rename from packages/form-generation-tool/tests/generators/Bootstrap4FormGenerationTool.test.ts rename to packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts diff --git a/packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts b/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts similarity index 100% rename from packages/form-generation-tool/tests/generators/PatternflyFormGenerationTool.test.ts rename to packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts diff --git a/packages/form-generation-tool/tests/getFormGenerator.test.ts b/packages/jbpm-form-generator/tests/getFormGenerator.test.ts similarity index 100% rename from packages/form-generation-tool/tests/getFormGenerator.test.ts rename to packages/jbpm-form-generator/tests/getFormGenerator.test.ts diff --git a/packages/form-generation-tool/tests/getUniformsSchema.test.ts b/packages/jbpm-form-generator/tests/getUniformsSchema.test.ts similarity index 100% rename from packages/form-generation-tool/tests/getUniformsSchema.test.ts rename to packages/jbpm-form-generator/tests/getUniformsSchema.test.ts diff --git a/packages/form-generation-tool/tests/jest.setup.ts b/packages/jbpm-form-generator/tests/jest.setup.ts similarity index 100% rename from packages/form-generation-tool/tests/jest.setup.ts rename to packages/jbpm-form-generator/tests/jest.setup.ts diff --git a/packages/form-generation-tool/tsconfig.json b/packages/jbpm-form-generator/tsconfig.json similarity index 100% rename from packages/form-generation-tool/tsconfig.json rename to packages/jbpm-form-generator/tsconfig.json diff --git a/packages/form-generation-tool/tsconfig.tests.json b/packages/jbpm-form-generator/tsconfig.tests.json similarity index 100% rename from packages/form-generation-tool/tsconfig.tests.json rename to packages/jbpm-form-generator/tsconfig.tests.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 067d7446daa..92db2b8d55b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5188,6 +5188,73 @@ importers: specifier: ^5.9.0 version: 5.9.0 + packages/jbpm-form-generator: + dependencies: + '@kie-tools/uniforms-bootstrap4-codegen': + specifier: workspace:* + version: link:../uniforms-bootstrap4-codegen + '@kie-tools/uniforms-patternfly-codegen': + specifier: workspace:* + version: link:../uniforms-patternfly-codegen + lodash: + specifier: ^4.17.21 + version: 4.17.21 + uniforms: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + uniforms-bridge-json-schema: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + devDependencies: + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/jest-base': + specifier: workspace:* + version: link:../jest-base + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/jest-when': + specifier: ^3.5.5 + version: 3.5.5 + '@types/lodash': + specifier: ^4.14.168 + version: 4.14.202 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + jest-when: + specifier: ^3.6.0 + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + packages/jbpm-quarkus-devui: dependencies: '@kie-tools/maven-base': @@ -30729,7 +30796,7 @@ snapshots: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) @@ -39563,15 +39630,15 @@ snapshots: '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-arrow@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39581,7 +39648,7 @@ snapshots: '@radix-ui/react-collection@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-context': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39594,28 +39661,28 @@ snapshots: '@radix-ui/react-compose-refs@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-context@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-direction@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39629,14 +39696,14 @@ snapshots: '@radix-ui/react-focus-guards@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39648,7 +39715,7 @@ snapshots: '@radix-ui/react-id@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39656,7 +39723,7 @@ snapshots: '@radix-ui/react-popper@1.1.2(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@floating-ui/react-dom': 2.0.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39675,7 +39742,7 @@ snapshots: '@radix-ui/react-portal@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39685,7 +39752,7 @@ snapshots: '@radix-ui/react-primitive@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-slot': 1.0.2(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39695,7 +39762,7 @@ snapshots: '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39713,7 +39780,7 @@ snapshots: '@radix-ui/react-select@1.2.2(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39743,7 +39810,7 @@ snapshots: '@radix-ui/react-separator@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39753,7 +39820,7 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39761,7 +39828,7 @@ snapshots: '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-direction': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39777,7 +39844,7 @@ snapshots: '@radix-ui/react-toggle@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39789,7 +39856,7 @@ snapshots: '@radix-ui/react-toolbar@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-direction': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39805,14 +39872,14 @@ snapshots: '@radix-ui/react-use-callback-ref@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-use-controllable-state@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39820,7 +39887,7 @@ snapshots: '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39828,21 +39895,21 @@ snapshots: '@radix-ui/react-use-layout-effect@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-use-previous@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-use-rect@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/rect': 1.0.1 react: 17.0.2 optionalDependencies: @@ -39850,7 +39917,7 @@ snapshots: '@radix-ui/react-use-size@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39858,7 +39925,7 @@ snapshots: '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39868,7 +39935,7 @@ snapshots: '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@reactflow/background@11.3.6(@types/react@17.0.21)(immer@10.0.3(patch_hash=utu5oov26wz5mjuays57tp3ybu))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: @@ -39951,7 +40018,7 @@ snapshots: '@readme/better-ajv-errors@1.6.0(ajv@8.17.1)': dependencies: '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@humanwhocodes/momoa': 2.0.4 ajv: 8.17.1 chalk: 4.1.2 @@ -42222,7 +42289,7 @@ snapshots: '@testing-library/dom@8.20.1': dependencies: '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -42233,7 +42300,7 @@ snapshots: '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))': dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 aria-query: 5.1.3 chalk: 3.0.0 css.escape: 1.5.1 @@ -42248,7 +42315,7 @@ snapshots: '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))': dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 aria-query: 5.1.3 chalk: 3.0.0 css.escape: 1.5.1 @@ -44528,7 +44595,7 @@ snapshots: babel-plugin-macros@2.8.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 cosmiconfig: 6.0.0 resolve: 1.22.8 @@ -46818,7 +46885,7 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 date-format@4.0.3: {} @@ -46969,7 +47036,7 @@ snapshots: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 - side-channel: 1.0.4 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.15 @@ -47164,7 +47231,7 @@ snapshots: dom-helpers@5.2.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 csstype: 3.0.11 dom-serialize@2.2.1: @@ -49203,7 +49270,7 @@ snapshots: history@5.3.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 hmac-drbg@1.0.1: dependencies: @@ -49657,7 +49724,7 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.4 + side-channel: 1.0.6 internmap@1.0.1: {} @@ -53242,7 +53309,7 @@ snapshots: polished@4.2.2: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 popper.js@1.16.1: {} @@ -53728,11 +53795,11 @@ snapshots: qs@6.10.4: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 qs@6.11.0: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 qs@6.11.2: dependencies: @@ -53950,7 +54017,7 @@ snapshots: dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -54020,7 +54087,7 @@ snapshots: react-error-boundary@3.1.3(react@17.0.2): dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 react-error-boundary@4.0.12(react@17.0.2): @@ -54249,7 +54316,7 @@ snapshots: react-textarea-autosize@8.3.3(@types/react@17.0.21)(react@17.0.2): dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 use-composed-ref: 1.2.1(react@17.0.2) use-latest: 1.2.0(@types/react@17.0.21)(react@17.0.2) @@ -54480,11 +54547,11 @@ snapshots: regenerator-transform@0.15.1: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 regex-not@1.0.2: dependencies: @@ -54528,7 +54595,7 @@ snapshots: relay-runtime@12.0.0(encoding@0.1.13): dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 fbjs: 3.0.2(encoding@0.1.13) invariant: 2.2.4 transitivePeerDependencies: @@ -55640,7 +55707,7 @@ snapshots: has-symbols: 1.0.3 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 - side-channel: 1.0.4 + side-channel: 1.0.6 string.prototype.trim@1.2.9: dependencies: diff --git a/repo/graph.dot b/repo/graph.dot index bfb388a4272..a7b6c4e054d 100644 --- a/repo/graph.dot +++ b/repo/graph.dot @@ -119,12 +119,12 @@ digraph G { "extended-services-vscode-extension" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/monaco-editor" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools/form" [ color = "blue", fontcolor = "blue", style = "rounded" ]; - "@kie-tools/form-generation-tool" [ color = "blue", fontcolor = "blue", style = "rounded" ]; - "@kie-tools/uniforms-bootstrap4-codegen" [ color = "blue", fontcolor = "blue", style = "rounded" ]; - "@kie-tools/uniforms-patternfly-codegen" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/i18n" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools/import-java-classes-component" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/vscode-java-code-completion" [ color = "purple", fontcolor = "purple", style = "rounded" ]; + "@kie-tools/jbpm-form-generator" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/uniforms-bootstrap4-codegen" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/uniforms-patternfly-codegen" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/runtime-tools-process-dev-ui-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/jobs-service-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/yaml-language-server" [ color = "blue", fontcolor = "blue", style = "rounded" ]; @@ -380,8 +380,6 @@ digraph G { "@kie-tools/form" -> "@kie-tools/i18n-common-dictionary" [ style = "solid", color = "blue" ]; "@kie-tools/form" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; "@kie-tools/form-dmn" -> "@kie-tools/form" [ style = "solid", color = "blue" ]; - "@kie-tools/form-generation-tool" -> "@kie-tools/uniforms-bootstrap4-codegen" [ style = "solid", color = "blue" ]; - "@kie-tools/form-generation-tool" -> "@kie-tools/uniforms-patternfly-codegen" [ style = "solid", color = "blue" ]; "@kie-tools-core/i18n" -> "@kie-tools/eslint" [ style = "dashed", color = "purple" ]; "@kie-tools-core/i18n" -> "@kie-tools/jest-base" [ style = "dashed", color = "purple" ]; "@kie-tools-core/i18n" -> "@kie-tools/tsconfig" [ style = "dashed", color = "purple" ]; @@ -395,6 +393,8 @@ digraph G { "@kie-tools/import-java-classes-component" -> "@kie-tools-core/monaco-editor" [ style = "dashed", color = "blue" ]; "@kie-tools/import-java-classes-component" -> "@kie-tools-core/patternfly-base" [ style = "dashed", color = "blue" ]; "@kie-tools/import-java-classes-component" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/jbpm-form-generator" -> "@kie-tools/uniforms-bootstrap4-codegen" [ style = "solid", color = "blue" ]; + "@kie-tools/jbpm-form-generator" -> "@kie-tools/uniforms-patternfly-codegen" [ style = "solid", color = "blue" ]; "@kie-tools/jbpm-quarkus-devui" -> "@kie-tools/maven-base" [ style = "solid", color = "black" ]; "@kie-tools/jbpm-quarkus-devui" -> "@kie-tools/runtime-tools-process-dev-ui-webapp" [ style = "dashed", color = "black" ]; "@kie-tools/jest-base" -> "@kie-tools/root-env" [ style = "dashed", color = "blue" ]; diff --git a/repo/graph.json b/repo/graph.json index 3e5b4cfb333..b55aba9fc5c 100644 --- a/repo/graph.json +++ b/repo/graph.json @@ -132,10 +132,10 @@ { "id": "@kie-tools/extended-services" }, { "id": "@kie-tools/extended-services-java" }, { "id": "extended-services-vscode-extension" }, - { "id": "@kie-tools/form-generation-tool" }, + { "id": "@kie-tools/import-java-classes-component" }, + { "id": "@kie-tools/jbpm-form-generator" }, { "id": "@kie-tools/uniforms-bootstrap4-codegen" }, { "id": "@kie-tools/uniforms-patternfly-codegen" }, - { "id": "@kie-tools/import-java-classes-component" }, { "id": "@kie-tools/runtime-tools-process-webapp-components" }, { "id": "@kie-tools/runtime-tools-shared-webapp-components" }, { "id": "@kie-tools/jobs-service-webapp" }, @@ -1619,12 +1619,37 @@ "weight": 1 }, { - "source": "@kie-tools/form-generation-tool", + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/vscode-java-code-completion", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools/i18n-common-dictionary", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/monaco-editor", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/patternfly-base", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/webpack-base", + "weight": 1 + }, + { + "source": "@kie-tools/jbpm-form-generator", "target": "@kie-tools/uniforms-bootstrap4-codegen", "weight": 1 }, { - "source": "@kie-tools/form-generation-tool", + "source": "@kie-tools/jbpm-form-generator", "target": "@kie-tools/uniforms-patternfly-codegen", "weight": 1 }, @@ -1668,31 +1693,6 @@ "target": "@kie-tools/tsconfig", "weight": 1 }, - { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/vscode-java-code-completion", - "weight": 1 - }, - { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools/i18n-common-dictionary", - "weight": 1 - }, - { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/monaco-editor", - "weight": 1 - }, - { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/patternfly-base", - "weight": 1 - }, - { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/webpack-base", - "weight": 1 - }, { "source": "@kie-tools/runtime-tools-process-webapp-components", "target": "@kie-tools/runtime-tools-process-enveloped-components", @@ -2567,12 +2567,12 @@ ["@kie-tools/feel-input-component", "packages/feel-input-component"], ["@kie-tools/form", "packages/form"], ["@kie-tools/form-dmn", "packages/form-dmn"], - ["@kie-tools/form-generation-tool", "packages/form-generation-tool"], ["@kie-tools-core/i18n", "packages/i18n"], ["@kie-tools/i18n-common-dictionary", "packages/i18n-common-dictionary"], ["@kie-tools/image-builder", "packages/image-builder"], ["@kie-tools/image-env-to-json", "packages/image-env-to-json"], ["@kie-tools/import-java-classes-component", "packages/import-java-classes-component"], + ["@kie-tools/jbpm-form-generator", "packages/jbpm-form-generator"], ["@kie-tools/jbpm-quarkus-devui", "packages/jbpm-quarkus-devui"], ["@kie-tools/jest-base", "packages/jest-base"], ["@kie-tools/jobs-service-webapp", "packages/jobs-service-webapp"], From 99d17ebde0722ddad6328413dbd138c5e86c97a8 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:02:28 -0300 Subject: [PATCH 05/23] Improve comment --- packages/jbpm-form-generator/src/getUniformsSchema.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jbpm-form-generator/src/getUniformsSchema.ts b/packages/jbpm-form-generator/src/getUniformsSchema.ts index 56fef2f22a6..7f42bd32bcb 100644 --- a/packages/jbpm-form-generator/src/getUniformsSchema.ts +++ b/packages/jbpm-form-generator/src/getUniformsSchema.ts @@ -25,7 +25,7 @@ import unset from "lodash/unset"; type Schema = { [x: string]: any }; /** - * Removes the `input` and `output` values and determines if the field should be disabled + * Removes the `input` and `output` properties and determines if the form field should be disabled */ export function getUniformsSchema(schema: Schema) { const schemaClone = cloneDeep(schema); From b78812a675b1c5de6e19460f73f4f4bbb3e641ed Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:02:40 -0300 Subject: [PATCH 06/23] Remove bin.js file --- packages/jbpm-form-generator/bin.js | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100755 packages/jbpm-form-generator/bin.js diff --git a/packages/jbpm-form-generator/bin.js b/packages/jbpm-form-generator/bin.js deleted file mode 100755 index 1428f160016..00000000000 --- a/packages/jbpm-form-generator/bin.js +++ /dev/null @@ -1,24 +0,0 @@ -#! /usr/bin/env node -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * This file is used as entry point of the form-generation-tool cli command - */ -require("./dist/index"); From a2b627e08b5f8e42dc36a4397368dd0f5ff8a25d Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:19:32 -0300 Subject: [PATCH 07/23] Rename to formSchema --- .../jbpm-form-generator/src/generateForms.ts | 8 ++++---- .../src/generators/Bootstrap4FormGenerator.ts | 18 +++++++++--------- .../src/generators/PatternflyFormGenerator.ts | 18 +++++++++--------- packages/jbpm-form-generator/src/types.ts | 2 +- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/jbpm-form-generator/src/generateForms.ts b/packages/jbpm-form-generator/src/generateForms.ts index b0caa76f4cc..b6e3339e2e1 100644 --- a/packages/jbpm-form-generator/src/generateForms.ts +++ b/packages/jbpm-form-generator/src/generateForms.ts @@ -22,14 +22,14 @@ import { FormGenerator, FormSchema, FormAsset, FormGenerationError } from "./typ export interface Args { type: string; - forms: FormSchema[]; + formSchemas: FormSchema[]; } -export function generateForms({ type, forms }: Args): (FormAsset | FormGenerationError)[] { +export function generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] { const tool: FormGenerator = getFormGenerator(type); - return forms.reduce((generatedForms: (FormAsset | FormGenerationError)[], form) => { + return formSchemas.reduce((generatedForms: (FormAsset | FormGenerationError)[], formSchema) => { try { - generatedForms.push(tool.generate(form)); + generatedForms.push(tool.generate(formSchema)); } catch (error) { console.error(`Error generating form: ${error}`); generatedForms.push({ error }); diff --git a/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts b/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts index cce4542023a..7704c1bf4b3 100644 --- a/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts +++ b/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts @@ -49,23 +49,23 @@ export class Bootstrap4FormConfiguration implements FormConfiguration { export class Bootstrap4FormGenerator implements FormGenerator { public type: string = FormStyle.BOOTSTRAP; - public generate(inputSchema: FormSchema): FormAsset { - const uniformsSchema = getUniformsSchema(inputSchema.schema); + public generate(formSchema: FormSchema): FormAsset { + const uniformsSchema = getUniformsSchema(formSchema.schema); const form = renderForm({ - id: inputSchema.name, - sanitizedId: inputSanitizationUtil(inputSchema.name), + id: formSchema.name, + sanitizedId: inputSanitizationUtil(formSchema.name), schema: new JSONSchemaBridge(uniformsSchema, () => true), disabled: false, placeholder: true, }); return { - id: inputSchema.name, - sanitizedId: inputSanitizationUtil(inputSchema.name), - assetName: `${inputSchema.name}.${FormAssetType.HTML}`, - sanitizedAssetName: `${inputSanitizationUtil(inputSchema.name)}.${FormAssetType.HTML}`, + id: formSchema.name, + sanitizedId: inputSanitizationUtil(formSchema.name), + assetName: `${formSchema.name}.${FormAssetType.HTML}`, + sanitizedAssetName: `${inputSanitizationUtil(formSchema.name)}.${FormAssetType.HTML}`, type: FormAssetType.HTML, content: unescape(form), - config: new Bootstrap4FormConfiguration(inputSchema.schema), + config: new Bootstrap4FormConfiguration(formSchema.schema), }; } } diff --git a/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts b/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts index a3ca100c39c..df70bcd506d 100644 --- a/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts +++ b/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts @@ -40,23 +40,23 @@ export class PatternflyFormConfiguration implements FormConfiguration { export class PatternflyFormGenerator implements FormGenerator { public type: string = FormStyle.PATTERNFLY; - public generate(inputSchema: FormSchema): FormAsset { - const uniformsSchema = getUniformsSchema(inputSchema.schema); + public generate(formSchema: FormSchema): FormAsset { + const uniformsSchema = getUniformsSchema(formSchema.schema); const form = renderForm({ - id: inputSchema.name, - sanitizedId: inputSanitizationUtil(inputSchema.name), + id: formSchema.name, + sanitizedId: inputSanitizationUtil(formSchema.name), schema: new JSONSchemaBridge(uniformsSchema, () => true), disabled: false, placeholder: true, }); return { - id: inputSchema.name, - sanitizedId: inputSanitizationUtil(inputSchema.name), - assetName: `${inputSchema.name}.${FormAssetType.TSX}`, - sanitizedAssetName: `${inputSanitizationUtil(inputSchema.name)}.${FormAssetType.TSX}`, + id: formSchema.name, + sanitizedId: inputSanitizationUtil(formSchema.name), + assetName: `${formSchema.name}.${FormAssetType.TSX}`, + sanitizedAssetName: `${inputSanitizationUtil(formSchema.name)}.${FormAssetType.TSX}`, type: FormAssetType.TSX, content: unescape(form), - config: new PatternflyFormConfiguration(inputSchema.schema), + config: new PatternflyFormConfiguration(formSchema.schema), }; } } diff --git a/packages/jbpm-form-generator/src/types.ts b/packages/jbpm-form-generator/src/types.ts index b74c4db741f..bf17dfcef82 100644 --- a/packages/jbpm-form-generator/src/types.ts +++ b/packages/jbpm-form-generator/src/types.ts @@ -58,5 +58,5 @@ export interface FormGenerationError { export interface FormGenerator { type: string; - generate: (schema: FormSchema) => FormAsset | FormGenerationError; + generate: (formSchema: FormSchema) => FormAsset | FormGenerationError; } From 00272f0d577ff3599e408812d6f027004f8a94b2 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:19:53 -0300 Subject: [PATCH 08/23] Update README --- packages/jbpm-form-generator/README.md | 66 ++++++------------ .../docs/form-generation-1.png | Bin 146606 -> 0 bytes .../docs/form-generation-2.png | Bin 187853 -> 0 bytes .../docs/form-generation-3.png | Bin 260887 -> 0 bytes .../docs/form-generation-4.png | Bin 174156 -> 0 bytes .../docs/form-generation-5.png | Bin 102151 -> 0 bytes .../uniforms-bootstrap4-codegen/README.md | 2 +- .../uniforms-patternfly-codegen/README.md | 2 +- 8 files changed, 23 insertions(+), 47 deletions(-) delete mode 100644 packages/jbpm-form-generator/docs/form-generation-1.png delete mode 100644 packages/jbpm-form-generator/docs/form-generation-2.png delete mode 100644 packages/jbpm-form-generator/docs/form-generation-3.png delete mode 100644 packages/jbpm-form-generator/docs/form-generation-4.png delete mode 100644 packages/jbpm-form-generator/docs/form-generation-5.png diff --git a/packages/jbpm-form-generator/README.md b/packages/jbpm-form-generator/README.md index d3b749d0676..7ec7dc9132a 100644 --- a/packages/jbpm-form-generator/README.md +++ b/packages/jbpm-form-generator/README.md @@ -15,15 +15,15 @@ under the License. --> -## Form Generation Tool +## jBPM Form Generator -This is a utility CLI to help generating forms in differents formats for BPMN processes and User Tasks in your Kogito projects. +This is a utility library to help generating forms in differents formats for BPMN processes and User Tasks in your Kogito projects. ### How does it work? -When building a Kogito project, Kogito generates JSON schemas to represent the data models for both Processes and User Tasks. +When building a Kogito project, Kogito generates JSON Schemas to represent the data models for both Processes and User Tasks. -This tool locates those JSON Schemas in the project and taking advantage of the [Uniforms](https://uniforms.tools) APIs, processes them and generate static forms as a resources in the project `src/main/resoures/form` folder. +This tool locates those JSON Schemas in the project and taking advantage of the [Uniforms](https://uniforms.tools) APIs, processes them and generate static forms. ### Form Types @@ -31,64 +31,40 @@ There are two types of form supported with differnt styling and output format: - **Patternfly**: generates a React (`.tsx`) forms using Patternfly 4 components. Implementation can be found in `@kie-tools/uniforms-patternfly-codegen` -- **Bootstrap 4**: generates a HTML (`.html`) forms using Bootstrap 4 styling. +- **Bootstrap 4**: generates a HTML (`.html`) forms using Bootstrap 4 styling. Implementation can be found in `@kie-tools/bootstrap4-patternfly-codegen` Each generated form consist in two files, the source code (`.tsx` or `.html`) and a companion `.config` file that defines the external resources (`css` / `js`) the form may need. ## Build -In order to build the CLI you must run the following command in the root folder of the repository: +In order to build the library you must run the following command in the root folder of the repository: ```shell script -pnpm -F @kie-tools/form-generation-tool... build:prod +pnpm -F @kie-tools/jbpm-form-generator... build:prod ``` -After the command has finished, go to `packages/form-generation-tool/dist` folder and you'll find the CLI binary (`form-generation-cli-macos`, `form-generation-cli-linux` or `form-generation-cli-win.exe` depending on your OS). +After the command, you can import the `generateForms` function into your codebase. It requires two arguments -## Running the CLI - -If you built the `form-generation-tool` package as described above locally, then in the command line just execute the CLI binary: - -```shell script -./form-generation-cli-linux -``` - -For those, who do not want to build `form-generation-tool` package locally, they can install last published version and then run it: - -```shell script -npm i -g @kie-tools/form-generation-tool -form-generation-tool -``` - -For those, who want to try `form-generation-tool` without instalation they can start it as: - -```shell script -npx @kie-tools/form-generation-tool +```tsx +generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] ``` -All commands will start a wizard to help you generate the forms: - -1. First set the path to your Kogito Project. - -![Step 1: Set the Kogito Project path](./docs/form-generation-1.png) - -> **ℹ️ NOTE:** Make sure your Kogito project has been compiled, otherwhise the CLI won't be able to find all the form schemas. +The `type` argument defines which kind of form will be generated. Currently, we have native support for `"bootstrap"` and `"patternfly"` but more can be added. -2. Select one of the availables the Form types (Patternfly or Bootstrap 4). +The `formSchemas` argument is a list of JSON Schemas which will be used to generate the form code. -![Step 2: Select the Form type](./docs/form-generation-2.png) +`generateForms` will return a list of form assets, which contain the `form` and `config` file content. -3. Confirm Selection to start the Form Generation process. +## Adding custom themes -![Step 3: Select the Form type](./docs/form-generation-3.png) +To add custom themes use the `registerFormGeneratorType` method, which requires a class that implements the following interface: -4. If the Form generation process is succesful, you'll get a confirmation message. - -![Form generation succesfully finished](./docs/form-generation-4.png) - -The generated forms will be stored in the `src/main/resources/forms` folder of the Kogito project. - -![List of generated forms in project](./docs/form-generation-5.png) +```tsx +export interface FormGenerator { + type: string; + generate: (formSchema: FormSchema) => FormAsset | FormGenerationError; +} +``` ## Using the Custom Forms with Runtime Tools Quarkus Extension diff --git a/packages/jbpm-form-generator/docs/form-generation-1.png b/packages/jbpm-form-generator/docs/form-generation-1.png deleted file mode 100644 index 100536c370c12a84fd008fcce15f461b7706cac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146606 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�WhcFe1|Xu(e_!XG>%6(dZ9 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≧`>9s)gwl450c3<4<=#z*qne^i0jW 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%0AR6+mkf%=oS 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 jI9eTWQ`#)I#&SJw>cFswh{ykUu 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

AtxzQ;l1&S%LX`KW#Kjhd5RjB4&BJZAd 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Ÿx;8Lb{tI?y-;38L!7hVbV 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 z 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 z%0A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 H+J*iXdi5=_ diff --git a/packages/jbpm-form-generator/docs/form-generation-4.png b/packages/jbpm-form-generator/docs/form-generation-4.png deleted file mode 100644 index 5e2534b71987a39e1d01c21df0aa66a2a4b987f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174156 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 diff --git a/packages/jbpm-form-generator/docs/form-generation-5.png b/packages/jbpm-form-generator/docs/form-generation-5.png deleted file mode 100644 index 86d9de0393bbd5ef9fb68101c8296b1a3f4858e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102151 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 A6aWAK diff --git a/packages/uniforms-bootstrap4-codegen/README.md b/packages/uniforms-bootstrap4-codegen/README.md index 8e8ff6ded24..a365e9189ac 100644 --- a/packages/uniforms-bootstrap4-codegen/README.md +++ b/packages/uniforms-bootstrap4-codegen/README.md @@ -17,7 +17,7 @@ ## Uniforms Bootstrap 4 Codegen -This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Bootstrap 4 forms for the `@kie-tools/form-generation-tool`. +This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Bootstrap 4 forms for the `@kie-tools/jbpm-form-generator`. --- diff --git a/packages/uniforms-patternfly-codegen/README.md b/packages/uniforms-patternfly-codegen/README.md index 81da116376f..9945bbde223 100644 --- a/packages/uniforms-patternfly-codegen/README.md +++ b/packages/uniforms-patternfly-codegen/README.md @@ -17,7 +17,7 @@ ## Uniforms Patternfly Codegen -This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Patternfly forms for the `@kie-tools/form-generation-tool`. +This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Patternfly forms for the `@kie-tools/jbpm-form-generator`. --- From de8a236cf6ac3b3a9e598a0bec8fccdea8ef0f40 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:26:22 -0300 Subject: [PATCH 09/23] Remove form-generation-tool from pnpm-lock --- pnpm-lock.yaml | 67 -------------------------------------------------- 1 file changed, 67 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 92db2b8d55b..eeb39ac83c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4825,73 +4825,6 @@ importers: specifier: ^5.5.3 version: 5.5.3 - packages/form-generation-tool: - dependencies: - '@kie-tools/uniforms-bootstrap4-codegen': - specifier: workspace:* - version: link:../uniforms-bootstrap4-codegen - '@kie-tools/uniforms-patternfly-codegen': - specifier: workspace:* - version: link:../uniforms-patternfly-codegen - lodash: - specifier: ^4.17.21 - version: 4.17.21 - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-json-schema: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - devDependencies: - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/jest-base': - specifier: workspace:* - version: link:../jest-base - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/jest-when': - specifier: ^3.5.5 - version: 3.5.5 - '@types/lodash': - specifier: ^4.14.168 - version: 4.14.169 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-when: - specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - run-script-os: - specifier: ^1.1.6 - version: 1.1.6 - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - packages/i18n: dependencies: react: From 3c89e5f2fb91094cef4bb99aeea4dde4c22bc24b Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:54:05 -0300 Subject: [PATCH 10/23] Refactor to be a class --- .../src/JbpmFormGenerator.ts | 61 +++++++ .../jbpm-form-generator/src/generateForms.ts | 39 ---- .../src/getFormGenerator.ts | 42 ----- .../tests/JbpmFormGenerator.test.ts | 170 ++++++++++++++++++ .../tests/generateForms.test.ts | 131 -------------- .../tests/getFormGenerator.test.ts | 51 ------ 6 files changed, 231 insertions(+), 263 deletions(-) create mode 100644 packages/jbpm-form-generator/src/JbpmFormGenerator.ts delete mode 100644 packages/jbpm-form-generator/src/generateForms.ts delete mode 100644 packages/jbpm-form-generator/src/getFormGenerator.ts create mode 100644 packages/jbpm-form-generator/tests/JbpmFormGenerator.test.ts delete mode 100644 packages/jbpm-form-generator/tests/generateForms.test.ts delete mode 100644 packages/jbpm-form-generator/tests/getFormGenerator.test.ts diff --git a/packages/jbpm-form-generator/src/JbpmFormGenerator.ts b/packages/jbpm-form-generator/src/JbpmFormGenerator.ts new file mode 100644 index 00000000000..1167042cb9f --- /dev/null +++ b/packages/jbpm-form-generator/src/JbpmFormGenerator.ts @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Bootstrap4FormGenerator } from "./generators/Bootstrap4FormGenerator"; +import { PatternflyFormGenerator } from "./generators/PatternflyFormGenerator"; +import { FormGenerator, FormSchema, FormAsset, FormGenerationError } from "./types"; + +export interface Args { + type: string; + formSchemas: FormSchema[]; +} + +export class JbpmFormGenerator { + private formGeneratorIndex: Map = new Map(); + + constructor() { + this.registerFormGeneratorType(new PatternflyFormGenerator()); + this.registerFormGeneratorType(new Bootstrap4FormGenerator()); + } + + public registerFormGeneratorType(formGenerator: FormGenerator) { + this.formGeneratorIndex.set(formGenerator.type, formGenerator); + } + + public getFormGenerator(type: string): FormGenerator { + const formGenerator = this.formGeneratorIndex.get(type); + if (formGenerator) { + return formGenerator; + } + throw new Error(`Unsupported form generation type: "${type}"`); + } + + public generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] { + const formGenerator = this.getFormGenerator(type); + return formSchemas.reduce((generatedForms: (FormAsset | FormGenerationError)[], formSchema) => { + try { + generatedForms.push(formGenerator.generate(formSchema)); + } catch (error) { + console.error(`Error generating form: ${error}`); + generatedForms.push({ error }); + } + return generatedForms; + }, []); + } +} diff --git a/packages/jbpm-form-generator/src/generateForms.ts b/packages/jbpm-form-generator/src/generateForms.ts deleted file mode 100644 index b6e3339e2e1..00000000000 --- a/packages/jbpm-form-generator/src/generateForms.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { getFormGenerator } from "./getFormGenerator"; -import { FormGenerator, FormSchema, FormAsset, FormGenerationError } from "./types"; - -export interface Args { - type: string; - formSchemas: FormSchema[]; -} - -export function generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] { - const tool: FormGenerator = getFormGenerator(type); - return formSchemas.reduce((generatedForms: (FormAsset | FormGenerationError)[], formSchema) => { - try { - generatedForms.push(tool.generate(formSchema)); - } catch (error) { - console.error(`Error generating form: ${error}`); - generatedForms.push({ error }); - } - return generatedForms; - }, []); -} diff --git a/packages/jbpm-form-generator/src/getFormGenerator.ts b/packages/jbpm-form-generator/src/getFormGenerator.ts deleted file mode 100644 index 4a0a26a571d..00000000000 --- a/packages/jbpm-form-generator/src/getFormGenerator.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { PatternflyFormGenerator } from "./generators/PatternflyFormGenerator"; -import { FormGenerator } from "./types"; -import { Bootstrap4FormGenerator } from "./generators/Bootstrap4FormGenerator"; - -/** - * A index of form generator type by its generator class - */ -const formGeneratorIndex: Map = new Map(); - -export function registerFormGeneratorType(formGenerator: FormGenerator) { - formGeneratorIndex.set(formGenerator.type, formGenerator); -} - -registerFormGeneratorType(new PatternflyFormGenerator()); -registerFormGeneratorType(new Bootstrap4FormGenerator()); - -export function getFormGenerator(type: string): FormGenerator { - const formGenerator = formGeneratorIndex.get(type); - if (formGenerator) { - return formGenerator; - } - throw new Error(`Unsupported form generation type: "${type}"`); -} diff --git a/packages/jbpm-form-generator/tests/JbpmFormGenerator.test.ts b/packages/jbpm-form-generator/tests/JbpmFormGenerator.test.ts new file mode 100644 index 00000000000..06cf3e1ebb3 --- /dev/null +++ b/packages/jbpm-form-generator/tests/JbpmFormGenerator.test.ts @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { JbpmFormGenerator } from "../dist/JbpmFormGenerator"; +import { FormAsset, FormGenerator, FormSchema, FormStyle } from "../dist/types"; +import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/partternfly"; +import { inputSanitizationUtil } from "../dist/inputSanitizationUtil"; + +describe("JbpmFormGenerator tests", () => { + describe("getFormGenerator tests", () => { + it("Lookup existing formGenerator - patternfly", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + const formGenerator = jbpmFormGenerator.getFormGenerator(FormStyle.PATTERNFLY); + + expect(formGenerator).not.toBeUndefined(); + expect(formGenerator.type).toStrictEqual(FormStyle.PATTERNFLY); + }); + + it("Lookup wrong formGenerator", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + expect(() => jbpmFormGenerator.getFormGenerator("wrong formGenerator type")).toThrow( + `Unsupported form generation type: "wrong formGenerator type"` + ); + }); + + it("Register formGenerator & lookup", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + const customFormGeneratorImpl: FormGenerator = { + type: "cool new formGenerator", + generate: jest.fn(), + }; + + jbpmFormGenerator.registerFormGeneratorType(customFormGeneratorImpl); + + const customFormGenerator = jbpmFormGenerator.getFormGenerator(customFormGeneratorImpl.type); + expect(customFormGenerator).not.toBeUndefined(); + expect(customFormGenerator).toStrictEqual(customFormGeneratorImpl); + + const patternflyFormGenerator = jbpmFormGenerator.getFormGenerator(FormStyle.PATTERNFLY); + expect(patternflyFormGenerator).not.toBeUndefined(); + }); + }); + + describe("generateForms tests", () => { + it("Generate forms with wrong formGenerator type", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + expect(() => + jbpmFormGenerator.generateForms({ + formSchemas: [{ name: "", schema: {} }], + type: "wrong type", + }) + ).toThrow('Unsupported form generation type: "wrong type"'); + }); + + it("Generate forms for empty schema", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + const formAssets = jbpmFormGenerator.generateForms({ + formSchemas: [{ name: "test", schema: {} }], + type: "patternfly", + }); + + expect(formAssets[0]).toEqual( + expect.objectContaining({ + id: "test", + sanitizedId: "test", + assetName: "test.tsx", + sanitizedAssetName: "test.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: "{}" }, + type: "tsx", + }) + ); + }); + + it("Generate forms project with schemas", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + const formAssets = jbpmFormGenerator.generateForms({ + formSchemas: [ + { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + type: "patternfly", + }); + + expect(formAssets[0]).toEqual( + expect.objectContaining({ + id: "Apply#For#Visa", + sanitizedId: "Apply_For_Visa", + assetName: "Apply#For#Visa.tsx", + sanitizedAssetName: "Apply_For_Visa.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, + type: "tsx", + }) + ); + expect(formAssets[1]).toEqual( + expect.objectContaining({ + id: "ConfirmTravel", + sanitizedId: "ConfirmTravel", + assetName: "ConfirmTravel.tsx", + sanitizedAssetName: "ConfirmTravel.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, + type: "tsx", + }) + ); + }); + + it("Generate forms project with schemas and one failure", () => { + const jbpmFormGenerator = new JbpmFormGenerator(); + const testFormGeneratorImpl: FormGenerator = { + type: "cool formGenerator", + + generate(schema: FormSchema): FormAsset { + if (schema.name === "ApplyForVisa") { + throw new Error("Unexpected Error!"); + } + + return { + id: schema.name, + sanitizedId: inputSanitizationUtil(schema.name), + content: schema.name, + type: "txt", + assetName: `${schema.name}.txt`, + sanitizedAssetName: `${inputSanitizationUtil(schema.name)}.txt`, + config: { + schema: "", + resources: { styles: {}, scripts: {} }, + }, + }; + }, + }; + + jbpmFormGenerator.registerFormGeneratorType(testFormGeneratorImpl); + + const formAssets = jbpmFormGenerator.generateForms({ + formSchemas: [ + { name: "ApplyForVisa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + type: testFormGeneratorImpl.type, + }); + + expect(formAssets[0]).toEqual({ error: new Error("Unexpected Error!") }); + expect(formAssets[1]).toEqual( + expect.objectContaining({ + id: "ConfirmTravel", + sanitizedId: "ConfirmTravel", + assetName: "ConfirmTravel.txt", + sanitizedAssetName: "ConfirmTravel.txt", + config: { resources: { scripts: {}, styles: {} }, schema: "" }, + type: "txt", + }) + ); + }); + }); +}); diff --git a/packages/jbpm-form-generator/tests/generateForms.test.ts b/packages/jbpm-form-generator/tests/generateForms.test.ts deleted file mode 100644 index 9849d262f82..00000000000 --- a/packages/jbpm-form-generator/tests/generateForms.test.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { generateForms } from "../dist/generateForms"; -import { FormAsset, FormGenerator, FormSchema } from "../dist/types"; -import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/partternfly"; -import { registerFormGeneratorType } from "../dist/getFormGenerator"; -import { inputSanitizationUtil } from "../dist/inputSanitizationUtil"; - -describe("generateForms tests", () => { - it("Generate forms with wrong tool type", () => { - expect(() => - generateForms({ - forms: [{ name: "", schema: {} }], - type: "wrong type", - }) - ).toThrow('Unsupported form generation type: "wrong type"'); - }); - - it("Generate forms for empty schema", () => { - const formAssets = generateForms({ - forms: [{ name: "test", schema: {} }], - type: "patternfly", - }); - - expect(formAssets[0]).toEqual( - expect.objectContaining({ - id: "test", - sanitizedId: "test", - assetName: "test.tsx", - sanitizedAssetName: "test.tsx", - config: { resources: { scripts: {}, styles: {} }, schema: "{}" }, - type: "tsx", - }) - ); - }); - - it("Generate forms project with schemas", () => { - const formAssets = generateForms({ - forms: [ - { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, - { name: "ConfirmTravel", schema: ConfirmTravelSchema }, - ], - type: "patternfly", - }); - - expect(formAssets[0]).toEqual( - expect.objectContaining({ - id: "Apply#For#Visa", - sanitizedId: "Apply_For_Visa", - assetName: "Apply#For#Visa.tsx", - sanitizedAssetName: "Apply_For_Visa.tsx", - config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, - type: "tsx", - }) - ); - expect(formAssets[1]).toEqual( - expect.objectContaining({ - id: "ConfirmTravel", - sanitizedId: "ConfirmTravel", - assetName: "ConfirmTravel.tsx", - sanitizedAssetName: "ConfirmTravel.tsx", - config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, - type: "tsx", - }) - ); - }); - - it("Generate forms project with schemas and one failure", () => { - const testTool: FormGenerator = { - type: "cool tool", - - generate(schema: FormSchema): FormAsset { - if (schema.name === "ApplyForVisa") { - throw new Error("Unexpected Error!"); - } - - return { - id: schema.name, - sanitizedId: inputSanitizationUtil(schema.name), - content: schema.name, - type: "txt", - assetName: `${schema.name}.txt`, - sanitizedAssetName: `${inputSanitizationUtil(schema.name)}.txt`, - config: { - schema: "", - resources: { styles: {}, scripts: {} }, - }, - }; - }, - }; - - registerFormGeneratorType(testTool); - - const formAssets = generateForms({ - forms: [ - { name: "ApplyForVisa", schema: ApplyForVisaSchema }, - { name: "ConfirmTravel", schema: ConfirmTravelSchema }, - ], - type: testTool.type, - }); - - expect(formAssets[0]).toEqual({ error: new Error("Unexpected Error!") }); - expect(formAssets[1]).toEqual( - expect.objectContaining({ - id: "ConfirmTravel", - sanitizedId: "ConfirmTravel", - assetName: "ConfirmTravel.txt", - sanitizedAssetName: "ConfirmTravel.txt", - config: { resources: { scripts: {}, styles: {} }, schema: "" }, - type: "txt", - }) - ); - }); -}); diff --git a/packages/jbpm-form-generator/tests/getFormGenerator.test.ts b/packages/jbpm-form-generator/tests/getFormGenerator.test.ts deleted file mode 100644 index bc5a722f85a..00000000000 --- a/packages/jbpm-form-generator/tests/getFormGenerator.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { getFormGenerator, registerFormGeneratorType } from "../dist/getFormGenerator"; -import { FormGenerator, FormStyle } from "../dist/types"; - -describe("getFormGenerator tests", () => { - it("Lookup existing tool - patternfly", () => { - const tool = getFormGenerator(FormStyle.PATTERNFLY); - - expect(tool).not.toBeUndefined(); - expect(tool.type).toStrictEqual(FormStyle.PATTERNFLY); - }); - - it("Lookup wrong tool", () => { - const toolType = "wrong tool type"; - expect(() => getFormGenerator(toolType)).toThrow(`Unsupported form generation type: "${toolType}"`); - }); - - it("Register tool & lookup", () => { - const tool: FormGenerator = { - type: "cool new tool", - generate: jest.fn(), - }; - - registerFormGeneratorType(tool); - - const coolTool = getFormGenerator(tool.type); - expect(coolTool).not.toBeUndefined(); - expect(coolTool).toStrictEqual(tool); - - const patternfly = getFormGenerator(FormStyle.PATTERNFLY); - expect(patternfly).not.toBeUndefined(); - }); -}); From f61ce6c0c9684f86e88e3d2bf9a9b1e46f741218 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 18:58:47 -0300 Subject: [PATCH 11/23] Rename variables --- .../tests/generators/Bootstrap4FormGenerationTool.test.ts | 4 ++-- .../tests/generators/PatternflyFormGenerationTool.test.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts b/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts index cb70fb03ed1..a507debe002 100644 --- a/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts +++ b/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts @@ -23,9 +23,9 @@ import { Bootstrap4FormConfiguration, Bootstrap4FormGenerator } from "../../dist describe("Bootstrap4FormGenerator tests", () => { it("Generate", () => { - const tool = new Bootstrap4FormGenerator(); + const bootstrap4FormGenerator = new Bootstrap4FormGenerator(); - const formAsset: FormAsset = tool.generate({ + const formAsset: FormAsset = bootstrap4FormGenerator.generate({ name: "ApplyFor#Visa", schema: ApplyForVisaSchema, }); diff --git a/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts b/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts index 67609cc0674..39722b5dafc 100644 --- a/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts +++ b/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts @@ -23,9 +23,9 @@ import { ApplyForVisaSchema } from "../__mocks__/partternfly"; describe("PatternflyFormGenerator tests", () => { it("Generate", () => { - const tool = new PatternflyFormGenerator(); + const patternflyFormGenerator = new PatternflyFormGenerator(); - const formAsset: FormAsset = tool.generate({ + const formAsset: FormAsset = patternflyFormGenerator.generate({ name: "ApplyFor#Visa", schema: ApplyForVisaSchema, }); From cd062e4df5696348d4a83cd40fca708500e95a47 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 21:20:33 -0300 Subject: [PATCH 12/23] Oops --- packages/jbpm-form-generator/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jbpm-form-generator/package.json b/packages/jbpm-form-generator/package.json index a909c30e6bf..e84c5144f70 100644 --- a/packages/jbpm-form-generator/package.json +++ b/packages/jbpm-form-generator/package.json @@ -19,7 +19,7 @@ ], "scripts": { "build:dev": "rimraf dist && tsc -p tsconfig.json", - "build:prod": "rimraf dist && && tsc -p tsconfig.json && pnpm lint && pnpm test", + "build:prod": "rimraf dist && tsc -p tsconfig.json && pnpm lint && pnpm test", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, From c81c81d7928a81ff65380fd1939cae3bcf560295 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Wed, 25 Sep 2024 22:39:37 -0300 Subject: [PATCH 13/23] Fix README --- packages/jbpm-form-generator/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jbpm-form-generator/README.md b/packages/jbpm-form-generator/README.md index 7ec7dc9132a..d961fd8c0da 100644 --- a/packages/jbpm-form-generator/README.md +++ b/packages/jbpm-form-generator/README.md @@ -31,7 +31,7 @@ There are two types of form supported with differnt styling and output format: - **Patternfly**: generates a React (`.tsx`) forms using Patternfly 4 components. Implementation can be found in `@kie-tools/uniforms-patternfly-codegen` -- **Bootstrap 4**: generates a HTML (`.html`) forms using Bootstrap 4 styling. Implementation can be found in `@kie-tools/bootstrap4-patternfly-codegen` +- **Bootstrap 4**: generates a HTML (`.html`) forms using Bootstrap 4 styling. Implementation can be found in `@kie-tools/uniforms-bootstrap4-codegen` Each generated form consist in two files, the source code (`.tsx` or `.html`) and a companion `.config` file that defines the external resources (`css` / `js`) the form may need. From 1e7c85c5214f7d3133b9df7916d7d6c2f5e8121d Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 10:44:33 -0300 Subject: [PATCH 14/23] Create form-code-generator package --- packages/form-code-generator/README.md | 107 +++++++++++ packages/form-code-generator/env/index.js | 27 +++ packages/form-code-generator/jest.config.js | 30 +++ packages/form-code-generator/package.json | 49 +++++ .../src/FormCodeGenerator.ts | 69 +++++++ packages/form-code-generator/src/types.ts | 59 ++++++ .../tests/FormGenerator.test.ts | 171 ++++++++++++++++++ .../tests/__mocks__/partternfly.ts | 153 ++++++++++++++++ .../form-code-generator/tests/jest.setup.ts | 20 ++ packages/form-code-generator/tsconfig.json | 6 + .../form-code-generator/tsconfig.tests.json | 6 + 11 files changed, 697 insertions(+) create mode 100644 packages/form-code-generator/README.md create mode 100644 packages/form-code-generator/env/index.js create mode 100644 packages/form-code-generator/jest.config.js create mode 100644 packages/form-code-generator/package.json create mode 100644 packages/form-code-generator/src/FormCodeGenerator.ts create mode 100644 packages/form-code-generator/src/types.ts create mode 100644 packages/form-code-generator/tests/FormGenerator.test.ts create mode 100644 packages/form-code-generator/tests/__mocks__/partternfly.ts create mode 100644 packages/form-code-generator/tests/jest.setup.ts create mode 100644 packages/form-code-generator/tsconfig.json create mode 100644 packages/form-code-generator/tsconfig.tests.json diff --git a/packages/form-code-generator/README.md b/packages/form-code-generator/README.md new file mode 100644 index 00000000000..ae2ae8878ff --- /dev/null +++ b/packages/form-code-generator/README.md @@ -0,0 +1,107 @@ + + +## Form Code Generator + +This is a utility library to help generating form code in differents formats for BPMN processes and User Tasks in your Kogito projects. + +## How it works? + +When building a Kogito project, Kogito generates JSON Schemas to represent the data models for both Processes and User Tasks. + +This tool locates those JSON Schemas in the project and taking advantage of the [Uniforms](https://uniforms.tools) APIs, processes them and generate static forms. + +### Form Types + +## Build + +In order to build the library you must run the following command in the root folder of the repository: + +```shell script +pnpm -F @kie-tools/form-code-generator... build:prod +``` + +After the command, you can import the `generateForms` function into your codebase. It requires two arguments + +```tsx +generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] +``` + +The `type` argument defines which kind of form will be generated. Currently, we have native support for `"bootstrap"` and `"patternfly"` but more can be added. + +The `formSchemas` argument is a list of JSON Schemas which will be used to generate the form code. + +`generateForms` will return a list of form assets, which contain the `form` and `config` file content. + +## Adding custom themes + +To add custom themes use the `registerFormGeneratorType` method, which requires a class that implements the following interface: + +```tsx +export interface FormGenerator { + type: string; + generate: (formSchema: FormSchema) => FormAsset | FormGenerationError; +} +``` + +## Using the Custom Forms with Runtime Tools Quarkus Extension + +If your project is a Quarkus based Kogito project, you can use and test them by using the **Runtime Tools Quarkus Extension**. + +To do so, just add the following dependency in your project `pom.xml`: + +```xml + + org.jbpm + jbpm-quarkus-devui + ${version} + +``` + +And start the project in Dev mode with the command: + +```shell script +mvn clean quarkus:dev +``` + +For more information on how to setup the **Runtime Tools Quarkus Extension** in your project look at the oficial Kogito [documentation](https://docs.kogito.kie.org/latest/html_single/#con-runtime-tools-dev-ui_kogito-developing-process-services). + +--- + +Apache KIE (incubating) is an effort undergoing incubation at The Apache Software +Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is +required of all newly accepted projects until a further review indicates that +the infrastructure, communications, and decision making process have stabilized +in a manner consistent with other successful ASF projects. While incubation +status is not necessarily a reflection of the completeness or stability of the +code, it does indicate that the project has yet to be fully endorsed by the ASF. + +Some of the incubating project’s releases may not be fully compliant with ASF +policy. For example, releases may have incomplete or un-reviewed licensing +conditions. What follows is a list of known issues the project is currently +aware of (note that this list, by definition, is likely to be incomplete): + +- Hibernate, an LGPL project, is being used. Hibernate is in the process of + relicensing to ASL v2 +- Some files, particularly test files, and those not supporting comments, may + be missing the ASF Licensing Header + +If you are planning to incorporate this work into your product/project, please +be aware that you will need to conduct a thorough licensing review to determine +the overall implications of including this work. For the current status of this +project through the Apache Incubator visit: +https://incubator.apache.org/projects/kie.html diff --git a/packages/form-code-generator/env/index.js b/packages/form-code-generator/env/index.js new file mode 100644 index 00000000000..61bc742bd66 --- /dev/null +++ b/packages/form-code-generator/env/index.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { varsWithName, composeEnv } = require("@kie-tools-scripts/build-env"); + +module.exports = composeEnv([require("@kie-tools/root-env/env")], { + vars: varsWithName({}), + get env() { + return {}; + }, +}); diff --git a/packages/form-code-generator/jest.config.js b/packages/form-code-generator/jest.config.js new file mode 100644 index 00000000000..e8dc87a086b --- /dev/null +++ b/packages/form-code-generator/jest.config.js @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { config, jestSetupPath, typescriptTransform } = require("@kie-tools/jest-base/jest.config"); + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + ...config, + testEnvironment: "jsdom", + setupFilesAfterEnv: [jestSetupPath], + transform: { + ...typescriptTransform, + }, +}; diff --git a/packages/form-code-generator/package.json b/packages/form-code-generator/package.json new file mode 100644 index 00000000000..fc71f804b93 --- /dev/null +++ b/packages/form-code-generator/package.json @@ -0,0 +1,49 @@ +{ + "name": "@kie-tools/form-code-generator", + "version": "0.0.0", + "description": "", + "license": "Apache-2.0", + "keywords": [], + "homepage": "https://github.com/apache/incubator-kie-tools", + "repository": { + "type": "git", + "url": "https://github.com/apache/incubator-kie-tools.git" + }, + "bugs": { + "url": "https://github.com/apache/incubator-kie-tools/issues" + }, + "types": "./dist/index.d.ts", + "main": "dist/index.js", + "files": [ + "dist" + ], + "scripts": { + "build:dev": "rimraf dist && tsc -p tsconfig.json", + "build:prod": "rimraf dist && tsc -p tsconfig.json && pnpm lint && pnpm test", + "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", + "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" + }, + "dependencies": { + "lodash": "^4.17.21", + "uniforms": "^3.10.2", + "uniforms-bridge-json-schema": "^3.10.2" + }, + "devDependencies": { + "@kie-tools/eslint": "workspace:*", + "@kie-tools/jest-base": "workspace:*", + "@kie-tools/root-env": "workspace:*", + "@kie-tools/tsconfig": "workspace:*", + "@testing-library/jest-dom": "^6.4.6", + "@types/jest": "^29.5.12", + "@types/jest-when": "^3.5.5", + "@types/lodash": "^4.14.168", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-junit": "^16.0.0", + "jest-when": "^3.6.0", + "rimraf": "^3.0.2", + "run-script-os": "^1.1.6", + "ts-jest": "^29.1.5", + "typescript": "^5.5.3" + } +} diff --git a/packages/form-code-generator/src/FormCodeGenerator.ts b/packages/form-code-generator/src/FormCodeGenerator.ts new file mode 100644 index 00000000000..9f73b7c381e --- /dev/null +++ b/packages/form-code-generator/src/FormCodeGenerator.ts @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormCodeGeneratorTheme, FormSchema, FormAsset, FormCodeGeneration } from "./types"; + +export interface Args { + theme: FormTheme; + formSchemas: FormSchema[]; +} + +export class FormCodeGenerator< + CustomFormAsset extends FormAsset, + FormThemeFileExt extends string, + FormThemeName extends string, +> { + constructor(...themes: FormCodeGeneratorTheme[]) { + if (themes !== undefined) { + themes.forEach((theme) => this.registerFormGeneratorType(theme)); + } + } + + private formGeneratorIndex = new Map< + string, + FormCodeGeneratorTheme + >(); + + public registerFormGeneratorType( + formGenerator: FormCodeGeneratorTheme + ) { + this.formGeneratorIndex.set(formGenerator.theme, formGenerator); + } + + public getFormGenerator(theme: string) { + const formGenerator = this.formGeneratorIndex.get(theme); + if (formGenerator) { + return formGenerator; + } + throw new Error(`Unsupported form generation type: "${theme}"`); + } + + public generateForms({ theme, formSchemas }: Args) { + const formGenerator = this.getFormGenerator(theme); + return formSchemas.reduce((generatedForms, formSchema) => { + try { + generatedForms.push({ formAssets: formGenerator.generate(formSchema), formErrors: undefined }); + } catch (error) { + console.error(`Error generating form: ${error}`); + generatedForms.push({ formAssets: undefined, formErrors: error }); + } + return generatedForms; + }, [] as FormCodeGeneration[]); + } +} diff --git a/packages/form-code-generator/src/types.ts b/packages/form-code-generator/src/types.ts new file mode 100644 index 00000000000..a6279124bc7 --- /dev/null +++ b/packages/form-code-generator/src/types.ts @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export interface FormSchema { + name: string; + schema: any; +} + +export interface FormResources { + styles: Record; + scripts: Record; +} + +export interface FormConfiguration { + schema: string; + resources: FormResources; +} + +export interface FormAsset { + id: string; + assetName: string; + content: string; + type: FormThemeFileExt; + config: FormConfiguration; +} + +export interface FormCodeGenerationError { + error: Error; +} + +export interface FormCodeGeneratorTheme< + FormThemeFileExt extends string, + FormThemeName extends string, + CustomFormAsset = FormAsset, +> { + theme: FormThemeName; + generate: (formSchema: FormSchema) => CustomFormAsset; +} + +export interface FormCodeGeneration { + formAssets: FormAsset | undefined; + formErrors: FormCodeGenerationError | undefined; +} diff --git a/packages/form-code-generator/tests/FormGenerator.test.ts b/packages/form-code-generator/tests/FormGenerator.test.ts new file mode 100644 index 00000000000..b7747682b2f --- /dev/null +++ b/packages/form-code-generator/tests/FormGenerator.test.ts @@ -0,0 +1,171 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormCodeGenerator } from "../dist/FormCodeGenerator"; +import { FormAsset, FormSchema } from "../dist/types"; +import { ApplyForVisaSchema, ConfirmTravelSchema, dummyPatternflyTheme } from "./__mocks__/partternfly"; + +describe("FormCodeGenerator tests", () => { + describe("getFormGenerator tests", () => { + it("Lookup existing formGenerator - patternfly", () => { + const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme); + const formGenerator = jbpmFormGenerator.getFormGenerator("patternfly"); + + expect(formGenerator).not.toBeUndefined(); + expect(formGenerator.theme).toStrictEqual("patternfly"); + }); + + it("Lookup wrong formGenerator", () => { + const jbpmFormGenerator = new FormCodeGenerator(); + expect(() => jbpmFormGenerator.getFormGenerator("wrong formGenerator type")).toThrow( + `Unsupported form generation type: "wrong formGenerator type"` + ); + }); + + it("Register formGenerator & lookup", () => { + const myCoolFormGenerator = { + theme: "cool new formGenerator", + generate: jest.fn(), + }; + + const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme, myCoolFormGenerator); + + const customFormGenerator = jbpmFormGenerator.getFormGenerator("cool new formGenerator"); + expect(customFormGenerator).not.toBeUndefined(); + expect(customFormGenerator).toStrictEqual(myCoolFormGenerator); + + const patternflyFormGenerator = jbpmFormGenerator.getFormGenerator("patternfly"); + expect(patternflyFormGenerator).not.toBeUndefined(); + expect(patternflyFormGenerator).toStrictEqual(dummyPatternflyTheme); + }); + }); + + describe("generateForms tests", () => { + it("Generate forms with wrong formGenerator type", () => { + const jbpmFormGenerator = new FormCodeGenerator(); + expect(() => + jbpmFormGenerator.generateForms({ + formSchemas: [{ name: "", schema: {} }], + theme: "wrong type", + }) + ).toThrow('Unsupported form generation type: "wrong type"'); + }); + + it("Generate forms for empty schema", () => { + const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme); + const formAssets = jbpmFormGenerator.generateForms({ + formSchemas: [{ name: "test", schema: {} }], + theme: "patternfly", + }); + + expect(formAssets[0]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "test", + assetName: "test.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: "{}" }, + type: "tsx", + }), + formErrors: undefined, + }) + ); + }); + + it("Generate forms project with schemas", () => { + const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme); + const formAssets = jbpmFormGenerator.generateForms({ + formSchemas: [ + { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + theme: "patternfly", + }); + + expect(formAssets[0]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "Apply#For#Visa", + assetName: "Apply#For#Visa.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, + type: "tsx", + }), + formErrors: undefined, + }) + ); + expect(formAssets[1]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "ConfirmTravel", + assetName: "ConfirmTravel.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, + type: "tsx", + }), + formErrors: undefined, + }) + ); + }); + + it("Generate forms project with schemas and one failure", () => { + const jbpmFormGenerator = new FormCodeGenerator({ + theme: "cool formGenerator", + + generate(schema: FormSchema): FormAsset<"txt"> { + if (schema.name === "ApplyForVisa") { + throw new Error("Unexpected Error!"); + } + + return { + id: schema.name, + content: schema.name, + type: "txt", + assetName: `${schema.name}.txt`, + config: { + schema: "", + resources: { styles: {}, scripts: {} }, + }, + }; + }, + }); + + const formAssets = jbpmFormGenerator.generateForms({ + formSchemas: [ + { name: "ApplyForVisa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + theme: "cool formGenerator", + }); + + expect(formAssets[0]).toEqual({ + formAssets: undefined, + formErrors: new Error("Unexpected Error!"), + }); + expect(formAssets[1]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "ConfirmTravel", + assetName: "ConfirmTravel.txt", + config: { resources: { scripts: {}, styles: {} }, schema: "" }, + type: "txt", + }), + formErrors: undefined, + }) + ); + }); + }); +}); diff --git a/packages/form-code-generator/tests/__mocks__/partternfly.ts b/packages/form-code-generator/tests/__mocks__/partternfly.ts new file mode 100644 index 00000000000..496258b35b4 --- /dev/null +++ b/packages/form-code-generator/tests/__mocks__/partternfly.ts @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormCodeGeneratorTheme, FormSchema } from "../../dist/types"; + +export const dummyPatternflyTheme: FormCodeGeneratorTheme<"tsx", "patternfly"> = { + theme: "patternfly", + + generate({ schema, name }: FormSchema) { + return { + id: name, + content: name, + type: "tsx", + assetName: `${name}.tsx`, + config: { + schema: JSON.stringify(schema), + resources: { styles: {}, scripts: {} }, + }, + }; + }, +}; + +export const ApplyForVisaSchema = { + $schema: "http://json-schema.org/draft-07/schema#", + type: "object", + properties: { + traveller: { + type: "object", + properties: { + address: { + type: "object", + properties: { + city: { type: "string" }, + country: { type: "string" }, + street: { type: "string" }, + zipCode: { type: "string" }, + }, + }, + email: { type: "string" }, + firstName: { type: "string" }, + lastName: { type: "string" }, + nationality: { type: "string" }, + }, + input: true, + }, + trip: { + type: "object", + properties: { + begin: { type: "string", format: "date-time" }, + city: { type: "string" }, + country: { type: "string" }, + end: { type: "string", format: "date-time" }, + visaRequired: { type: "boolean" }, + }, + input: true, + }, + visaApplication: { + type: "object", + properties: { + approved: { type: "boolean" }, + city: { type: "string" }, + country: { type: "string" }, + duration: { type: "integer" }, + firstName: { type: "string" }, + lastName: { type: "string" }, + nationality: { type: "string" }, + passportNumber: { type: "string" }, + }, + output: true, + }, + }, +}; + +export const ConfirmTravelSchema = { + $schema: "http://json-schema.org/draft-07/schema#", + type: "object", + properties: { + flight: { + type: "object", + properties: { + arrival: { + type: "string", + format: "date-time", + }, + departure: { + type: "string", + format: "date-time", + }, + flightNumber: { + type: "string", + }, + gate: { + type: "string", + }, + seat: { + type: "string", + }, + }, + input: true, + }, + hotel: { + type: "object", + properties: { + address: { + type: "object", + properties: { + city: { + type: "string", + }, + country: { + type: "string", + }, + street: { + type: "string", + }, + zipCode: { + type: "string", + }, + }, + }, + bookingNumber: { + type: "string", + }, + name: { + type: "string", + }, + phone: { + type: "string", + }, + room: { + type: "string", + }, + }, + input: true, + }, + }, +}; diff --git a/packages/form-code-generator/tests/jest.setup.ts b/packages/form-code-generator/tests/jest.setup.ts new file mode 100644 index 00000000000..1c413b1660e --- /dev/null +++ b/packages/form-code-generator/tests/jest.setup.ts @@ -0,0 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import "@testing-library/jest-dom"; diff --git a/packages/form-code-generator/tsconfig.json b/packages/form-code-generator/tsconfig.json new file mode 100644 index 00000000000..84c713f3bfa --- /dev/null +++ b/packages/form-code-generator/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@kie-tools/tsconfig/tsconfig.cjs.json", + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/form-code-generator/tsconfig.tests.json b/packages/form-code-generator/tsconfig.tests.json new file mode 100644 index 00000000000..1b2aedc6d23 --- /dev/null +++ b/packages/form-code-generator/tsconfig.tests.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "types": ["@testing-library/jest-dom"] + } +} From b0e120ca522ce8e47009b70260476c0286c98a81 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 10:46:34 -0300 Subject: [PATCH 15/23] Rename uniforms-bootstrap4-codegen package --- .../LICENSE | 0 .../README.md | 2 +- .../env/index.js | 0 .../jest.config.js | 0 .../package.json | 3 ++- .../src/api/index.ts | 0 .../src/api/types.ts | 0 .../src/index.ts | 0 .../src/raw-content.d.ts | 0 .../src/resources/staticCode/getCheckboxGroupValue.txt | 0 .../src/resources/staticCode/getMultipleSelectValue.txt | 0 .../src/resources/staticCode/getRadioGroupValue.txt | 0 .../src/resources/staticCode/resources.d.ts | 0 .../src/resources/staticCode/setCheckboxGroupValue.txt | 0 .../src/resources/staticCode/setRadioGroupValue.txt | 0 .../src/resources/staticCode/setSelecMultipletValue.txt | 0 .../src/resources/staticCode/setSelectValue.txt | 0 .../src/resources/templates/checkbox.setModelData.template | 0 .../src/resources/templates/checkbox.template | 0 .../src/resources/templates/checkbox.writeModelData.template | 0 .../resources/templates/checkboxGroup.setModelData.template | 0 .../src/resources/templates/checkboxGroup.template | 0 .../resources/templates/checkboxGroup.writeModelData.template | 0 .../src/resources/templates/date.setModelData.template | 0 .../src/resources/templates/date.template | 0 .../src/resources/templates/form.template | 0 .../src/resources/templates/formGroup.template | 0 .../src/resources/templates/input.setModelData.template | 0 .../src/resources/templates/input.template | 0 .../src/resources/templates/input.writeModelData.template | 0 .../src/resources/templates/nestField.setModelData.template | 0 .../src/resources/templates/nestField.template | 0 .../src/resources/templates/nestField.writeModelData.template | 0 .../src/resources/templates/number.template | 0 .../src/resources/templates/number.writeModelData.template | 0 .../src/resources/templates/radioGroup.setModelData.template | 0 .../src/resources/templates/radioGroup.template | 0 .../src/resources/templates/radioGroup.writeModelData.template | 0 .../src/resources/templates/resources.d.ts | 0 .../src/resources/templates/select.setModelData.template | 0 .../src/resources/templates/select.template | 0 .../src/resources/templates/select.writeModelData.template | 0 .../src/resources/templates/unsupported.template | 0 .../src/uniforms/AutoField.tsx | 0 .../src/uniforms/AutoFields.tsx | 0 .../src/uniforms/AutoForm.tsx | 0 .../src/uniforms/BoolField.tsx | 0 .../src/uniforms/BootstrapCodeGenContext.tsx | 0 .../src/uniforms/CheckBoxGroupField.tsx | 0 .../src/uniforms/DateField.tsx | 0 .../src/uniforms/NestField.tsx | 0 .../src/uniforms/NumField.tsx | 0 .../src/uniforms/RadioField.tsx | 0 .../src/uniforms/SelectField.tsx | 0 .../src/uniforms/TextField.tsx | 0 .../src/uniforms/UnsupportedField.tsx | 0 .../src/uniforms/index.ts | 0 .../src/uniforms/renderForm.tsx | 0 .../src/uniforms/rendering/FormInputs.tsx | 0 .../src/uniforms/rendering/NestedFieldInput.tsx | 0 .../src/uniforms/rendering/RenderingUtils.tsx | 0 .../src/uniforms/templates/AutoFormTemplate.ts | 0 .../src/uniforms/templates/BoolFieldTemplate.ts | 0 .../src/uniforms/templates/CheckboxGroupFieldTemplate.ts | 0 .../src/uniforms/templates/DateFieldTemplate.ts | 0 .../src/uniforms/templates/NestFieldTemplate.ts | 0 .../src/uniforms/templates/NumFieldTemplate.ts | 0 .../src/uniforms/templates/RadioGroupFieldTemplate.ts | 0 .../src/uniforms/templates/SelectFieldTemplate.ts | 0 .../src/uniforms/templates/TextFieldTemplate.ts | 0 .../src/uniforms/templates/UnsupportedTemplate.ts | 0 .../src/uniforms/templates/templates.ts | 0 .../src/uniforms/templates/types.ts | 0 .../src/uniforms/templates/utils.ts | 0 .../src/uniforms/utils/Utils.ts | 0 .../tests/AutoField.test.tsx | 0 .../tests/AutoFields.test.tsx | 0 .../tests/AutoForm.test.tsx | 0 .../tests/BoolField.test.tsx | 0 .../tests/CheckboxGroupField.test.tsx | 0 .../tests/DateField.test.tsx | 0 .../tests/NestField.test.tsx | 0 .../tests/NumField.test.tsx | 0 .../tests/RadioField.test.tsx | 0 .../tests/SelectField.test.tsx | 0 .../tests/TextField.test.tsx | 0 .../tests/UnsupportedField.test.tsx | 0 .../tests/__mocks__/styleMock.js | 0 .../tests/__snapshots__/AutoForm.test.tsx.snap | 0 .../tests/__snapshots__/BoolField.test.tsx.snap | 0 .../tests/__snapshots__/CheckboxGroupField.test.tsx.snap | 0 .../tests/__snapshots__/DateField.test.tsx.snap | 0 .../tests/__snapshots__/NestField.test.tsx.snap | 0 .../tests/__snapshots__/NumField.test.tsx.snap | 0 .../tests/__snapshots__/RadioField.test.tsx.snap | 0 .../tests/__snapshots__/SelectField.test.tsx.snap | 0 .../tests/__snapshots__/TextField.test.tsx.snap | 0 .../tests/__snapshots__/UnsupportedField.test.tsx.snap | 0 .../tests/_createContext.ts | 0 .../tests/_createSchema.ts | 0 .../tests/_render.tsx | 0 .../tests/jest.setup.ts | 0 .../tests/rawJestTransformer.js | 0 .../tsconfig.json | 0 .../tsconfig.tests.json | 0 .../webpack.config.js | 0 106 files changed, 3 insertions(+), 2 deletions(-) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/LICENSE (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/README.md (98%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/env/index.js (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/jest.config.js (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/package.json (96%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/api/index.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/api/types.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/index.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/raw-content.d.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/getCheckboxGroupValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/getMultipleSelectValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/getRadioGroupValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/resources.d.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/setCheckboxGroupValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/setRadioGroupValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/setSelecMultipletValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/staticCode/setSelectValue.txt (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/checkbox.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/checkbox.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/checkbox.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/checkboxGroup.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/checkboxGroup.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/checkboxGroup.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/date.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/date.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/form.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/formGroup.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/input.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/input.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/input.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/nestField.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/nestField.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/nestField.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/number.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/number.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/radioGroup.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/radioGroup.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/radioGroup.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/resources.d.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/select.setModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/select.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/select.writeModelData.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/resources/templates/unsupported.template (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/AutoField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/AutoFields.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/AutoForm.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/BoolField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/BootstrapCodeGenContext.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/CheckBoxGroupField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/DateField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/NestField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/NumField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/RadioField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/SelectField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/TextField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/UnsupportedField.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/index.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/renderForm.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/rendering/FormInputs.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/rendering/NestedFieldInput.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/rendering/RenderingUtils.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/AutoFormTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/BoolFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/CheckboxGroupFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/DateFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/NestFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/NumFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/RadioGroupFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/SelectFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/TextFieldTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/UnsupportedTemplate.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/templates.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/types.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/templates/utils.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/src/uniforms/utils/Utils.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/AutoField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/AutoFields.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/AutoForm.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/BoolField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/CheckboxGroupField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/DateField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/NestField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/NumField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/RadioField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/SelectField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/TextField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/UnsupportedField.test.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__mocks__/styleMock.js (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/AutoForm.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/BoolField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/CheckboxGroupField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/DateField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/NestField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/NumField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/RadioField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/SelectField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/TextField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/__snapshots__/UnsupportedField.test.tsx.snap (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/_createContext.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/_createSchema.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/_render.tsx (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/jest.setup.ts (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tests/rawJestTransformer.js (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tsconfig.json (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/tsconfig.tests.json (100%) rename packages/{uniforms-bootstrap4-codegen => form-code-generator-bootstrap4-theme}/webpack.config.js (100%) diff --git a/packages/uniforms-bootstrap4-codegen/LICENSE b/packages/form-code-generator-bootstrap4-theme/LICENSE similarity index 100% rename from packages/uniforms-bootstrap4-codegen/LICENSE rename to packages/form-code-generator-bootstrap4-theme/LICENSE diff --git a/packages/uniforms-bootstrap4-codegen/README.md b/packages/form-code-generator-bootstrap4-theme/README.md similarity index 98% rename from packages/uniforms-bootstrap4-codegen/README.md rename to packages/form-code-generator-bootstrap4-theme/README.md index a365e9189ac..1a339ce5be1 100644 --- a/packages/uniforms-bootstrap4-codegen/README.md +++ b/packages/form-code-generator-bootstrap4-theme/README.md @@ -15,7 +15,7 @@ under the License. --> -## Uniforms Bootstrap 4 Codegen +## Form Code Generator Bootstrap4 Theme This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Bootstrap 4 forms for the `@kie-tools/jbpm-form-generator`. diff --git a/packages/uniforms-bootstrap4-codegen/env/index.js b/packages/form-code-generator-bootstrap4-theme/env/index.js similarity index 100% rename from packages/uniforms-bootstrap4-codegen/env/index.js rename to packages/form-code-generator-bootstrap4-theme/env/index.js diff --git a/packages/uniforms-bootstrap4-codegen/jest.config.js b/packages/form-code-generator-bootstrap4-theme/jest.config.js similarity index 100% rename from packages/uniforms-bootstrap4-codegen/jest.config.js rename to packages/form-code-generator-bootstrap4-theme/jest.config.js diff --git a/packages/uniforms-bootstrap4-codegen/package.json b/packages/form-code-generator-bootstrap4-theme/package.json similarity index 96% rename from packages/uniforms-bootstrap4-codegen/package.json rename to packages/form-code-generator-bootstrap4-theme/package.json index c01019caf36..5731a9e5175 100644 --- a/packages/uniforms-bootstrap4-codegen/package.json +++ b/packages/form-code-generator-bootstrap4-theme/package.json @@ -1,5 +1,5 @@ { - "name": "@kie-tools/uniforms-bootstrap4-codegen", + "name": "@kie-tools/form-code-generator-bootstrap4-theme", "version": "0.0.0", "description": "", "license": "Apache-2.0", @@ -48,6 +48,7 @@ "@types/simpl-schema": "^1.12.0", "@types/underscore": "^1.11.2", "copy-webpack-plugin": "^11.0.0", + "copyfiles": "^2.4.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", diff --git a/packages/uniforms-bootstrap4-codegen/src/api/index.ts b/packages/form-code-generator-bootstrap4-theme/src/api/index.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/api/index.ts rename to packages/form-code-generator-bootstrap4-theme/src/api/index.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/api/types.ts b/packages/form-code-generator-bootstrap4-theme/src/api/types.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/api/types.ts rename to packages/form-code-generator-bootstrap4-theme/src/api/types.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/index.ts b/packages/form-code-generator-bootstrap4-theme/src/index.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/index.ts rename to packages/form-code-generator-bootstrap4-theme/src/index.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/raw-content.d.ts b/packages/form-code-generator-bootstrap4-theme/src/raw-content.d.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/raw-content.d.ts rename to packages/form-code-generator-bootstrap4-theme/src/raw-content.d.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/getCheckboxGroupValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/getCheckboxGroupValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/getCheckboxGroupValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/getCheckboxGroupValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/getMultipleSelectValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/getMultipleSelectValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/getMultipleSelectValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/getMultipleSelectValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/getRadioGroupValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/getRadioGroupValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/getRadioGroupValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/getRadioGroupValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/resources.d.ts b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/resources.d.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/resources.d.ts rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/resources.d.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setCheckboxGroupValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setCheckboxGroupValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setCheckboxGroupValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setCheckboxGroupValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setRadioGroupValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setRadioGroupValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setRadioGroupValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setRadioGroupValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setSelecMultipletValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setSelecMultipletValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setSelecMultipletValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setSelecMultipletValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setSelectValue.txt b/packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setSelectValue.txt similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/staticCode/setSelectValue.txt rename to packages/form-code-generator-bootstrap4-theme/src/resources/staticCode/setSelectValue.txt diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/checkbox.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkbox.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/checkbox.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkbox.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/checkbox.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkbox.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/checkbox.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkbox.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/checkbox.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkbox.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/checkbox.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkbox.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/checkboxGroup.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkboxGroup.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/checkboxGroup.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkboxGroup.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/checkboxGroup.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkboxGroup.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/checkboxGroup.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkboxGroup.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/checkboxGroup.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkboxGroup.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/checkboxGroup.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/checkboxGroup.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/date.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/date.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/date.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/date.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/date.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/date.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/date.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/date.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/form.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/form.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/form.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/form.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/formGroup.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/formGroup.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/formGroup.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/formGroup.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/input.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/input.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/input.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/input.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/input.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/input.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/input.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/input.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/input.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/input.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/input.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/input.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/nestField.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/nestField.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/nestField.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/nestField.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/nestField.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/nestField.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/nestField.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/nestField.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/nestField.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/nestField.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/nestField.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/nestField.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/number.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/number.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/number.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/number.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/number.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/number.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/number.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/number.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/radioGroup.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/radioGroup.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/radioGroup.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/radioGroup.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/radioGroup.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/radioGroup.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/radioGroup.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/radioGroup.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/radioGroup.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/radioGroup.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/radioGroup.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/radioGroup.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/resources.d.ts b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/resources.d.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/resources.d.ts rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/resources.d.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/select.setModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/select.setModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/select.setModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/select.setModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/select.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/select.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/select.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/select.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/select.writeModelData.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/select.writeModelData.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/select.writeModelData.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/select.writeModelData.template diff --git a/packages/uniforms-bootstrap4-codegen/src/resources/templates/unsupported.template b/packages/form-code-generator-bootstrap4-theme/src/resources/templates/unsupported.template similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/resources/templates/unsupported.template rename to packages/form-code-generator-bootstrap4-theme/src/resources/templates/unsupported.template diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/AutoField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/AutoField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/AutoField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/AutoField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/AutoFields.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/AutoFields.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/AutoFields.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/AutoFields.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/AutoForm.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/AutoForm.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/AutoForm.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/AutoForm.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/BoolField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/BoolField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/BoolField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/BoolField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/BootstrapCodeGenContext.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/BootstrapCodeGenContext.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/BootstrapCodeGenContext.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/BootstrapCodeGenContext.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/CheckBoxGroupField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/CheckBoxGroupField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/CheckBoxGroupField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/CheckBoxGroupField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/DateField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/DateField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/DateField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/DateField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/NestField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/NestField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/NestField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/NestField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/NumField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/NumField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/NumField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/NumField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/RadioField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/RadioField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/RadioField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/RadioField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/SelectField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/SelectField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/SelectField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/SelectField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/TextField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/TextField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/TextField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/TextField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/UnsupportedField.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/UnsupportedField.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/UnsupportedField.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/UnsupportedField.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/index.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/index.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/index.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/index.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/renderForm.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/renderForm.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/renderForm.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/renderForm.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/rendering/FormInputs.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/rendering/FormInputs.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/rendering/FormInputs.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/rendering/FormInputs.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/rendering/NestedFieldInput.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/rendering/NestedFieldInput.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/rendering/NestedFieldInput.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/rendering/NestedFieldInput.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/rendering/RenderingUtils.tsx b/packages/form-code-generator-bootstrap4-theme/src/uniforms/rendering/RenderingUtils.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/rendering/RenderingUtils.tsx rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/rendering/RenderingUtils.tsx diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/AutoFormTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/AutoFormTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/AutoFormTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/AutoFormTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/BoolFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/BoolFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/BoolFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/BoolFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/CheckboxGroupFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/CheckboxGroupFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/CheckboxGroupFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/CheckboxGroupFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/DateFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/DateFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/DateFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/DateFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/NestFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/NestFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/NestFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/NestFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/NumFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/NumFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/NumFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/NumFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/RadioGroupFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/RadioGroupFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/RadioGroupFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/RadioGroupFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/SelectFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/SelectFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/SelectFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/SelectFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/TextFieldTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/TextFieldTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/TextFieldTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/TextFieldTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/UnsupportedTemplate.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/UnsupportedTemplate.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/UnsupportedTemplate.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/UnsupportedTemplate.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/templates.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/templates.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/templates.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/templates.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/types.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/types.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/types.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/types.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/templates/utils.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/utils.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/templates/utils.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/templates/utils.ts diff --git a/packages/uniforms-bootstrap4-codegen/src/uniforms/utils/Utils.ts b/packages/form-code-generator-bootstrap4-theme/src/uniforms/utils/Utils.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/src/uniforms/utils/Utils.ts rename to packages/form-code-generator-bootstrap4-theme/src/uniforms/utils/Utils.ts diff --git a/packages/uniforms-bootstrap4-codegen/tests/AutoField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/AutoField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/AutoField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/AutoField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/AutoFields.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/AutoFields.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/AutoFields.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/AutoFields.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/AutoForm.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/AutoForm.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/AutoForm.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/AutoForm.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/BoolField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/BoolField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/BoolField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/BoolField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/CheckboxGroupField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/CheckboxGroupField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/CheckboxGroupField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/CheckboxGroupField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/DateField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/DateField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/DateField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/DateField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/NestField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/NestField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/NestField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/NestField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/NumField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/NumField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/NumField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/NumField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/RadioField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/RadioField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/RadioField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/RadioField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/SelectField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/SelectField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/SelectField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/SelectField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/TextField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/TextField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/TextField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/TextField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/UnsupportedField.test.tsx b/packages/form-code-generator-bootstrap4-theme/tests/UnsupportedField.test.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/UnsupportedField.test.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/UnsupportedField.test.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/__mocks__/styleMock.js b/packages/form-code-generator-bootstrap4-theme/tests/__mocks__/styleMock.js similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__mocks__/styleMock.js rename to packages/form-code-generator-bootstrap4-theme/tests/__mocks__/styleMock.js diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/AutoForm.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/AutoForm.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/AutoForm.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/AutoForm.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/BoolField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/BoolField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/BoolField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/BoolField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/CheckboxGroupField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/CheckboxGroupField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/CheckboxGroupField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/CheckboxGroupField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/DateField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/DateField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/DateField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/DateField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/NestField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/NestField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/NestField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/NestField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/NumField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/NumField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/NumField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/NumField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/RadioField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/RadioField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/RadioField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/RadioField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/SelectField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/SelectField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/SelectField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/SelectField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/TextField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/TextField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/TextField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/TextField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/__snapshots__/UnsupportedField.test.tsx.snap b/packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/UnsupportedField.test.tsx.snap similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/__snapshots__/UnsupportedField.test.tsx.snap rename to packages/form-code-generator-bootstrap4-theme/tests/__snapshots__/UnsupportedField.test.tsx.snap diff --git a/packages/uniforms-bootstrap4-codegen/tests/_createContext.ts b/packages/form-code-generator-bootstrap4-theme/tests/_createContext.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/_createContext.ts rename to packages/form-code-generator-bootstrap4-theme/tests/_createContext.ts diff --git a/packages/uniforms-bootstrap4-codegen/tests/_createSchema.ts b/packages/form-code-generator-bootstrap4-theme/tests/_createSchema.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/_createSchema.ts rename to packages/form-code-generator-bootstrap4-theme/tests/_createSchema.ts diff --git a/packages/uniforms-bootstrap4-codegen/tests/_render.tsx b/packages/form-code-generator-bootstrap4-theme/tests/_render.tsx similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/_render.tsx rename to packages/form-code-generator-bootstrap4-theme/tests/_render.tsx diff --git a/packages/uniforms-bootstrap4-codegen/tests/jest.setup.ts b/packages/form-code-generator-bootstrap4-theme/tests/jest.setup.ts similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/jest.setup.ts rename to packages/form-code-generator-bootstrap4-theme/tests/jest.setup.ts diff --git a/packages/uniforms-bootstrap4-codegen/tests/rawJestTransformer.js b/packages/form-code-generator-bootstrap4-theme/tests/rawJestTransformer.js similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tests/rawJestTransformer.js rename to packages/form-code-generator-bootstrap4-theme/tests/rawJestTransformer.js diff --git a/packages/uniforms-bootstrap4-codegen/tsconfig.json b/packages/form-code-generator-bootstrap4-theme/tsconfig.json similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tsconfig.json rename to packages/form-code-generator-bootstrap4-theme/tsconfig.json diff --git a/packages/uniforms-bootstrap4-codegen/tsconfig.tests.json b/packages/form-code-generator-bootstrap4-theme/tsconfig.tests.json similarity index 100% rename from packages/uniforms-bootstrap4-codegen/tsconfig.tests.json rename to packages/form-code-generator-bootstrap4-theme/tsconfig.tests.json diff --git a/packages/uniforms-bootstrap4-codegen/webpack.config.js b/packages/form-code-generator-bootstrap4-theme/webpack.config.js similarity index 100% rename from packages/uniforms-bootstrap4-codegen/webpack.config.js rename to packages/form-code-generator-bootstrap4-theme/webpack.config.js From e2a26bbc7d3e9d7fd0fb4c0cf5375c2dde304ed0 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 10:47:38 -0300 Subject: [PATCH 16/23] Rename uniforms-patternfly-codegen package --- .../LICENSE | 0 .../README.md | 2 +- .../env/index.js | 0 .../jest.config.js | 0 .../package.json | 2 +- .../src/api/index.ts | 0 .../src/api/types.ts | 0 .../src/index.ts | 0 .../src/resources/checkboxGroupFunctions.txt | 0 .../src/resources/dateFunctions.txt | 0 .../src/resources/multipleSelectFunctions.txt | 0 .../src/resources/resources.d.ts | 0 .../src/resources/selectFunctions.txt | 0 .../src/resources/timeFunctions.txt | 0 .../src/uniforms/AutoField.tsx | 0 .../src/uniforms/AutoFields.tsx | 0 .../src/uniforms/AutoForm.tsx | 0 .../src/uniforms/BoolField.tsx | 0 .../src/uniforms/CheckBoxGroupField.tsx | 0 .../src/uniforms/CodeGenContext.tsx | 0 .../src/uniforms/DateField.tsx | 0 .../src/uniforms/NestField.tsx | 0 .../src/uniforms/NumField.tsx | 0 .../src/uniforms/RadioField.tsx | 0 .../src/uniforms/SelectField.tsx | 0 .../src/uniforms/TextField.tsx | 0 .../src/uniforms/UnsupportedField.tsx | 0 .../src/uniforms/index.ts | 0 .../src/uniforms/renderForm.tsx | 0 .../src/uniforms/rendering/FormInputs.tsx | 0 .../src/uniforms/rendering/NestedFieldInput.tsx | 0 .../src/uniforms/rendering/RenderingUtils.tsx | 0 .../src/uniforms/staticCode/staticCodeBlocks.ts | 0 .../src/uniforms/utils/Utils.tsx | 0 .../src/uniforms/utils/dataTypes.ts | 0 .../tests/AutoField.test.tsx | 0 .../tests/AutoFields.test.tsx | 0 .../tests/AutoForm.test.tsx | 0 .../tests/BoolField.test.tsx | 0 .../tests/CheckBoxGroupField.test.tsx | 0 .../tests/DateField.test.tsx | 0 .../tests/NestField.test.tsx | 0 .../tests/NumField.test.tsx | 0 .../tests/RadioField.test.tsx | 0 .../tests/SelectField.test.tsx | 0 .../tests/TestCodegenContextProvider.tsx | 0 .../tests/TextField.test.tsx | 0 .../tests/UnsupportedField.test.tsx | 0 .../tests/__mocks__/styleMock.js | 0 .../tests/__snapshots__/AutoForm.test.tsx.snap | 0 .../tests/__snapshots__/BoolField.test.tsx.snap | 0 .../tests/__snapshots__/CheckBoxGroupField.test.tsx.snap | 0 .../tests/__snapshots__/DateField.test.tsx.snap | 0 .../tests/__snapshots__/NestField.test.tsx.snap | 0 .../tests/__snapshots__/NumField.test.tsx.snap | 0 .../tests/__snapshots__/RadioField.test.tsx.snap | 0 .../tests/__snapshots__/SelectField.test.tsx.snap | 0 .../tests/__snapshots__/TextField.test.tsx.snap | 0 .../tests/__snapshots__/UnsupportedField.test.tsx.snap | 0 .../tests/_createContext.ts | 0 .../tests/_createSchema.ts | 0 .../tests/_render.tsx | 0 .../tests/jest.setup.ts | 0 .../tests/rawJestTransformer.js | 0 .../tsconfig.json | 0 .../tsconfig.tests.json | 0 .../webpack.config.js | 0 67 files changed, 2 insertions(+), 2 deletions(-) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/LICENSE (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/README.md (98%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/env/index.js (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/jest.config.js (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/package.json (97%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/api/index.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/api/types.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/index.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/resources/checkboxGroupFunctions.txt (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/resources/dateFunctions.txt (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/resources/multipleSelectFunctions.txt (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/resources/resources.d.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/resources/selectFunctions.txt (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/resources/timeFunctions.txt (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/AutoField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/AutoFields.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/AutoForm.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/BoolField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/CheckBoxGroupField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/CodeGenContext.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/DateField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/NestField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/NumField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/RadioField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/SelectField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/TextField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/UnsupportedField.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/index.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/renderForm.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/rendering/FormInputs.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/rendering/NestedFieldInput.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/rendering/RenderingUtils.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/staticCode/staticCodeBlocks.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/utils/Utils.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/src/uniforms/utils/dataTypes.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/AutoField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/AutoFields.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/AutoForm.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/BoolField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/CheckBoxGroupField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/DateField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/NestField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/NumField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/RadioField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/SelectField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/TestCodegenContextProvider.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/TextField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/UnsupportedField.test.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__mocks__/styleMock.js (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/AutoForm.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/BoolField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/CheckBoxGroupField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/DateField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/NestField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/NumField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/RadioField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/SelectField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/TextField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/__snapshots__/UnsupportedField.test.tsx.snap (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/_createContext.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/_createSchema.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/_render.tsx (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/jest.setup.ts (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tests/rawJestTransformer.js (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tsconfig.json (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/tsconfig.tests.json (100%) rename packages/{uniforms-patternfly-codegen => form-code-generator-patternfly-theme}/webpack.config.js (100%) diff --git a/packages/uniforms-patternfly-codegen/LICENSE b/packages/form-code-generator-patternfly-theme/LICENSE similarity index 100% rename from packages/uniforms-patternfly-codegen/LICENSE rename to packages/form-code-generator-patternfly-theme/LICENSE diff --git a/packages/uniforms-patternfly-codegen/README.md b/packages/form-code-generator-patternfly-theme/README.md similarity index 98% rename from packages/uniforms-patternfly-codegen/README.md rename to packages/form-code-generator-patternfly-theme/README.md index 9945bbde223..86228787012 100644 --- a/packages/uniforms-patternfly-codegen/README.md +++ b/packages/form-code-generator-patternfly-theme/README.md @@ -15,7 +15,7 @@ under the License. --> -## Uniforms Patternfly Codegen +## Form Code Generator PatternFly Theme This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Patternfly forms for the `@kie-tools/jbpm-form-generator`. diff --git a/packages/uniforms-patternfly-codegen/env/index.js b/packages/form-code-generator-patternfly-theme/env/index.js similarity index 100% rename from packages/uniforms-patternfly-codegen/env/index.js rename to packages/form-code-generator-patternfly-theme/env/index.js diff --git a/packages/uniforms-patternfly-codegen/jest.config.js b/packages/form-code-generator-patternfly-theme/jest.config.js similarity index 100% rename from packages/uniforms-patternfly-codegen/jest.config.js rename to packages/form-code-generator-patternfly-theme/jest.config.js diff --git a/packages/uniforms-patternfly-codegen/package.json b/packages/form-code-generator-patternfly-theme/package.json similarity index 97% rename from packages/uniforms-patternfly-codegen/package.json rename to packages/form-code-generator-patternfly-theme/package.json index bf18199749a..521ab10cafe 100644 --- a/packages/uniforms-patternfly-codegen/package.json +++ b/packages/form-code-generator-patternfly-theme/package.json @@ -1,5 +1,5 @@ { - "name": "@kie-tools/uniforms-patternfly-codegen", + "name": "@kie-tools/form-code-generator-patternfly-theme", "version": "0.0.0", "description": "", "license": "Apache-2.0", diff --git a/packages/uniforms-patternfly-codegen/src/api/index.ts b/packages/form-code-generator-patternfly-theme/src/api/index.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/api/index.ts rename to packages/form-code-generator-patternfly-theme/src/api/index.ts diff --git a/packages/uniforms-patternfly-codegen/src/api/types.ts b/packages/form-code-generator-patternfly-theme/src/api/types.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/api/types.ts rename to packages/form-code-generator-patternfly-theme/src/api/types.ts diff --git a/packages/uniforms-patternfly-codegen/src/index.ts b/packages/form-code-generator-patternfly-theme/src/index.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/index.ts rename to packages/form-code-generator-patternfly-theme/src/index.ts diff --git a/packages/uniforms-patternfly-codegen/src/resources/checkboxGroupFunctions.txt b/packages/form-code-generator-patternfly-theme/src/resources/checkboxGroupFunctions.txt similarity index 100% rename from packages/uniforms-patternfly-codegen/src/resources/checkboxGroupFunctions.txt rename to packages/form-code-generator-patternfly-theme/src/resources/checkboxGroupFunctions.txt diff --git a/packages/uniforms-patternfly-codegen/src/resources/dateFunctions.txt b/packages/form-code-generator-patternfly-theme/src/resources/dateFunctions.txt similarity index 100% rename from packages/uniforms-patternfly-codegen/src/resources/dateFunctions.txt rename to packages/form-code-generator-patternfly-theme/src/resources/dateFunctions.txt diff --git a/packages/uniforms-patternfly-codegen/src/resources/multipleSelectFunctions.txt b/packages/form-code-generator-patternfly-theme/src/resources/multipleSelectFunctions.txt similarity index 100% rename from packages/uniforms-patternfly-codegen/src/resources/multipleSelectFunctions.txt rename to packages/form-code-generator-patternfly-theme/src/resources/multipleSelectFunctions.txt diff --git a/packages/uniforms-patternfly-codegen/src/resources/resources.d.ts b/packages/form-code-generator-patternfly-theme/src/resources/resources.d.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/resources/resources.d.ts rename to packages/form-code-generator-patternfly-theme/src/resources/resources.d.ts diff --git a/packages/uniforms-patternfly-codegen/src/resources/selectFunctions.txt b/packages/form-code-generator-patternfly-theme/src/resources/selectFunctions.txt similarity index 100% rename from packages/uniforms-patternfly-codegen/src/resources/selectFunctions.txt rename to packages/form-code-generator-patternfly-theme/src/resources/selectFunctions.txt diff --git a/packages/uniforms-patternfly-codegen/src/resources/timeFunctions.txt b/packages/form-code-generator-patternfly-theme/src/resources/timeFunctions.txt similarity index 100% rename from packages/uniforms-patternfly-codegen/src/resources/timeFunctions.txt rename to packages/form-code-generator-patternfly-theme/src/resources/timeFunctions.txt diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/AutoField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/AutoField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/AutoField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/AutoField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/AutoFields.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/AutoFields.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/AutoFields.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/AutoFields.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/AutoForm.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/AutoForm.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/AutoForm.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/AutoForm.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/BoolField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/BoolField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/BoolField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/BoolField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/CheckBoxGroupField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/CheckBoxGroupField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/CheckBoxGroupField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/CheckBoxGroupField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/CodeGenContext.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/CodeGenContext.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/CodeGenContext.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/CodeGenContext.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/DateField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/DateField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/DateField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/DateField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/NestField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/NestField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/NestField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/NestField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/NumField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/NumField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/NumField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/NumField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/RadioField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/RadioField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/RadioField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/RadioField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/SelectField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/SelectField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/SelectField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/SelectField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/TextField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/TextField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/TextField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/TextField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/UnsupportedField.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/UnsupportedField.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/UnsupportedField.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/UnsupportedField.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/index.ts b/packages/form-code-generator-patternfly-theme/src/uniforms/index.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/index.ts rename to packages/form-code-generator-patternfly-theme/src/uniforms/index.ts diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/renderForm.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/renderForm.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/renderForm.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/renderForm.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/rendering/FormInputs.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/rendering/FormInputs.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/rendering/FormInputs.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/rendering/FormInputs.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/rendering/NestedFieldInput.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/rendering/NestedFieldInput.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/rendering/NestedFieldInput.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/rendering/NestedFieldInput.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/rendering/RenderingUtils.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/rendering/RenderingUtils.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/rendering/RenderingUtils.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/rendering/RenderingUtils.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/staticCode/staticCodeBlocks.ts b/packages/form-code-generator-patternfly-theme/src/uniforms/staticCode/staticCodeBlocks.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/staticCode/staticCodeBlocks.ts rename to packages/form-code-generator-patternfly-theme/src/uniforms/staticCode/staticCodeBlocks.ts diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/utils/Utils.tsx b/packages/form-code-generator-patternfly-theme/src/uniforms/utils/Utils.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/utils/Utils.tsx rename to packages/form-code-generator-patternfly-theme/src/uniforms/utils/Utils.tsx diff --git a/packages/uniforms-patternfly-codegen/src/uniforms/utils/dataTypes.ts b/packages/form-code-generator-patternfly-theme/src/uniforms/utils/dataTypes.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/src/uniforms/utils/dataTypes.ts rename to packages/form-code-generator-patternfly-theme/src/uniforms/utils/dataTypes.ts diff --git a/packages/uniforms-patternfly-codegen/tests/AutoField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/AutoField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/AutoField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/AutoField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/AutoFields.test.tsx b/packages/form-code-generator-patternfly-theme/tests/AutoFields.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/AutoFields.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/AutoFields.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/AutoForm.test.tsx b/packages/form-code-generator-patternfly-theme/tests/AutoForm.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/AutoForm.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/AutoForm.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/BoolField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/BoolField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/BoolField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/BoolField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/CheckBoxGroupField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/CheckBoxGroupField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/CheckBoxGroupField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/CheckBoxGroupField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/DateField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/DateField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/DateField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/DateField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/NestField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/NestField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/NestField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/NestField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/NumField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/NumField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/NumField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/NumField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/RadioField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/RadioField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/RadioField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/RadioField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/SelectField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/SelectField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/SelectField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/SelectField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/TestCodegenContextProvider.tsx b/packages/form-code-generator-patternfly-theme/tests/TestCodegenContextProvider.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/TestCodegenContextProvider.tsx rename to packages/form-code-generator-patternfly-theme/tests/TestCodegenContextProvider.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/TextField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/TextField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/TextField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/TextField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/UnsupportedField.test.tsx b/packages/form-code-generator-patternfly-theme/tests/UnsupportedField.test.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/UnsupportedField.test.tsx rename to packages/form-code-generator-patternfly-theme/tests/UnsupportedField.test.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/__mocks__/styleMock.js b/packages/form-code-generator-patternfly-theme/tests/__mocks__/styleMock.js similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__mocks__/styleMock.js rename to packages/form-code-generator-patternfly-theme/tests/__mocks__/styleMock.js diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/AutoForm.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/AutoForm.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/AutoForm.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/AutoForm.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/BoolField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/BoolField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/BoolField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/BoolField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/CheckBoxGroupField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/CheckBoxGroupField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/CheckBoxGroupField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/CheckBoxGroupField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/DateField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/DateField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/DateField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/DateField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/NestField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/NestField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/NestField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/NestField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/NumField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/NumField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/NumField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/NumField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/RadioField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/RadioField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/RadioField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/RadioField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/SelectField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/SelectField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/SelectField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/SelectField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/TextField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/TextField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/TextField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/TextField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/__snapshots__/UnsupportedField.test.tsx.snap b/packages/form-code-generator-patternfly-theme/tests/__snapshots__/UnsupportedField.test.tsx.snap similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/__snapshots__/UnsupportedField.test.tsx.snap rename to packages/form-code-generator-patternfly-theme/tests/__snapshots__/UnsupportedField.test.tsx.snap diff --git a/packages/uniforms-patternfly-codegen/tests/_createContext.ts b/packages/form-code-generator-patternfly-theme/tests/_createContext.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/_createContext.ts rename to packages/form-code-generator-patternfly-theme/tests/_createContext.ts diff --git a/packages/uniforms-patternfly-codegen/tests/_createSchema.ts b/packages/form-code-generator-patternfly-theme/tests/_createSchema.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/_createSchema.ts rename to packages/form-code-generator-patternfly-theme/tests/_createSchema.ts diff --git a/packages/uniforms-patternfly-codegen/tests/_render.tsx b/packages/form-code-generator-patternfly-theme/tests/_render.tsx similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/_render.tsx rename to packages/form-code-generator-patternfly-theme/tests/_render.tsx diff --git a/packages/uniforms-patternfly-codegen/tests/jest.setup.ts b/packages/form-code-generator-patternfly-theme/tests/jest.setup.ts similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/jest.setup.ts rename to packages/form-code-generator-patternfly-theme/tests/jest.setup.ts diff --git a/packages/uniforms-patternfly-codegen/tests/rawJestTransformer.js b/packages/form-code-generator-patternfly-theme/tests/rawJestTransformer.js similarity index 100% rename from packages/uniforms-patternfly-codegen/tests/rawJestTransformer.js rename to packages/form-code-generator-patternfly-theme/tests/rawJestTransformer.js diff --git a/packages/uniforms-patternfly-codegen/tsconfig.json b/packages/form-code-generator-patternfly-theme/tsconfig.json similarity index 100% rename from packages/uniforms-patternfly-codegen/tsconfig.json rename to packages/form-code-generator-patternfly-theme/tsconfig.json diff --git a/packages/uniforms-patternfly-codegen/tsconfig.tests.json b/packages/form-code-generator-patternfly-theme/tsconfig.tests.json similarity index 100% rename from packages/uniforms-patternfly-codegen/tsconfig.tests.json rename to packages/form-code-generator-patternfly-theme/tsconfig.tests.json diff --git a/packages/uniforms-patternfly-codegen/webpack.config.js b/packages/form-code-generator-patternfly-theme/webpack.config.js similarity index 100% rename from packages/uniforms-patternfly-codegen/webpack.config.js rename to packages/form-code-generator-patternfly-theme/webpack.config.js From faee120534a9a3e9dad6f382e382e795efc189f9 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 10:48:07 -0300 Subject: [PATCH 17/23] Rename to jbpm-form-code-generator-theme --- .../README.md | 8 +-- .../env/index.js | 0 .../jest.config.js | 0 .../package.json | 7 ++- .../src/getUniformsSchema.ts | 0 .../src/inputSanitizationUtil.ts | 0 .../jbpmBootstrap4FormCodeGeneratorTheme.ts} | 63 ++++++++++--------- .../jbpmPatternflyFormCodeGeneratorTheme.ts} | 54 +++++++++------- .../src/types.ts | 41 +----------- .../Bootstrap4FormGenerationTool.test.ts | 6 +- .../tests/JbpmFormGenerator.test.ts | 0 .../PatternflyFormGenerationTool.test.ts | 6 +- .../tests/__mocks__/bootstrap.ts | 0 .../tests/__mocks__/partternfly.ts | 0 .../tests/getUniformsSchema.test.ts | 0 .../tests/jest.setup.ts | 0 .../tsconfig.json | 0 .../tsconfig.tests.json | 0 .../src/JbpmFormGenerator.ts | 61 ------------------ 19 files changed, 79 insertions(+), 167 deletions(-) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/README.md (95%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/env/index.js (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/jest.config.js (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/package.json (86%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/src/getUniformsSchema.ts (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/src/inputSanitizationUtil.ts (100%) rename packages/{jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts => jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts} (57%) rename packages/{jbpm-form-generator/src/generators/PatternflyFormGenerator.ts => jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts} (54%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/src/types.ts (54%) rename packages/{jbpm-form-generator/tests/generators => jbpm-form-code-generator-themes/tests}/Bootstrap4FormGenerationTool.test.ts (91%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tests/JbpmFormGenerator.test.ts (100%) rename packages/{jbpm-form-generator/tests/generators => jbpm-form-code-generator-themes/tests}/PatternflyFormGenerationTool.test.ts (91%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tests/__mocks__/bootstrap.ts (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tests/__mocks__/partternfly.ts (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tests/getUniformsSchema.test.ts (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tests/jest.setup.ts (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tsconfig.json (100%) rename packages/{jbpm-form-generator => jbpm-form-code-generator-themes}/tsconfig.tests.json (100%) delete mode 100644 packages/jbpm-form-generator/src/JbpmFormGenerator.ts diff --git a/packages/jbpm-form-generator/README.md b/packages/jbpm-form-code-generator-themes/README.md similarity index 95% rename from packages/jbpm-form-generator/README.md rename to packages/jbpm-form-code-generator-themes/README.md index d961fd8c0da..439413f7e4c 100644 --- a/packages/jbpm-form-generator/README.md +++ b/packages/jbpm-form-code-generator-themes/README.md @@ -17,9 +17,9 @@ ## jBPM Form Generator -This is a utility library to help generating forms in differents formats for BPMN processes and User Tasks in your Kogito projects. +This is a utility library to help generating form code in differents formats for BPMN processes and User Tasks in your Kogito projects. -### How does it work? +## How it works? When building a Kogito project, Kogito generates JSON Schemas to represent the data models for both Processes and User Tasks. @@ -74,8 +74,8 @@ To do so, just add the following dependency in your project `pom.xml`: ```xml - org.kie.kogito - runtime-tools-quarkus-extension + org.jbpm + jbpm-quarkus-devui ${version} ``` diff --git a/packages/jbpm-form-generator/env/index.js b/packages/jbpm-form-code-generator-themes/env/index.js similarity index 100% rename from packages/jbpm-form-generator/env/index.js rename to packages/jbpm-form-code-generator-themes/env/index.js diff --git a/packages/jbpm-form-generator/jest.config.js b/packages/jbpm-form-code-generator-themes/jest.config.js similarity index 100% rename from packages/jbpm-form-generator/jest.config.js rename to packages/jbpm-form-code-generator-themes/jest.config.js diff --git a/packages/jbpm-form-generator/package.json b/packages/jbpm-form-code-generator-themes/package.json similarity index 86% rename from packages/jbpm-form-generator/package.json rename to packages/jbpm-form-code-generator-themes/package.json index e84c5144f70..e68c35313c7 100644 --- a/packages/jbpm-form-generator/package.json +++ b/packages/jbpm-form-code-generator-themes/package.json @@ -1,5 +1,5 @@ { - "name": "@kie-tools/jbpm-form-generator", + "name": "@kie-tools/jbpm-form-code-generator-themes", "version": "0.0.0", "description": "", "license": "Apache-2.0", @@ -24,8 +24,9 @@ "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, "dependencies": { - "@kie-tools/uniforms-bootstrap4-codegen": "workspace:*", - "@kie-tools/uniforms-patternfly-codegen": "workspace:*", + "@kie-tools/form-code-generator": "workspace:*", + "@kie-tools/form-code-generator-bootstrap4-theme": "workspace:*", + "@kie-tools/form-code-generator-patternfly-theme": "workspace:*", "lodash": "^4.17.21", "uniforms": "^3.10.2", "uniforms-bridge-json-schema": "^3.10.2" diff --git a/packages/jbpm-form-generator/src/getUniformsSchema.ts b/packages/jbpm-form-code-generator-themes/src/getUniformsSchema.ts similarity index 100% rename from packages/jbpm-form-generator/src/getUniformsSchema.ts rename to packages/jbpm-form-code-generator-themes/src/getUniformsSchema.ts diff --git a/packages/jbpm-form-generator/src/inputSanitizationUtil.ts b/packages/jbpm-form-code-generator-themes/src/inputSanitizationUtil.ts similarity index 100% rename from packages/jbpm-form-generator/src/inputSanitizationUtil.ts rename to packages/jbpm-form-code-generator-themes/src/inputSanitizationUtil.ts diff --git a/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts b/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts similarity index 57% rename from packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts rename to packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts index 7704c1bf4b3..d14dbd24b78 100644 --- a/packages/jbpm-form-generator/src/generators/Bootstrap4FormGenerator.ts +++ b/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts @@ -17,39 +17,33 @@ * under the License. */ +import { renderForm } from "../../form-code-generator-bootstrap4-theme/src"; import unescape from "lodash/unescape"; -import { FormAssetType, FormAsset, FormStyle, FormConfiguration, FormGenerator, FormSchema } from "../types"; -import { renderForm } from "@kie-tools/uniforms-bootstrap4-codegen/dist"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; -import { getUniformsSchema } from "../getUniformsSchema"; -import { inputSanitizationUtil } from "../inputSanitizationUtil"; +import { getUniformsSchema } from "./getUniformsSchema"; +import { inputSanitizationUtil } from "./inputSanitizationUtil"; +import { FormCodeGeneratorTheme, FormAsset } from "@kie-tools/form-code-generator/dist/types"; +import { JbpmFormAssetBase } from "./types"; export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"; export const BOOTSTRAP4_JS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"; export const JQUERY_URL = "https://code.jquery.com/jquery-3.2.1.slim.min.js"; -export class Bootstrap4FormConfiguration implements FormConfiguration { - public readonly schema: string; +const BOOTSTRAP4_STYLE = "bootstrap"; +const BOOTSTRAP4_FILE_EXT = "html"; - constructor(formSchema: any) { - this.schema = JSON.stringify(formSchema); - } +export type Bootstrap4Style = typeof BOOTSTRAP4_STYLE; +export type Bootstrap4FileExt = typeof BOOTSTRAP4_FILE_EXT; - public resources = { - styles: { - "bootstrap.min.css": BOOTSTRAP4_CSS_URL, - }, - scripts: { - "jquery.js": JQUERY_URL, - "bootstrap.bundle.min.js": BOOTSTRAP4_JS_URL, - }, - }; -} +export interface Bootstrap4FormAsset extends FormAsset, JbpmFormAssetBase {} -export class Bootstrap4FormGenerator implements FormGenerator { - public type: string = FormStyle.BOOTSTRAP; - - public generate(formSchema: FormSchema): FormAsset { +export const jbpmBootstrap4FormCodeGeneratorTheme: FormCodeGeneratorTheme< + Bootstrap4FileExt, + Bootstrap4Style, + Bootstrap4FormAsset +> = { + theme: BOOTSTRAP4_STYLE, + generate: (formSchema) => { const uniformsSchema = getUniformsSchema(formSchema.schema); const form = renderForm({ id: formSchema.name, @@ -61,11 +55,22 @@ export class Bootstrap4FormGenerator implements FormGenerator { return { id: formSchema.name, sanitizedId: inputSanitizationUtil(formSchema.name), - assetName: `${formSchema.name}.${FormAssetType.HTML}`, - sanitizedAssetName: `${inputSanitizationUtil(formSchema.name)}.${FormAssetType.HTML}`, - type: FormAssetType.HTML, + assetName: `${formSchema.name}.${BOOTSTRAP4_FILE_EXT}`, + sanitizedAssetName: `${inputSanitizationUtil(formSchema.name)}.${BOOTSTRAP4_FILE_EXT}`, + type: BOOTSTRAP4_FILE_EXT, content: unescape(form), - config: new Bootstrap4FormConfiguration(formSchema.schema), + config: { + schema: JSON.stringify(formSchema), + resources: { + styles: { + "bootstrap.min.css": BOOTSTRAP4_CSS_URL, + }, + scripts: { + "jquery.js": JQUERY_URL, + "bootstrap.bundle.min.js": BOOTSTRAP4_JS_URL, + }, + }, + }, }; - } -} + }, +}; diff --git a/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts b/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts similarity index 54% rename from packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts rename to packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts index df70bcd506d..4fdcd1cbfb4 100644 --- a/packages/jbpm-form-generator/src/generators/PatternflyFormGenerator.ts +++ b/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts @@ -17,30 +17,30 @@ * under the License. */ +import { FormAsset } from "@kie-tools/form-code-generator/dist/types"; +import { renderForm } from "@kie-tools/form-code-generator-patternfly-theme/dist"; import unescape from "lodash/unescape"; -import { FormAssetType, FormAsset, FormStyle, FormConfiguration, FormGenerator, FormSchema } from "../types"; -import { renderForm } from "@kie-tools/uniforms-patternfly-codegen/dist"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; -import { getUniformsSchema } from "../getUniformsSchema"; -import { inputSanitizationUtil } from "../inputSanitizationUtil"; +import { getUniformsSchema } from "./getUniformsSchema"; +import { inputSanitizationUtil } from "./inputSanitizationUtil"; +import { JbpmFormAssetBase } from "./types"; +import { FormCodeGeneratorTheme } from "@kie-tools/form-code-generator/dist/types"; -export class PatternflyFormConfiguration implements FormConfiguration { - public readonly schema: string; +const PATTERNFLY_STYLE = "patternfly"; +const PATTERNFLY_FILE_EXT = "tsx"; - constructor(formSchema: any) { - this.schema = JSON.stringify(formSchema); - } +export type PatternflyStyle = typeof PATTERNFLY_STYLE; +export type PatternflyFileExt = typeof PATTERNFLY_FILE_EXT; - public resources = { - styles: {}, - scripts: {}, - }; -} +export interface PatternflyFormAsset extends FormAsset, JbpmFormAssetBase {} -export class PatternflyFormGenerator implements FormGenerator { - public type: string = FormStyle.PATTERNFLY; - - public generate(formSchema: FormSchema): FormAsset { +export const jbpmBootstrap4FormCodeGeneratorTheme: FormCodeGeneratorTheme< + PatternflyFileExt, + PatternflyStyle, + PatternflyFormAsset +> = { + theme: PATTERNFLY_STYLE, + generate: (formSchema) => { const uniformsSchema = getUniformsSchema(formSchema.schema); const form = renderForm({ id: formSchema.name, @@ -52,11 +52,17 @@ export class PatternflyFormGenerator implements FormGenerator { return { id: formSchema.name, sanitizedId: inputSanitizationUtil(formSchema.name), - assetName: `${formSchema.name}.${FormAssetType.TSX}`, - sanitizedAssetName: `${inputSanitizationUtil(formSchema.name)}.${FormAssetType.TSX}`, - type: FormAssetType.TSX, + assetName: `${formSchema.name}.${PATTERNFLY_FILE_EXT}`, + sanitizedAssetName: `${inputSanitizationUtil(formSchema.name)}.${PATTERNFLY_FILE_EXT}`, + type: PATTERNFLY_FILE_EXT, content: unescape(form), - config: new PatternflyFormConfiguration(formSchema.schema), + config: { + schema: JSON.stringify(formSchema), + resources: { + styles: {}, + scripts: {}, + }, + }, }; - } -} + }, +}; diff --git a/packages/jbpm-form-generator/src/types.ts b/packages/jbpm-form-code-generator-themes/src/types.ts similarity index 54% rename from packages/jbpm-form-generator/src/types.ts rename to packages/jbpm-form-code-generator-themes/src/types.ts index bf17dfcef82..8560d8fb3bf 100644 --- a/packages/jbpm-form-generator/src/types.ts +++ b/packages/jbpm-form-code-generator-themes/src/types.ts @@ -17,46 +17,7 @@ * under the License. */ -export interface FormSchema { - name: string; - schema: any; -} - -export enum FormStyle { - PATTERNFLY = "patternfly", - BOOTSTRAP = "bootstrap", -} - -export enum FormAssetType { - HTML = "html", - TSX = "tsx", -} - -export interface FormResources { - styles: Record; - scripts: Record; -} - -export interface FormConfiguration { - schema: string; - resources: FormResources; -} - -export interface FormAsset { - id: string; +export interface JbpmFormAssetBase { sanitizedId: string; - assetName: string; sanitizedAssetName: string; - content: string; - type: FormAssetType | string; - config: FormConfiguration; -} - -export interface FormGenerationError { - error: Error; -} - -export interface FormGenerator { - type: string; - generate: (formSchema: FormSchema) => FormAsset | FormGenerationError; } diff --git a/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts b/packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts similarity index 91% rename from packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts rename to packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts index a507debe002..eed5f7bb2d4 100644 --- a/packages/jbpm-form-generator/tests/generators/Bootstrap4FormGenerationTool.test.ts +++ b/packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts @@ -17,9 +17,9 @@ * under the License. */ -import { FormAsset } from "../../dist/types"; -import { ApplyForVisaSchema } from "../__mocks__/bootstrap"; -import { Bootstrap4FormConfiguration, Bootstrap4FormGenerator } from "../../dist/generators/Bootstrap4FormGenerator"; +import { FormAsset } from "../dist/types"; +import { ApplyForVisaSchema } from "./__mocks__/bootstrap"; +import { Bootstrap4FormConfiguration, Bootstrap4FormGenerator } from "../dist/generators/Bootstrap4FormGenerator"; describe("Bootstrap4FormGenerator tests", () => { it("Generate", () => { diff --git a/packages/jbpm-form-generator/tests/JbpmFormGenerator.test.ts b/packages/jbpm-form-code-generator-themes/tests/JbpmFormGenerator.test.ts similarity index 100% rename from packages/jbpm-form-generator/tests/JbpmFormGenerator.test.ts rename to packages/jbpm-form-code-generator-themes/tests/JbpmFormGenerator.test.ts diff --git a/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts b/packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts similarity index 91% rename from packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts rename to packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts index 39722b5dafc..2ac81ead631 100644 --- a/packages/jbpm-form-generator/tests/generators/PatternflyFormGenerationTool.test.ts +++ b/packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts @@ -17,9 +17,9 @@ * under the License. */ -import { PatternflyFormConfiguration, PatternflyFormGenerator } from "../../dist/generators/PatternflyFormGenerator"; -import { FormAsset } from "../../dist/types"; -import { ApplyForVisaSchema } from "../__mocks__/partternfly"; +import { PatternflyFormConfiguration, PatternflyFormGenerator } from "../dist/generators/PatternflyFormGenerator"; +import { FormAsset } from "../dist/types"; +import { ApplyForVisaSchema } from "./__mocks__/partternfly"; describe("PatternflyFormGenerator tests", () => { it("Generate", () => { diff --git a/packages/jbpm-form-generator/tests/__mocks__/bootstrap.ts b/packages/jbpm-form-code-generator-themes/tests/__mocks__/bootstrap.ts similarity index 100% rename from packages/jbpm-form-generator/tests/__mocks__/bootstrap.ts rename to packages/jbpm-form-code-generator-themes/tests/__mocks__/bootstrap.ts diff --git a/packages/jbpm-form-generator/tests/__mocks__/partternfly.ts b/packages/jbpm-form-code-generator-themes/tests/__mocks__/partternfly.ts similarity index 100% rename from packages/jbpm-form-generator/tests/__mocks__/partternfly.ts rename to packages/jbpm-form-code-generator-themes/tests/__mocks__/partternfly.ts diff --git a/packages/jbpm-form-generator/tests/getUniformsSchema.test.ts b/packages/jbpm-form-code-generator-themes/tests/getUniformsSchema.test.ts similarity index 100% rename from packages/jbpm-form-generator/tests/getUniformsSchema.test.ts rename to packages/jbpm-form-code-generator-themes/tests/getUniformsSchema.test.ts diff --git a/packages/jbpm-form-generator/tests/jest.setup.ts b/packages/jbpm-form-code-generator-themes/tests/jest.setup.ts similarity index 100% rename from packages/jbpm-form-generator/tests/jest.setup.ts rename to packages/jbpm-form-code-generator-themes/tests/jest.setup.ts diff --git a/packages/jbpm-form-generator/tsconfig.json b/packages/jbpm-form-code-generator-themes/tsconfig.json similarity index 100% rename from packages/jbpm-form-generator/tsconfig.json rename to packages/jbpm-form-code-generator-themes/tsconfig.json diff --git a/packages/jbpm-form-generator/tsconfig.tests.json b/packages/jbpm-form-code-generator-themes/tsconfig.tests.json similarity index 100% rename from packages/jbpm-form-generator/tsconfig.tests.json rename to packages/jbpm-form-code-generator-themes/tsconfig.tests.json diff --git a/packages/jbpm-form-generator/src/JbpmFormGenerator.ts b/packages/jbpm-form-generator/src/JbpmFormGenerator.ts deleted file mode 100644 index 1167042cb9f..00000000000 --- a/packages/jbpm-form-generator/src/JbpmFormGenerator.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Bootstrap4FormGenerator } from "./generators/Bootstrap4FormGenerator"; -import { PatternflyFormGenerator } from "./generators/PatternflyFormGenerator"; -import { FormGenerator, FormSchema, FormAsset, FormGenerationError } from "./types"; - -export interface Args { - type: string; - formSchemas: FormSchema[]; -} - -export class JbpmFormGenerator { - private formGeneratorIndex: Map = new Map(); - - constructor() { - this.registerFormGeneratorType(new PatternflyFormGenerator()); - this.registerFormGeneratorType(new Bootstrap4FormGenerator()); - } - - public registerFormGeneratorType(formGenerator: FormGenerator) { - this.formGeneratorIndex.set(formGenerator.type, formGenerator); - } - - public getFormGenerator(type: string): FormGenerator { - const formGenerator = this.formGeneratorIndex.get(type); - if (formGenerator) { - return formGenerator; - } - throw new Error(`Unsupported form generation type: "${type}"`); - } - - public generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] { - const formGenerator = this.getFormGenerator(type); - return formSchemas.reduce((generatedForms: (FormAsset | FormGenerationError)[], formSchema) => { - try { - generatedForms.push(formGenerator.generate(formSchema)); - } catch (error) { - console.error(`Error generating form: ${error}`); - generatedForms.push({ error }); - } - return generatedForms; - }, []); - } -} From 302b748811bd89588729a733b6b6321e808b4cf1 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 10:52:50 -0300 Subject: [PATCH 18/23] Update pnpm-lock.yaml --- pnpm-lock.yaml | 1625 ++++++++++++++++++----------------------------- repo/graph.dot | 31 +- repo/graph.json | 84 ++- 3 files changed, 690 insertions(+), 1050 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eeb39ac83c0..de2f132980d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4704,6 +4704,309 @@ importers: specifier: ^5.5.3 version: 5.5.3 + packages/form-code-generator: + dependencies: + lodash: + specifier: ^4.17.21 + version: 4.17.21 + uniforms: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + uniforms-bridge-json-schema: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + devDependencies: + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/jest-base': + specifier: workspace:* + version: link:../jest-base + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/jest-when': + specifier: ^3.5.5 + version: 3.5.5 + '@types/lodash': + specifier: ^4.14.168 + version: 4.14.202 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + jest-when: + specifier: ^3.6.0 + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + + packages/form-code-generator-bootstrap4-theme: + dependencies: + lodash: + specifier: ^4.17.21 + version: 4.17.21 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + react: + specifier: '>=17.0.2 <19.0.0' + version: 17.0.2 + react-dom: + specifier: '>=17.0.2 <19.0.0' + version: 17.0.2(react@17.0.2) + underscore: + specifier: ^1.13.1 + version: 1.13.1 + uniforms: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + uniforms-bridge-simple-schema-2: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + devDependencies: + '@babel/core': + specifier: ^7.16.0 + version: 7.16.12 + '@babel/preset-env': + specifier: ^7.16.0 + version: 7.16.11(@babel/core@7.16.12) + '@babel/preset-react': + specifier: ^7.16.0 + version: 7.16.0(@babel/core@7.16.12) + '@kie-tools-core/webpack-base': + specifier: workspace:* + version: link:../webpack-base + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/jest-base': + specifier: workspace:* + version: link:../jest-base + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + '@testing-library/react': + specifier: ^12.1.5 + version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/jest-when': + specifier: ^3.5.5 + version: 3.5.5 + '@types/lodash': + specifier: ^4.14.168 + version: 4.14.169 + '@types/prettier': + specifier: ^2.7.3 + version: 2.7.3 + '@types/react': + specifier: ^17.0.6 + version: 17.0.21 + '@types/react-dom': + specifier: ^17.0.5 + version: 17.0.8 + '@types/simpl-schema': + specifier: ^1.12.0 + version: 1.12.0 + '@types/underscore': + specifier: ^1.11.2 + version: 1.11.2 + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.94.0) + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + jest-when: + specifier: ^3.6.0 + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + raw-loader: + specifier: ^4.0.2 + version: 4.0.2(webpack@5.94.0) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + simpl-schema: + specifier: ^1.12.0 + version: 1.12.0 + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + webpack: + specifier: ^5.94.0 + version: 5.94.0 + webpack-dev-server: + specifier: ^4.15.1 + version: 4.15.1(webpack@5.94.0) + webpack-merge: + specifier: ^5.9.0 + version: 5.9.0 + webpack-node-externals: + specifier: ^3.0.0 + version: 3.0.0 + + packages/form-code-generator-patternfly-theme: + dependencies: + lodash: + specifier: ^4.17.21 + version: 4.17.21 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + react: + specifier: '>=17.0.2 <19.0.0' + version: 17.0.2 + react-dom: + specifier: '>=17.0.2 <19.0.0' + version: 17.0.2(react@17.0.2) + uniforms: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + uniforms-bridge-simple-schema-2: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + devDependencies: + '@babel/core': + specifier: ^7.16.0 + version: 7.16.12 + '@babel/preset-env': + specifier: ^7.16.0 + version: 7.16.11(@babel/core@7.16.12) + '@babel/preset-react': + specifier: ^7.16.0 + version: 7.16.0(@babel/core@7.16.12) + '@kie-tools-core/webpack-base': + specifier: workspace:* + version: link:../webpack-base + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/jest-base': + specifier: workspace:* + version: link:../jest-base + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + '@testing-library/react': + specifier: ^12.1.5 + version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/jest-when': + specifier: ^3.5.5 + version: 3.5.5 + '@types/lodash': + specifier: ^4.14.168 + version: 4.14.169 + '@types/prettier': + specifier: ^2.7.3 + version: 2.7.3 + '@types/react': + specifier: ^17.0.6 + version: 17.0.21 + '@types/react-dom': + specifier: ^17.0.5 + version: 17.0.8 + '@types/simpl-schema': + specifier: ^1.12.0 + version: 1.12.0 + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.94.0(webpack-cli@4.10.0)) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + jest-when: + specifier: ^3.6.0 + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + raw-loader: + specifier: ^4.0.2 + version: 4.0.2(webpack@5.94.0(webpack-cli@4.10.0)) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + simpl-schema: + specifier: ^1.12.0 + version: 1.12.0 + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + webpack: + specifier: ^5.94.0 + version: 5.94.0(webpack-cli@4.10.0) + webpack-cli: + specifier: ^4.10.0 + version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) + webpack-dev-server: + specifier: ^4.15.1 + version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) + webpack-merge: + specifier: ^5.9.0 + version: 5.9.0 + webpack-node-externals: + specifier: ^3.0.0 + version: 3.0.0 + packages/form-dmn: dependencies: '@kie-tools-core/i18n': @@ -5121,8 +5424,81 @@ importers: specifier: ^5.9.0 version: 5.9.0 + packages/jbpm-form-code-generator-themes: + dependencies: + '@kie-tools/form-code-generator': + specifier: workspace:* + version: link:../form-code-generator + '@kie-tools/form-code-generator-bootstrap4-theme': + specifier: workspace:* + version: link:../form-code-generator-bootstrap4-theme + '@kie-tools/form-code-generator-patternfly-theme': + specifier: workspace:* + version: link:../form-code-generator-patternfly-theme + lodash: + specifier: ^4.17.21 + version: 4.17.21 + uniforms: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + uniforms-bridge-json-schema: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) + devDependencies: + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/jest-base': + specifier: workspace:* + version: link:../jest-base + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/jest-when': + specifier: ^3.5.5 + version: 3.5.5 + '@types/lodash': + specifier: ^4.14.168 + version: 4.14.202 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + jest-when: + specifier: ^3.6.0 + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + ts-jest: + specifier: ^29.1.5 + version: 29.1.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + typescript: + specifier: ^5.5.3 + version: 5.5.3 + packages/jbpm-form-generator: dependencies: + '@kie-tools/form-generator': + specifier: workspace:* + version: link:../form-generator '@kie-tools/uniforms-bootstrap4-codegen': specifier: workspace:* version: link:../uniforms-bootstrap4-codegen @@ -5153,7 +5529,7 @@ importers: version: link:../tsconfig '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -5165,7 +5541,7 @@ importers: version: 4.14.202 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + version: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -5174,7 +5550,7 @@ importers: version: 16.0.0 jest-when: specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + version: 3.6.0(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -5183,7 +5559,7 @@ importers: version: 1.1.6 ts-jest: specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.1.5(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -11559,127 +11935,6 @@ importers: packages/tsconfig: {} - packages/uniforms-bootstrap4-codegen: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - react: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2 - react-dom: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2(react@17.0.2) - underscore: - specifier: ^1.13.1 - version: 1.13.1 - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-simple-schema-2: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.16.12 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.11(@babel/core@7.16.12) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.16.12) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/jest-base': - specifier: workspace:* - version: link:../jest-base - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@testing-library/react': - specifier: ^12.1.5 - version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/jest-when': - specifier: ^3.5.5 - version: 3.5.5 - '@types/lodash': - specifier: ^4.14.168 - version: 4.14.169 - '@types/prettier': - specifier: ^2.7.3 - version: 2.7.3 - '@types/react': - specifier: ^17.0.6 - version: 17.0.21 - '@types/react-dom': - specifier: ^17.0.5 - version: 17.0.8 - '@types/simpl-schema': - specifier: ^1.12.0 - version: 1.12.0 - '@types/underscore': - specifier: ^1.11.2 - version: 1.11.2 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.94.0) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-when: - specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - raw-loader: - specifier: ^4.0.2 - version: 4.0.2(webpack@5.94.0) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - simpl-schema: - specifier: ^1.12.0 - version: 1.12.0 - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - webpack: - specifier: ^5.94.0 - version: 5.94.0 - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 - packages/uniforms-patternfly: dependencies: '@types/invariant': @@ -11789,124 +12044,6 @@ importers: specifier: ^5.9.0 version: 5.9.0 - packages/uniforms-patternfly-codegen: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - react: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2 - react-dom: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2(react@17.0.2) - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-simple-schema-2: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.16.12 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.11(@babel/core@7.16.12) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.16.12) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/jest-base': - specifier: workspace:* - version: link:../jest-base - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@testing-library/react': - specifier: ^12.1.5 - version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/jest-when': - specifier: ^3.5.5 - version: 3.5.5 - '@types/lodash': - specifier: ^4.14.168 - version: 4.14.169 - '@types/prettier': - specifier: ^2.7.3 - version: 2.7.3 - '@types/react': - specifier: ^17.0.6 - version: 17.0.21 - '@types/react-dom': - specifier: ^17.0.5 - version: 17.0.8 - '@types/simpl-schema': - specifier: ^1.12.0 - version: 1.12.0 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.94.0(webpack-cli@4.10.0)) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-when: - specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - raw-loader: - specifier: ^4.0.2 - version: 4.0.2(webpack@5.94.0(webpack-cli@4.10.0)) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - simpl-schema: - specifier: ^1.12.0 - version: 1.12.0 - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - webpack: - specifier: ^5.94.0 - version: 5.94.0(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 - packages/unitables: dependencies: '@kie-tools-core/i18n': @@ -30726,13 +30863,13 @@ snapshots: '@ardatan/relay-compiler@12.0.0(encoding@0.1.13)(graphql@14.3.1)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 '@babel/runtime': 7.24.7 '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 - babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) + babel-preset-fbjs: 3.4.0(@babel/core@7.24.9) chalk: 4.1.2 fb-watchman: 2.0.1 fbjs: 3.0.2(encoding@0.1.13) @@ -31178,19 +31315,6 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.23.9) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31273,13 +31397,6 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31363,17 +31480,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.6 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31528,16 +31634,6 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - '@babel/helper-module-transforms@7.25.2(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31611,15 +31707,6 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31673,15 +31760,6 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31850,14 +31928,6 @@ snapshots: dependencies: '@babel/types': 7.25.2 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31904,11 +31974,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -31961,15 +32026,6 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -32000,14 +32056,6 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -32064,12 +32112,6 @@ snapshots: '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.18.10) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -32238,14 +32280,14 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.18.10) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.18.10) - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9)': + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.9)': dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.9) '@babel/plugin-proposal-optional-catch-binding@7.16.7(@babel/core@7.16.12)': dependencies: @@ -32641,11 +32683,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33062,11 +33099,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33101,16 +33133,6 @@ snapshots: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33173,15 +33195,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33230,11 +33243,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33275,11 +33283,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33308,14 +33311,6 @@ snapshots: '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33353,15 +33348,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33454,18 +33440,6 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.23.9) - '@babel/traverse': 7.25.3 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33524,12 +33498,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.23.9 - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33572,11 +33540,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33641,12 +33604,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33689,11 +33646,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33722,12 +33674,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33776,14 +33722,6 @@ snapshots: '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33818,12 +33756,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33898,14 +33830,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -33964,15 +33888,6 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34009,12 +33924,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34057,11 +33966,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34090,12 +33994,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34138,11 +34036,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34191,14 +34084,6 @@ snapshots: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34280,15 +34165,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34357,16 +34233,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34423,14 +34289,6 @@ snapshots: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34475,12 +34333,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34523,11 +34375,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34556,12 +34403,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34592,12 +34433,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34637,14 +34472,6 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34697,14 +34524,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34739,12 +34558,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34778,15 +34591,6 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34850,11 +34654,6 @@ snapshots: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34883,14 +34682,6 @@ snapshots: '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34931,16 +34722,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -34991,11 +34772,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35006,9 +34782,9 @@ snapshots: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-constant-elements@7.17.12(@babel/core@7.23.9)': + '@babel/plugin-transform-react-constant-elements@7.17.12(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-transform-react-display-name@7.16.0(@babel/core@7.16.12)': @@ -35046,6 +34822,11 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-react-jsx-development@7.16.0(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 @@ -35081,6 +34862,11 @@ snapshots: '@babel/core': 7.23.9 '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx@7.16.0(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 @@ -35195,6 +34981,12 @@ snapshots: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-regenerator@7.17.9(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 @@ -35229,12 +35021,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - regenerator-transform: 0.15.2 - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35277,11 +35063,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35334,11 +35115,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35385,14 +35161,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35439,11 +35207,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35484,11 +35247,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35529,11 +35287,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35614,11 +35367,6 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35647,12 +35395,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35701,12 +35443,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -35737,12 +35473,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -36254,93 +35984,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-env@7.24.7(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.23.9) - core-js-compat: 3.37.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/preset-env@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/compat-data': 7.25.2 @@ -36675,6 +36318,16 @@ snapshots: '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.23.9) + '@babel/preset-react@7.22.15(@babel/core@7.24.9)': + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.24.9) + '@babel/preset-typescript@7.23.0(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 @@ -36720,15 +36373,6 @@ snapshots: '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.9) '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.24.9) - '@babel/register@7.22.15(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - '@babel/register@7.22.15(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -38148,7 +37792,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -40532,7 +40176,7 @@ snapshots: '@storybook/builder-webpack5@7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@storybook/addons': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/channels': 7.4.6 '@storybook/client-api': 7.4.6 @@ -40552,7 +40196,7 @@ snapshots: '@swc/core': 1.3.92 '@types/node': 16.18.58 '@types/semver': 7.5.2 - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)) + babel-loader: 9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -40592,7 +40236,7 @@ snapshots: '@storybook/builder-webpack5@7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@storybook/addons': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/channels': 7.4.6 '@storybook/client-api': 7.4.6 @@ -40612,7 +40256,7 @@ snapshots: '@swc/core': 1.3.92 '@types/node': 16.18.58 '@types/semver': 7.5.2 - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) + babel-loader: 9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -40652,7 +40296,7 @@ snapshots: '@storybook/builder-webpack5@7.6.13(encoding@0.1.13)(esbuild@0.18.20)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@storybook/channels': 7.6.13 '@storybook/client-logger': 7.6.13 '@storybook/core-common': 7.6.13(encoding@0.1.13) @@ -40664,7 +40308,7 @@ snapshots: '@swc/core': 1.3.92 '@types/node': 18.17.18 '@types/semver': 7.5.2 - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) + babel-loader: 9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.2.3 @@ -40702,7 +40346,7 @@ snapshots: '@storybook/builder-webpack5@7.6.13(encoding@0.1.13)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@storybook/channels': 7.6.13 '@storybook/client-logger': 7.6.13 '@storybook/core-common': 7.6.13(encoding@0.1.13) @@ -40714,7 +40358,7 @@ snapshots: '@swc/core': 1.3.92 '@types/node': 18.17.18 '@types/semver': 7.5.2 - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + babel-loader: 9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.2.3 @@ -40752,7 +40396,7 @@ snapshots: '@storybook/builder-webpack5@7.6.13(encoding@0.1.13)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@storybook/channels': 7.6.13 '@storybook/client-logger': 7.6.13 '@storybook/core-common': 7.6.13(encoding@0.1.13) @@ -40764,7 +40408,7 @@ snapshots: '@swc/core': 1.3.92 '@types/node': 18.17.18 '@types/semver': 7.5.2 - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))) + babel-loader: 9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))) browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.2.3 @@ -40867,61 +40511,61 @@ snapshots: - supports-color - utf-8-validate - '@storybook/cli@7.4.6(encoding@0.1.13)': + '@storybook/cli@7.4.6(encoding@0.1.13)': + dependencies: + '@babel/core': 7.24.9 + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) + '@babel/types': 7.23.9 + '@ndelangen/get-tarball': 3.0.9 + '@storybook/codemod': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) + '@storybook/core-events': 7.4.6 + '@storybook/core-server': 7.4.6(encoding@0.1.13) + '@storybook/csf-tools': 7.4.6 + '@storybook/node-logger': 7.4.6 + '@storybook/telemetry': 7.4.6(encoding@0.1.13) + '@storybook/types': 7.4.6 + '@types/semver': 7.5.2 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + commander: 6.2.1 + cross-spawn: 7.0.3 + detect-indent: 6.1.0 + envinfo: 7.8.1 + execa: 5.1.1 + express: 4.21.0 + find-up: 5.0.0 + fs-extra: 11.1.1 + get-npm-tarball-url: 2.0.3 + get-port: 5.1.1 + giget: 1.1.3 + globby: 11.1.0 + jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.9)) + leven: 3.1.0 + ora: 5.4.1 + prettier: 2.8.8 + prompts: 2.4.2 + puppeteer-core: 2.1.1 + read-pkg-up: 7.0.1 + semver: 7.5.4 + simple-update-notifier: 2.0.0 + strip-json-comments: 3.1.1 + tempy: 1.0.1 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@storybook/cli@7.6.13(encoding@0.1.13)': dependencies: '@babel/core': 7.24.9 '@babel/preset-env': 7.24.7(@babel/core@7.24.9) '@babel/types': 7.23.9 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.4.6 - '@storybook/core-common': 7.4.6(encoding@0.1.13) - '@storybook/core-events': 7.4.6 - '@storybook/core-server': 7.4.6(encoding@0.1.13) - '@storybook/csf-tools': 7.4.6 - '@storybook/node-logger': 7.4.6 - '@storybook/telemetry': 7.4.6(encoding@0.1.13) - '@storybook/types': 7.4.6 - '@types/semver': 7.5.2 - '@yarnpkg/fslib': 2.10.3 - '@yarnpkg/libzip': 2.3.0 - chalk: 4.1.2 - commander: 6.2.1 - cross-spawn: 7.0.3 - detect-indent: 6.1.0 - envinfo: 7.8.1 - execa: 5.1.1 - express: 4.21.0 - find-up: 5.0.0 - fs-extra: 11.1.1 - get-npm-tarball-url: 2.0.3 - get-port: 5.1.1 - giget: 1.1.3 - globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.9)) - leven: 3.1.0 - ora: 5.4.1 - prettier: 2.8.8 - prompts: 2.4.2 - puppeteer-core: 2.1.1 - read-pkg-up: 7.0.1 - semver: 7.5.4 - simple-update-notifier: 2.0.0 - strip-json-comments: 3.1.1 - tempy: 1.0.1 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@storybook/cli@7.6.13(encoding@0.1.13)': - dependencies: - '@babel/core': 7.23.9 - '@babel/preset-env': 7.24.7(@babel/core@7.23.9) - '@babel/types': 7.23.9 - '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.6.13 '@storybook/core-common': 7.6.13(encoding@0.1.13) '@storybook/core-events': 7.6.13 @@ -40946,7 +40590,7 @@ snapshots: get-port: 5.1.1 giget: 1.1.3 globby: 11.1.0 - jscodeshift: 0.15.1(@babel/preset-env@7.24.7(@babel/core@7.23.9)) + jscodeshift: 0.15.1(@babel/preset-env@7.24.7(@babel/core@7.24.9)) leven: 3.1.0 ora: 5.4.1 prettier: 2.8.8 @@ -40979,8 +40623,8 @@ snapshots: '@storybook/codemod@7.4.6': dependencies: - '@babel/core': 7.23.9 - '@babel/preset-env': 7.24.7(@babel/core@7.23.9) + '@babel/core': 7.24.9 + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) '@babel/types': 7.23.9 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 7.4.6 @@ -40989,7 +40633,7 @@ snapshots: '@types/cross-spawn': 6.0.3 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.23.9)) + jscodeshift: 0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.9)) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.4 @@ -40998,8 +40642,8 @@ snapshots: '@storybook/codemod@7.6.13': dependencies: - '@babel/core': 7.23.9 - '@babel/preset-env': 7.24.7(@babel/core@7.23.9) + '@babel/core': 7.24.9 + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) '@babel/types': 7.23.9 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 7.6.13 @@ -41008,7 +40652,7 @@ snapshots: '@types/cross-spawn': 6.0.3 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.15.1(@babel/preset-env@7.24.7(@babel/core@7.23.9)) + jscodeshift: 0.15.1(@babel/preset-env@7.24.7(@babel/core@7.24.9)) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.4 @@ -42070,49 +41714,49 @@ snapshots: '@types/express': 4.17.17 file-system-cache: 2.3.0 - '@svgr/babel-plugin-add-jsx-attribute@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-add-jsx-attribute@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-remove-jsx-attribute@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-remove-jsx-attribute@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-remove-jsx-empty-expression@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-remove-jsx-empty-expression@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-replace-jsx-attribute-value@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-replace-jsx-attribute-value@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-svg-dynamic-title@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-svg-dynamic-title@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-svg-em-dimensions@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-svg-em-dimensions@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-transform-react-native-svg@6.0.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-transform-react-native-svg@6.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-transform-svg-component@6.2.0(@babel/core@7.23.9)': + '@svgr/babel-plugin-transform-svg-component@6.2.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 - '@svgr/babel-preset@6.2.0(@babel/core@7.23.9)': + '@svgr/babel-preset@6.2.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.23.9 - '@svgr/babel-plugin-add-jsx-attribute': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-remove-jsx-attribute': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-svg-dynamic-title': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-svg-em-dimensions': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-transform-react-native-svg': 6.0.0(@babel/core@7.23.9) - '@svgr/babel-plugin-transform-svg-component': 6.2.0(@babel/core@7.23.9) + '@babel/core': 7.24.9 + '@svgr/babel-plugin-add-jsx-attribute': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-remove-jsx-attribute': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-svg-dynamic-title': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-svg-em-dimensions': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-transform-react-native-svg': 6.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-transform-svg-component': 6.2.0(@babel/core@7.24.9) '@svgr/core@6.2.1': dependencies: @@ -42129,8 +41773,8 @@ snapshots: '@svgr/plugin-jsx@6.2.1(@svgr/core@6.2.1)': dependencies: - '@babel/core': 7.23.9 - '@svgr/babel-preset': 6.2.0(@babel/core@7.23.9) + '@babel/core': 7.24.9 + '@svgr/babel-preset': 6.2.0(@babel/core@7.24.9) '@svgr/core': 6.2.1 '@svgr/hast-util-to-babel-ast': 6.2.1 svg-parser: 2.0.4 @@ -42146,11 +41790,11 @@ snapshots: '@svgr/webpack@6.2.1': dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-constant-elements': 7.17.12(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-react': 7.22.15(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.0(@babel/core@7.23.9) + '@babel/core': 7.24.9 + '@babel/plugin-transform-react-constant-elements': 7.17.12(@babel/core@7.24.9) + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) + '@babel/preset-react': 7.22.15(@babel/core@7.24.9) + '@babel/preset-typescript': 7.23.0(@babel/core@7.24.9) '@svgr/core': 6.2.1 '@svgr/plugin-jsx': 6.2.1(@svgr/core@6.2.1) '@svgr/plugin-svgo': 6.2.0(@svgr/core@6.2.1) @@ -42230,6 +41874,21 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.24.7 + aria-query: 5.1.3 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.12 + jest: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))': dependencies: '@adobe/css-tools': 4.4.0 @@ -44330,10 +43989,6 @@ snapshots: tunnel: 0.0.6 typed-rest-client: 1.8.4 - babel-core@7.0.0-bridge.0(@babel/core@7.23.9): - dependencies: - '@babel/core': 7.23.9 - babel-core@7.0.0-bridge.0(@babel/core@7.24.9): dependencies: '@babel/core': 7.24.9 @@ -44420,6 +44075,7 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true babel-jest@29.7.0(@babel/core@7.24.9): dependencies: @@ -44433,7 +44089,6 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color - optional: true babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)): dependencies: @@ -44442,47 +44097,54 @@ snapshots: schema-utils: 4.2.0 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(esbuild@0.18.20)): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20) + webpack: 5.94.0(esbuild@0.18.20) - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(webpack-cli@4.10.0)): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(webpack-cli@4.10.0) - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))): + babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.1(esbuild@0.21.5)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.92.1(esbuild@0.21.5) - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(esbuild@0.18.20)): + babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(esbuild@0.18.20) + webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.94.0(webpack-cli@4.10.0)): + babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.94.0(webpack-cli@4.10.0) + webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20) - babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.92.1(esbuild@0.21.5)): + babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.92.1(esbuild@0.21.5) + webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + + babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))): + dependencies: + '@babel/core': 7.24.9 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) babel-plugin-add-react-displayname@0.0.5: {} @@ -44561,15 +44223,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.23.9): - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7): dependencies: '@babel/compat-data': 7.25.2 @@ -44615,14 +44268,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.23.9): - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 @@ -44729,13 +44374,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.23.9): - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.23.9) - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 @@ -44858,6 +44496,7 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + optional: true babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.9): dependencies: @@ -44874,37 +44513,36 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.9) - optional: true - babel-preset-fbjs@3.4.0(@babel/core@7.23.9): + babel-preset-fbjs@3.4.0(@babel/core@7.24.9): dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.23.9) + '@babel/core': 7.24.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.24.9) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.24.9) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.24.9) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.24.9) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.24.9) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.9) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color @@ -44947,13 +44585,13 @@ snapshots: '@babel/core': 7.23.9 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + optional: true babel-preset-jest@29.6.3(@babel/core@7.24.9): dependencies: '@babel/core': 7.24.9 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.9) - optional: true balanced-match@0.4.2: {} @@ -50013,7 +49651,7 @@ snapshots: istanbul-lib-instrument@5.1.0: dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -50023,7 +49661,7 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.9 '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -50219,10 +49857,10 @@ snapshots: jest-config@29.7.0(@types/node@20.14.2): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50250,10 +49888,10 @@ snapshots: jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50281,10 +49919,10 @@ snapshots: jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50312,10 +49950,10 @@ snapshots: jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50343,10 +49981,10 @@ snapshots: jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@22.5.2)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50374,10 +50012,10 @@ snapshots: jest-config@29.7.0(@types/node@22.5.2): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50405,10 +50043,10 @@ snapshots: jest-config@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50436,10 +50074,10 @@ snapshots: jest-config@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50467,10 +50105,10 @@ snapshots: jest-config@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -50706,15 +50344,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.24.9) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.24.9) '@babel/types': 7.23.9 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.9) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -50909,7 +50547,7 @@ snapshots: jsbn@1.1.0: {} - jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.23.9)): + jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.9)): dependencies: '@babel/core': 7.24.9 '@babel/parser': 7.25.3 @@ -50917,7 +50555,7 @@ snapshots: '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.9) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.9) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/preset-env': 7.24.7(@babel/core@7.23.9) + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) '@babel/preset-flow': 7.22.15(@babel/core@7.24.9) '@babel/preset-typescript': 7.23.0(@babel/core@7.24.9) '@babel/register': 7.22.15(@babel/core@7.24.9) @@ -50934,15 +50572,15 @@ snapshots: transitivePeerDependencies: - supports-color - jscodeshift@0.14.0(@babel/preset-env@7.24.7(@babel/core@7.24.9)): + jscodeshift@0.15.1(@babel/preset-env@7.24.7(@babel/core@7.24.9)): dependencies: '@babel/core': 7.24.9 - '@babel/parser': 7.25.3 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.9) + '@babel/parser': 7.23.9 + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.9) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/preset-env': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.9) '@babel/preset-flow': 7.22.15(@babel/core@7.24.9) '@babel/preset-typescript': 7.23.0(@babel/core@7.24.9) '@babel/register': 7.22.15(@babel/core@7.24.9) @@ -50950,31 +50588,6 @@ snapshots: chalk: 4.1.2 flow-parser: 0.218.0 graceful-fs: 4.2.11 - micromatch: 4.0.8 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - - jscodeshift@0.15.1(@babel/preset-env@7.24.7(@babel/core@7.23.9)): - dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.23.9) - '@babel/preset-flow': 7.22.15(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.0(@babel/core@7.23.9) - '@babel/register': 7.22.15(@babel/core@7.23.9) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) - chalk: 4.1.2 - flow-parser: 0.218.0 - graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 node-dir: 0.1.17 @@ -50982,7 +50595,7 @@ snapshots: temp: 0.8.4 write-file-atomic: 2.4.3 optionalDependencies: - '@babel/preset-env': 7.24.7(@babel/core@7.23.9) + '@babel/preset-env': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color @@ -53948,7 +53561,7 @@ snapshots: react-docgen@5.4.3: dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/generator': 7.23.6 '@babel/runtime': 7.24.7 ast-types: 0.14.2 @@ -53963,7 +53576,7 @@ snapshots: react-docgen@7.0.3: dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.9 '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 '@types/babel__core': 7.20.5 diff --git a/repo/graph.dot b/repo/graph.dot index a7b6c4e054d..669edbd3890 100644 --- a/repo/graph.dot +++ b/repo/graph.dot @@ -119,12 +119,13 @@ digraph G { "extended-services-vscode-extension" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/monaco-editor" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools/form" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/form-code-generator" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/form-code-generator-bootstrap4-theme" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/form-code-generator-patternfly-theme" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/i18n" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools/import-java-classes-component" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/vscode-java-code-completion" [ color = "purple", fontcolor = "purple", style = "rounded" ]; - "@kie-tools/jbpm-form-generator" [ color = "blue", fontcolor = "blue", style = "rounded" ]; - "@kie-tools/uniforms-bootstrap4-codegen" [ color = "blue", fontcolor = "blue", style = "rounded" ]; - "@kie-tools/uniforms-patternfly-codegen" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/jbpm-form-code-generator-themes" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/runtime-tools-process-dev-ui-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/jobs-service-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/yaml-language-server" [ color = "blue", fontcolor = "blue", style = "rounded" ]; @@ -379,6 +380,17 @@ digraph G { "@kie-tools/form" -> "@kie-tools/dmn-runner" [ style = "solid", color = "blue" ]; "@kie-tools/form" -> "@kie-tools/i18n-common-dictionary" [ style = "solid", color = "blue" ]; "@kie-tools/form" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; "@kie-tools/form-dmn" -> "@kie-tools/form" [ style = "solid", color = "blue" ]; "@kie-tools-core/i18n" -> "@kie-tools/eslint" [ style = "dashed", color = "purple" ]; "@kie-tools-core/i18n" -> "@kie-tools/jest-base" [ style = "dashed", color = "purple" ]; @@ -393,8 +405,9 @@ digraph G { "@kie-tools/import-java-classes-component" -> "@kie-tools-core/monaco-editor" [ style = "dashed", color = "blue" ]; "@kie-tools/import-java-classes-component" -> "@kie-tools-core/patternfly-base" [ style = "dashed", color = "blue" ]; "@kie-tools/import-java-classes-component" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/jbpm-form-generator" -> "@kie-tools/uniforms-bootstrap4-codegen" [ style = "solid", color = "blue" ]; - "@kie-tools/jbpm-form-generator" -> "@kie-tools/uniforms-patternfly-codegen" [ style = "solid", color = "blue" ]; + "@kie-tools/jbpm-form-code-generator-themes" -> "@kie-tools/form-code-generator" [ style = "solid", color = "blue" ]; + "@kie-tools/jbpm-form-code-generator-themes" -> "@kie-tools/form-code-generator-bootstrap4-theme" [ style = "solid", color = "blue" ]; + "@kie-tools/jbpm-form-code-generator-themes" -> "@kie-tools/form-code-generator-patternfly-theme" [ style = "solid", color = "blue" ]; "@kie-tools/jbpm-quarkus-devui" -> "@kie-tools/maven-base" [ style = "solid", color = "black" ]; "@kie-tools/jbpm-quarkus-devui" -> "@kie-tools/runtime-tools-process-dev-ui-webapp" [ style = "dashed", color = "black" ]; "@kie-tools/jest-base" -> "@kie-tools/root-env" [ style = "dashed", color = "blue" ]; @@ -595,17 +608,9 @@ digraph G { "@kie-tools-core/switch-expression-ts" -> "@kie-tools/jest-base" [ style = "dashed", color = "purple" ]; "@kie-tools-core/switch-expression-ts" -> "@kie-tools/tsconfig" [ style = "dashed", color = "purple" ]; "@kie-tools/text-editor" -> "@kie-tools-core/editor" [ style = "solid", color = "blue" ]; - "@kie-tools/uniforms-bootstrap4-codegen" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-bootstrap4-codegen" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-bootstrap4-codegen" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-bootstrap4-codegen" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; "@kie-tools/uniforms-patternfly" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; "@kie-tools/uniforms-patternfly" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; "@kie-tools/uniforms-patternfly" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-patternfly-codegen" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-patternfly-codegen" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-patternfly-codegen" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/uniforms-patternfly-codegen" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; "@kie-tools/unitables" -> "@kie-tools/boxed-expression-component" [ style = "solid", color = "blue" ]; "@kie-tools/unitables" -> "@kie-tools/dmn-runner" [ style = "solid", color = "blue" ]; "@kie-tools/unitables-dmn" -> "@kie-tools/unitables" [ style = "solid", color = "blue" ]; diff --git a/repo/graph.json b/repo/graph.json index b55aba9fc5c..ddf7fd8a6fc 100644 --- a/repo/graph.json +++ b/repo/graph.json @@ -132,10 +132,11 @@ { "id": "@kie-tools/extended-services" }, { "id": "@kie-tools/extended-services-java" }, { "id": "extended-services-vscode-extension" }, + { "id": "@kie-tools/form-code-generator" }, + { "id": "@kie-tools/form-code-generator-bootstrap4-theme" }, + { "id": "@kie-tools/form-code-generator-patternfly-theme" }, { "id": "@kie-tools/import-java-classes-component" }, - { "id": "@kie-tools/jbpm-form-generator" }, - { "id": "@kie-tools/uniforms-bootstrap4-codegen" }, - { "id": "@kie-tools/uniforms-patternfly-codegen" }, + { "id": "@kie-tools/jbpm-form-code-generator-themes" }, { "id": "@kie-tools/runtime-tools-process-webapp-components" }, { "id": "@kie-tools/runtime-tools-shared-webapp-components" }, { "id": "@kie-tools/jobs-service-webapp" }, @@ -1619,78 +1620,98 @@ "weight": 1 }, { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/vscode-java-code-completion", + "source": "@kie-tools/form-code-generator", + "target": "@kie-tools/eslint", "weight": 1 }, { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools/i18n-common-dictionary", + "source": "@kie-tools/form-code-generator", + "target": "@kie-tools/jest-base", "weight": 1 }, { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/monaco-editor", + "source": "@kie-tools/form-code-generator", + "target": "@kie-tools/tsconfig", "weight": 1 }, { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/patternfly-base", + "source": "@kie-tools/form-code-generator-bootstrap4-theme", + "target": "@kie-tools-core/webpack-base", "weight": 1 }, { - "source": "@kie-tools/import-java-classes-component", - "target": "@kie-tools-core/webpack-base", + "source": "@kie-tools/form-code-generator-bootstrap4-theme", + "target": "@kie-tools/eslint", "weight": 1 }, { - "source": "@kie-tools/jbpm-form-generator", - "target": "@kie-tools/uniforms-bootstrap4-codegen", + "source": "@kie-tools/form-code-generator-bootstrap4-theme", + "target": "@kie-tools/jest-base", "weight": 1 }, { - "source": "@kie-tools/jbpm-form-generator", - "target": "@kie-tools/uniforms-patternfly-codegen", + "source": "@kie-tools/form-code-generator-bootstrap4-theme", + "target": "@kie-tools/tsconfig", "weight": 1 }, { - "source": "@kie-tools/uniforms-bootstrap4-codegen", + "source": "@kie-tools/form-code-generator-patternfly-theme", "target": "@kie-tools-core/webpack-base", "weight": 1 }, { - "source": "@kie-tools/uniforms-bootstrap4-codegen", + "source": "@kie-tools/form-code-generator-patternfly-theme", "target": "@kie-tools/eslint", "weight": 1 }, { - "source": "@kie-tools/uniforms-bootstrap4-codegen", + "source": "@kie-tools/form-code-generator-patternfly-theme", "target": "@kie-tools/jest-base", "weight": 1 }, { - "source": "@kie-tools/uniforms-bootstrap4-codegen", + "source": "@kie-tools/form-code-generator-patternfly-theme", "target": "@kie-tools/tsconfig", "weight": 1 }, { - "source": "@kie-tools/uniforms-patternfly-codegen", + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/vscode-java-code-completion", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools/i18n-common-dictionary", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/monaco-editor", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", + "target": "@kie-tools-core/patternfly-base", + "weight": 1 + }, + { + "source": "@kie-tools/import-java-classes-component", "target": "@kie-tools-core/webpack-base", "weight": 1 }, { - "source": "@kie-tools/uniforms-patternfly-codegen", - "target": "@kie-tools/eslint", + "source": "@kie-tools/jbpm-form-code-generator-themes", + "target": "@kie-tools/form-code-generator", "weight": 1 }, { - "source": "@kie-tools/uniforms-patternfly-codegen", - "target": "@kie-tools/jest-base", + "source": "@kie-tools/jbpm-form-code-generator-themes", + "target": "@kie-tools/form-code-generator-bootstrap4-theme", "weight": 1 }, { - "source": "@kie-tools/uniforms-patternfly-codegen", - "target": "@kie-tools/tsconfig", + "source": "@kie-tools/jbpm-form-code-generator-themes", + "target": "@kie-tools/form-code-generator-patternfly-theme", "weight": 1 }, { @@ -2566,13 +2587,16 @@ ["extended-services-vscode-extension", "packages/extended-services-vscode-extension"], ["@kie-tools/feel-input-component", "packages/feel-input-component"], ["@kie-tools/form", "packages/form"], + ["@kie-tools/form-code-generator", "packages/form-code-generator"], + ["@kie-tools/form-code-generator-bootstrap4-theme", "packages/form-code-generator-bootstrap4-theme"], + ["@kie-tools/form-code-generator-patternfly-theme", "packages/form-code-generator-patternfly-theme"], ["@kie-tools/form-dmn", "packages/form-dmn"], ["@kie-tools-core/i18n", "packages/i18n"], ["@kie-tools/i18n-common-dictionary", "packages/i18n-common-dictionary"], ["@kie-tools/image-builder", "packages/image-builder"], ["@kie-tools/image-env-to-json", "packages/image-env-to-json"], ["@kie-tools/import-java-classes-component", "packages/import-java-classes-component"], - ["@kie-tools/jbpm-form-generator", "packages/jbpm-form-generator"], + ["@kie-tools/jbpm-form-code-generator-themes", "packages/jbpm-form-code-generator-themes"], ["@kie-tools/jbpm-quarkus-devui", "packages/jbpm-quarkus-devui"], ["@kie-tools/jest-base", "packages/jest-base"], ["@kie-tools/jobs-service-webapp", "packages/jobs-service-webapp"], @@ -2682,9 +2706,7 @@ ["@kie-tools-core/switch-expression-ts", "packages/switch-expression-ts"], ["@kie-tools/text-editor", "packages/text-editor"], ["@kie-tools/tsconfig", "packages/tsconfig"], - ["@kie-tools/uniforms-bootstrap4-codegen", "packages/uniforms-bootstrap4-codegen"], ["@kie-tools/uniforms-patternfly", "packages/uniforms-patternfly"], - ["@kie-tools/uniforms-patternfly-codegen", "packages/uniforms-patternfly-codegen"], ["@kie-tools/unitables", "packages/unitables"], ["@kie-tools/unitables-dmn", "packages/unitables-dmn"], ["@kie-tools-core/vscode-extension", "packages/vscode-extension"], From 7f10fc6dbc94688a162d48d2f0f5010de30f492d Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 15:46:40 -0300 Subject: [PATCH 19/23] Fix tests and names --- .../src/FormCodeGenerator.ts | 6 +- .../tests/FormGenerator.test.ts | 10 +- .../jbpmBootstrap4FormCodeGeneratorTheme.ts | 6 +- .../jbpmPatternflyFormCodeGeneratorTheme.ts | 7 +- .../Bootstrap4FormGenerationTool.test.ts | 42 ----- .../tests/JbpmFormGenerator.test.ts | 170 ------------------ .../PatternflyFormGenerationTool.test.ts | 44 ----- .../jbpmBootstrap4FormGeneratorTheme.test.ts | 125 +++++++++++++ .../jbpmPatternflyFormGeneratorTheme.test.ts | 95 ++++++++++ .../tsconfig.json | 3 +- pnpm-lock.yaml | 158 ++++++++-------- 11 files changed, 315 insertions(+), 351 deletions(-) delete mode 100644 packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts delete mode 100644 packages/jbpm-form-code-generator-themes/tests/JbpmFormGenerator.test.ts delete mode 100644 packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts create mode 100644 packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts create mode 100644 packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts diff --git a/packages/form-code-generator/src/FormCodeGenerator.ts b/packages/form-code-generator/src/FormCodeGenerator.ts index 9f73b7c381e..d2bdb31e344 100644 --- a/packages/form-code-generator/src/FormCodeGenerator.ts +++ b/packages/form-code-generator/src/FormCodeGenerator.ts @@ -25,9 +25,9 @@ export interface Args { } export class FormCodeGenerator< - CustomFormAsset extends FormAsset, FormThemeFileExt extends string, FormThemeName extends string, + CustomFormAsset extends FormAsset, > { constructor(...themes: FormCodeGeneratorTheme[]) { if (themes !== undefined) { @@ -46,7 +46,7 @@ export class FormCodeGenerator< this.formGeneratorIndex.set(formGenerator.theme, formGenerator); } - public getFormGenerator(theme: string) { + public getFormCodeGenerator(theme: FormThemeName) { const formGenerator = this.formGeneratorIndex.get(theme); if (formGenerator) { return formGenerator; @@ -55,7 +55,7 @@ export class FormCodeGenerator< } public generateForms({ theme, formSchemas }: Args) { - const formGenerator = this.getFormGenerator(theme); + const formGenerator = this.getFormCodeGenerator(theme); return formSchemas.reduce((generatedForms, formSchema) => { try { generatedForms.push({ formAssets: formGenerator.generate(formSchema), formErrors: undefined }); diff --git a/packages/form-code-generator/tests/FormGenerator.test.ts b/packages/form-code-generator/tests/FormGenerator.test.ts index b7747682b2f..a44531e2a02 100644 --- a/packages/form-code-generator/tests/FormGenerator.test.ts +++ b/packages/form-code-generator/tests/FormGenerator.test.ts @@ -22,10 +22,10 @@ import { FormAsset, FormSchema } from "../dist/types"; import { ApplyForVisaSchema, ConfirmTravelSchema, dummyPatternflyTheme } from "./__mocks__/partternfly"; describe("FormCodeGenerator tests", () => { - describe("getFormGenerator tests", () => { + describe("getFormCodeGenerator tests", () => { it("Lookup existing formGenerator - patternfly", () => { const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme); - const formGenerator = jbpmFormGenerator.getFormGenerator("patternfly"); + const formGenerator = jbpmFormGenerator.getFormCodeGenerator("patternfly"); expect(formGenerator).not.toBeUndefined(); expect(formGenerator.theme).toStrictEqual("patternfly"); @@ -33,7 +33,7 @@ describe("FormCodeGenerator tests", () => { it("Lookup wrong formGenerator", () => { const jbpmFormGenerator = new FormCodeGenerator(); - expect(() => jbpmFormGenerator.getFormGenerator("wrong formGenerator type")).toThrow( + expect(() => jbpmFormGenerator.getFormCodeGenerator("wrong formGenerator type")).toThrow( `Unsupported form generation type: "wrong formGenerator type"` ); }); @@ -46,11 +46,11 @@ describe("FormCodeGenerator tests", () => { const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme, myCoolFormGenerator); - const customFormGenerator = jbpmFormGenerator.getFormGenerator("cool new formGenerator"); + const customFormGenerator = jbpmFormGenerator.getFormCodeGenerator("cool new formGenerator"); expect(customFormGenerator).not.toBeUndefined(); expect(customFormGenerator).toStrictEqual(myCoolFormGenerator); - const patternflyFormGenerator = jbpmFormGenerator.getFormGenerator("patternfly"); + const patternflyFormGenerator = jbpmFormGenerator.getFormCodeGenerator("patternfly"); expect(patternflyFormGenerator).not.toBeUndefined(); expect(patternflyFormGenerator).toStrictEqual(dummyPatternflyTheme); }); diff --git a/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts b/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts index d14dbd24b78..e48f9cb8fb1 100644 --- a/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts +++ b/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts @@ -17,12 +17,12 @@ * under the License. */ -import { renderForm } from "../../form-code-generator-bootstrap4-theme/src"; +import { FormCodeGeneratorTheme, FormAsset } from "@kie-tools/form-code-generator/dist/types"; +import { renderForm } from "@kie-tools/form-code-generator-bootstrap4-theme/dist"; import unescape from "lodash/unescape"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; import { getUniformsSchema } from "./getUniformsSchema"; import { inputSanitizationUtil } from "./inputSanitizationUtil"; -import { FormCodeGeneratorTheme, FormAsset } from "@kie-tools/form-code-generator/dist/types"; import { JbpmFormAssetBase } from "./types"; export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"; @@ -60,7 +60,7 @@ export const jbpmBootstrap4FormCodeGeneratorTheme: FormCodeGeneratorTheme< type: BOOTSTRAP4_FILE_EXT, content: unescape(form), config: { - schema: JSON.stringify(formSchema), + schema: JSON.stringify(formSchema.schema), resources: { styles: { "bootstrap.min.css": BOOTSTRAP4_CSS_URL, diff --git a/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts b/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts index 4fdcd1cbfb4..86b93c6b866 100644 --- a/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts +++ b/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts @@ -17,14 +17,13 @@ * under the License. */ -import { FormAsset } from "@kie-tools/form-code-generator/dist/types"; +import { FormAsset, FormCodeGeneratorTheme } from "@kie-tools/form-code-generator/dist/types"; import { renderForm } from "@kie-tools/form-code-generator-patternfly-theme/dist"; import unescape from "lodash/unescape"; import JSONSchemaBridge from "uniforms-bridge-json-schema"; import { getUniformsSchema } from "./getUniformsSchema"; import { inputSanitizationUtil } from "./inputSanitizationUtil"; import { JbpmFormAssetBase } from "./types"; -import { FormCodeGeneratorTheme } from "@kie-tools/form-code-generator/dist/types"; const PATTERNFLY_STYLE = "patternfly"; const PATTERNFLY_FILE_EXT = "tsx"; @@ -34,7 +33,7 @@ export type PatternflyFileExt = typeof PATTERNFLY_FILE_EXT; export interface PatternflyFormAsset extends FormAsset, JbpmFormAssetBase {} -export const jbpmBootstrap4FormCodeGeneratorTheme: FormCodeGeneratorTheme< +export const jbpmPatternflyFormCodeGeneratorTheme: FormCodeGeneratorTheme< PatternflyFileExt, PatternflyStyle, PatternflyFormAsset @@ -57,7 +56,7 @@ export const jbpmBootstrap4FormCodeGeneratorTheme: FormCodeGeneratorTheme< type: PATTERNFLY_FILE_EXT, content: unescape(form), config: { - schema: JSON.stringify(formSchema), + schema: JSON.stringify(formSchema.schema), resources: { styles: {}, scripts: {}, diff --git a/packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts b/packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts deleted file mode 100644 index eed5f7bb2d4..00000000000 --- a/packages/jbpm-form-code-generator-themes/tests/Bootstrap4FormGenerationTool.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { FormAsset } from "../dist/types"; -import { ApplyForVisaSchema } from "./__mocks__/bootstrap"; -import { Bootstrap4FormConfiguration, Bootstrap4FormGenerator } from "../dist/generators/Bootstrap4FormGenerator"; - -describe("Bootstrap4FormGenerator tests", () => { - it("Generate", () => { - const bootstrap4FormGenerator = new Bootstrap4FormGenerator(); - - const formAsset: FormAsset = bootstrap4FormGenerator.generate({ - name: "ApplyFor#Visa", - schema: ApplyForVisaSchema, - }); - - expect(formAsset).not.toBeUndefined(); - expect(formAsset.id).toStrictEqual("ApplyFor#Visa"); - expect(formAsset.sanitizedId).toStrictEqual("ApplyFor_Visa"); - expect(formAsset.assetName).toStrictEqual("ApplyFor#Visa.html"); - expect(formAsset.sanitizedAssetName).toStrictEqual("ApplyFor_Visa.html"); - expect(formAsset.content).not.toBeUndefined(); - expect(formAsset.config).not.toBeUndefined(); - expect(formAsset.config).toMatchObject(new Bootstrap4FormConfiguration(ApplyForVisaSchema)); - }); -}); diff --git a/packages/jbpm-form-code-generator-themes/tests/JbpmFormGenerator.test.ts b/packages/jbpm-form-code-generator-themes/tests/JbpmFormGenerator.test.ts deleted file mode 100644 index 06cf3e1ebb3..00000000000 --- a/packages/jbpm-form-code-generator-themes/tests/JbpmFormGenerator.test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { JbpmFormGenerator } from "../dist/JbpmFormGenerator"; -import { FormAsset, FormGenerator, FormSchema, FormStyle } from "../dist/types"; -import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/partternfly"; -import { inputSanitizationUtil } from "../dist/inputSanitizationUtil"; - -describe("JbpmFormGenerator tests", () => { - describe("getFormGenerator tests", () => { - it("Lookup existing formGenerator - patternfly", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - const formGenerator = jbpmFormGenerator.getFormGenerator(FormStyle.PATTERNFLY); - - expect(formGenerator).not.toBeUndefined(); - expect(formGenerator.type).toStrictEqual(FormStyle.PATTERNFLY); - }); - - it("Lookup wrong formGenerator", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - expect(() => jbpmFormGenerator.getFormGenerator("wrong formGenerator type")).toThrow( - `Unsupported form generation type: "wrong formGenerator type"` - ); - }); - - it("Register formGenerator & lookup", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - const customFormGeneratorImpl: FormGenerator = { - type: "cool new formGenerator", - generate: jest.fn(), - }; - - jbpmFormGenerator.registerFormGeneratorType(customFormGeneratorImpl); - - const customFormGenerator = jbpmFormGenerator.getFormGenerator(customFormGeneratorImpl.type); - expect(customFormGenerator).not.toBeUndefined(); - expect(customFormGenerator).toStrictEqual(customFormGeneratorImpl); - - const patternflyFormGenerator = jbpmFormGenerator.getFormGenerator(FormStyle.PATTERNFLY); - expect(patternflyFormGenerator).not.toBeUndefined(); - }); - }); - - describe("generateForms tests", () => { - it("Generate forms with wrong formGenerator type", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - expect(() => - jbpmFormGenerator.generateForms({ - formSchemas: [{ name: "", schema: {} }], - type: "wrong type", - }) - ).toThrow('Unsupported form generation type: "wrong type"'); - }); - - it("Generate forms for empty schema", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - const formAssets = jbpmFormGenerator.generateForms({ - formSchemas: [{ name: "test", schema: {} }], - type: "patternfly", - }); - - expect(formAssets[0]).toEqual( - expect.objectContaining({ - id: "test", - sanitizedId: "test", - assetName: "test.tsx", - sanitizedAssetName: "test.tsx", - config: { resources: { scripts: {}, styles: {} }, schema: "{}" }, - type: "tsx", - }) - ); - }); - - it("Generate forms project with schemas", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - const formAssets = jbpmFormGenerator.generateForms({ - formSchemas: [ - { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, - { name: "ConfirmTravel", schema: ConfirmTravelSchema }, - ], - type: "patternfly", - }); - - expect(formAssets[0]).toEqual( - expect.objectContaining({ - id: "Apply#For#Visa", - sanitizedId: "Apply_For_Visa", - assetName: "Apply#For#Visa.tsx", - sanitizedAssetName: "Apply_For_Visa.tsx", - config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, - type: "tsx", - }) - ); - expect(formAssets[1]).toEqual( - expect.objectContaining({ - id: "ConfirmTravel", - sanitizedId: "ConfirmTravel", - assetName: "ConfirmTravel.tsx", - sanitizedAssetName: "ConfirmTravel.tsx", - config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, - type: "tsx", - }) - ); - }); - - it("Generate forms project with schemas and one failure", () => { - const jbpmFormGenerator = new JbpmFormGenerator(); - const testFormGeneratorImpl: FormGenerator = { - type: "cool formGenerator", - - generate(schema: FormSchema): FormAsset { - if (schema.name === "ApplyForVisa") { - throw new Error("Unexpected Error!"); - } - - return { - id: schema.name, - sanitizedId: inputSanitizationUtil(schema.name), - content: schema.name, - type: "txt", - assetName: `${schema.name}.txt`, - sanitizedAssetName: `${inputSanitizationUtil(schema.name)}.txt`, - config: { - schema: "", - resources: { styles: {}, scripts: {} }, - }, - }; - }, - }; - - jbpmFormGenerator.registerFormGeneratorType(testFormGeneratorImpl); - - const formAssets = jbpmFormGenerator.generateForms({ - formSchemas: [ - { name: "ApplyForVisa", schema: ApplyForVisaSchema }, - { name: "ConfirmTravel", schema: ConfirmTravelSchema }, - ], - type: testFormGeneratorImpl.type, - }); - - expect(formAssets[0]).toEqual({ error: new Error("Unexpected Error!") }); - expect(formAssets[1]).toEqual( - expect.objectContaining({ - id: "ConfirmTravel", - sanitizedId: "ConfirmTravel", - assetName: "ConfirmTravel.txt", - sanitizedAssetName: "ConfirmTravel.txt", - config: { resources: { scripts: {}, styles: {} }, schema: "" }, - type: "txt", - }) - ); - }); - }); -}); diff --git a/packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts b/packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts deleted file mode 100644 index 2ac81ead631..00000000000 --- a/packages/jbpm-form-code-generator-themes/tests/PatternflyFormGenerationTool.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { PatternflyFormConfiguration, PatternflyFormGenerator } from "../dist/generators/PatternflyFormGenerator"; -import { FormAsset } from "../dist/types"; -import { ApplyForVisaSchema } from "./__mocks__/partternfly"; - -describe("PatternflyFormGenerator tests", () => { - it("Generate", () => { - const patternflyFormGenerator = new PatternflyFormGenerator(); - - const formAsset: FormAsset = patternflyFormGenerator.generate({ - name: "ApplyFor#Visa", - schema: ApplyForVisaSchema, - }); - - expect(formAsset).not.toBeUndefined(); - expect(formAsset.id).toStrictEqual("ApplyFor#Visa"); - expect(formAsset.sanitizedId).toStrictEqual("ApplyFor_Visa"); - expect(formAsset.assetName).toStrictEqual("ApplyFor#Visa.tsx"); - expect(formAsset.sanitizedAssetName).toStrictEqual("ApplyFor_Visa.tsx"); - expect(formAsset.content).not.toBeUndefined(); - expect(formAsset.content).toContain("const Form__ApplyFor_Visa"); - expect(formAsset.content).toContain("export default Form__ApplyFor_Visa;"); - expect(formAsset.config).not.toBeUndefined(); - expect(formAsset.config).toMatchObject(new PatternflyFormConfiguration(ApplyForVisaSchema)); - }); -}); diff --git a/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts b/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts new file mode 100644 index 00000000000..39e1002aa64 --- /dev/null +++ b/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormCodeGenerator } from "@kie-tools/form-code-generator/dist/FormCodeGenerator"; +import { + BOOTSTRAP4_CSS_URL, + BOOTSTRAP4_JS_URL, + jbpmBootstrap4FormCodeGeneratorTheme, + JQUERY_URL, +} from "../dist/jbpmBootstrap4FormCodeGeneratorTheme"; +import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/bootstrap"; + +describe("jbpmBootstrap4FormCodeGeneratorTheme tests", () => { + it("Generate", () => { + const formAsset = jbpmBootstrap4FormCodeGeneratorTheme.generate({ + name: "ApplyFor#Visa", + schema: ApplyForVisaSchema, + }); + + expect(formAsset).not.toBeUndefined(); + expect(formAsset.id).toStrictEqual("ApplyFor#Visa"); + expect(formAsset.sanitizedId).toStrictEqual("ApplyFor_Visa"); + expect(formAsset.assetName).toStrictEqual("ApplyFor#Visa.html"); + expect(formAsset.sanitizedAssetName).toStrictEqual("ApplyFor_Visa.html"); + expect(formAsset.content).not.toBeUndefined(); + expect(formAsset.config).not.toBeUndefined(); + expect(formAsset.config).toMatchObject({ + schema: JSON.stringify(ApplyForVisaSchema), + resources: { + styles: { + "bootstrap.min.css": BOOTSTRAP4_CSS_URL, + }, + scripts: { + "jquery.js": JQUERY_URL, + "bootstrap.bundle.min.js": BOOTSTRAP4_JS_URL, + }, + }, + }); + }); + + it("FormCodeGenerator - bootstrap4", () => { + const formCodeGenerator = new FormCodeGenerator(jbpmBootstrap4FormCodeGeneratorTheme); + const bootstrap4CodeGenerator = formCodeGenerator.getFormCodeGenerator("bootstrap"); + + expect(bootstrap4CodeGenerator).not.toBeUndefined(); + expect(bootstrap4CodeGenerator.theme).toStrictEqual("bootstrap"); + }); + + it("FormCodeGenerator - form assets", () => { + const formCodeGenerator = new FormCodeGenerator(jbpmBootstrap4FormCodeGeneratorTheme); + const formAssets = formCodeGenerator.generateForms({ + formSchemas: [ + { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + theme: "bootstrap", + }); + + expect(formAssets[0]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "Apply#For#Visa", + sanitizedId: "Apply_For_Visa", + assetName: "Apply#For#Visa.html", + sanitizedAssetName: "Apply_For_Visa.html", + config: { + resources: { + styles: { + "bootstrap.min.css": BOOTSTRAP4_CSS_URL, + }, + scripts: { + "jquery.js": JQUERY_URL, + "bootstrap.bundle.min.js": BOOTSTRAP4_JS_URL, + }, + }, + schema: JSON.stringify(ApplyForVisaSchema), + }, + type: "html", + }), + formErrors: undefined, + }) + ); + + expect(formAssets[1]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "ConfirmTravel", + sanitizedId: "ConfirmTravel", + assetName: "ConfirmTravel.html", + sanitizedAssetName: "ConfirmTravel.html", + config: { + resources: { + styles: { + "bootstrap.min.css": BOOTSTRAP4_CSS_URL, + }, + scripts: { + "jquery.js": JQUERY_URL, + "bootstrap.bundle.min.js": BOOTSTRAP4_JS_URL, + }, + }, + schema: JSON.stringify(ConfirmTravelSchema), + }, + type: "html", + }), + formErrors: undefined, + }) + ); + }); +}); diff --git a/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts b/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts new file mode 100644 index 00000000000..0f7af9efef6 --- /dev/null +++ b/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormCodeGenerator } from "@kie-tools/form-code-generator/dist/FormCodeGenerator"; +import { jbpmPatternflyFormCodeGeneratorTheme } from "../dist/jbpmPatternflyFormCodeGeneratorTheme"; +import { ApplyForVisaSchema, ConfirmTravelSchema } from "./__mocks__/partternfly"; + +describe("jbpmPatternflyFormCodeGeneratorTheme tests", () => { + it("Generate", () => { + const formAsset = jbpmPatternflyFormCodeGeneratorTheme.generate({ + name: "ApplyFor#Visa", + schema: ApplyForVisaSchema, + }); + + expect(formAsset).not.toBeUndefined(); + expect(formAsset.id).toStrictEqual("ApplyFor#Visa"); + expect(formAsset.sanitizedId).toStrictEqual("ApplyFor_Visa"); + expect(formAsset.assetName).toStrictEqual("ApplyFor#Visa.tsx"); + expect(formAsset.sanitizedAssetName).toStrictEqual("ApplyFor_Visa.tsx"); + expect(formAsset.content).not.toBeUndefined(); + expect(formAsset.content).toContain("const Form__ApplyFor_Visa"); + expect(formAsset.content).toContain("export default Form__ApplyFor_Visa;"); + expect(formAsset.config).not.toBeUndefined(); + expect(formAsset.config).toMatchObject({ + schema: JSON.stringify(ApplyForVisaSchema), + resources: { + styles: {}, + scripts: {}, + }, + }); + }); + + it("FormCodeGenerator - patternfly", () => { + const formCodeGenerator = new FormCodeGenerator(jbpmPatternflyFormCodeGeneratorTheme); + const patternflyCodeGenerator = formCodeGenerator.getFormCodeGenerator("patternfly"); + + expect(patternflyCodeGenerator).not.toBeUndefined(); + expect(patternflyCodeGenerator.theme).toStrictEqual("patternfly"); + }); + + it("FormCodeGenerator - form assets", () => { + const formCodeGenerator = new FormCodeGenerator(jbpmPatternflyFormCodeGeneratorTheme); + const formAssets = formCodeGenerator.generateForms({ + formSchemas: [ + { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, + { name: "ConfirmTravel", schema: ConfirmTravelSchema }, + ], + theme: "patternfly", + }); + + expect(formAssets[0]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "Apply#For#Visa", + sanitizedId: "Apply_For_Visa", + assetName: "Apply#For#Visa.tsx", + sanitizedAssetName: "Apply_For_Visa.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, + type: "tsx", + }), + formErrors: undefined, + }) + ); + + expect(formAssets[1]).toEqual( + expect.objectContaining({ + formAssets: expect.objectContaining({ + id: "ConfirmTravel", + sanitizedId: "ConfirmTravel", + assetName: "ConfirmTravel.tsx", + sanitizedAssetName: "ConfirmTravel.tsx", + config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, + type: "tsx", + }), + formErrors: undefined, + }) + ); + }); +}); diff --git a/packages/jbpm-form-code-generator-themes/tsconfig.json b/packages/jbpm-form-code-generator-themes/tsconfig.json index 84c713f3bfa..565feb5d585 100644 --- a/packages/jbpm-form-code-generator-themes/tsconfig.json +++ b/packages/jbpm-form-code-generator-themes/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@kie-tools/tsconfig/tsconfig.cjs.json", "compilerOptions": { - "esModuleInterop": true + "esModuleInterop": true, + "jsx": "react-jsx" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de2f132980d..7201938f39d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30864,11 +30864,11 @@ snapshots: '@ardatan/relay-compiler@12.0.0(encoding@0.1.13)(graphql@14.3.1)': dependencies: '@babel/core': 7.24.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 '@babel/runtime': 7.24.7 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 babel-preset-fbjs: 3.4.0(@babel/core@7.24.9) chalk: 4.1.2 fb-watchman: 2.0.1 @@ -30999,7 +30999,7 @@ snapshots: '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.0 + picocolors: 1.1.0 '@babel/compat-data@7.17.7': {} @@ -31180,7 +31180,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: @@ -31188,11 +31188,11 @@ snapshots: '@babel/helper-builder-binary-assignment-operator-visitor@7.21.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: @@ -31414,7 +31414,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.16.12)': dependencies: '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.6 lodash.debounce: 4.0.8 @@ -31426,7 +31426,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.18.10)': dependencies: '@babel/core': 7.18.10 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.6 lodash.debounce: 4.0.8 @@ -31438,7 +31438,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.6 lodash.debounce: 4.0.8 @@ -31450,7 +31450,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.0)': dependencies: '@babel/core': 7.23.0 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.6 lodash.debounce: 4.0.8 @@ -31461,7 +31461,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.0)': dependencies: '@babel/core': 7.23.0 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.6 lodash.debounce: 4.0.8 @@ -31472,7 +31472,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9)': dependencies: '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.6 lodash.debounce: 4.0.8 @@ -31504,7 +31504,7 @@ snapshots: '@babel/helper-environment-visitor@7.16.7': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-environment-visitor@7.21.5': {} @@ -31516,25 +31516,25 @@ snapshots: '@babel/helper-function-name@7.17.9': dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@babel/helper-function-name@7.23.0': dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@babel/helper-hoist-variables@7.16.7': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-member-expression-to-functions@7.23.0': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-member-expression-to-functions@7.24.8': dependencies: @@ -31545,7 +31545,7 @@ snapshots: '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-module-imports@7.24.7': dependencies: @@ -31656,7 +31656,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-optimise-call-expression@7.24.7': dependencies: @@ -31676,7 +31676,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.24.9)': dependencies: @@ -31684,7 +31684,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.18.10)': dependencies: @@ -31780,7 +31780,7 @@ snapshots: '@babel/helper-simple-access@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-simple-access@7.24.7': dependencies: @@ -31791,7 +31791,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: @@ -31802,15 +31802,15 @@ snapshots: '@babel/helper-split-export-declaration@7.16.7': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-split-export-declaration@7.18.6': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-split-export-declaration@7.22.6': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@babel/helper-split-export-declaration@7.24.7': dependencies: @@ -31837,8 +31837,8 @@ snapshots: '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@babel/helper-wrap-function@7.25.0': dependencies: @@ -37751,7 +37751,7 @@ snapshots: '@jest/source-map@29.6.3': dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -38081,7 +38081,7 @@ snapshots: proc-log: 4.2.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.2 + semver: 7.6.3 which: 4.0.0 transitivePeerDependencies: - bluebird @@ -38106,7 +38106,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 normalize-package-data: 6.0.2 proc-log: 4.2.0 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - bluebird @@ -40625,7 +40625,7 @@ snapshots: dependencies: '@babel/core': 7.24.9 '@babel/preset-env': 7.24.7(@babel/core@7.24.9) - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 7.4.6 '@storybook/node-logger': 7.4.6 @@ -40644,7 +40644,7 @@ snapshots: dependencies: '@babel/core': 7.24.9 '@babel/preset-env': 7.24.7(@babel/core@7.24.9) - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 7.6.13 '@storybook/node-logger': 7.6.13 @@ -40989,10 +40989,10 @@ snapshots: '@storybook/csf-tools@7.4.6': dependencies: - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 '@storybook/csf': 0.1.2 '@storybook/types': 7.4.6 fs-extra: 11.1.1 @@ -41003,10 +41003,10 @@ snapshots: '@storybook/csf-tools@7.6.13': dependencies: - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 '@storybook/csf': 0.1.2 '@storybook/types': 7.6.13 fs-extra: 11.2.0 @@ -41768,7 +41768,7 @@ snapshots: '@svgr/hast-util-to-babel-ast@6.2.1': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 entities: 3.0.1 '@svgr/plugin-jsx@6.2.1(@svgr/core@6.2.1)': @@ -41978,7 +41978,7 @@ snapshots: '@types/babel__generator@7.6.1': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@types/babel__standalone@7.1.7': dependencies: @@ -41986,12 +41986,12 @@ snapshots: '@types/babel__template@7.0.2': dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@types/body-parser@1.19.2': dependencies: @@ -44177,8 +44177,8 @@ snapshots: babel-plugin-jest-hoist@25.5.0: dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@types/babel__traverse': 7.20.5 babel-plugin-jest-hoist@29.6.3: @@ -45983,7 +45983,7 @@ snapshots: postcss-modules-scope: 3.0.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.2 + semver: 7.6.3 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) css-loader@6.7.1(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)): @@ -45995,7 +45995,7 @@ snapshots: postcss-modules-scope: 3.0.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.2 + semver: 7.6.3 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20) css-loader@6.7.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): @@ -46007,7 +46007,7 @@ snapshots: postcss-modules-scope: 3.0.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.2 + semver: 7.6.3 webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) css-loader@6.7.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))): @@ -46019,7 +46019,7 @@ snapshots: postcss-modules-scope: 3.0.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.6.2 + semver: 7.6.3 webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) css-loader@7.1.2(webpack@5.92.1(esbuild@0.21.5)): @@ -47602,7 +47602,7 @@ snapshots: estree-to-babel@3.2.1: dependencies: - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 c8: 7.14.0 transitivePeerDependencies: @@ -48225,7 +48225,7 @@ snapshots: fork-ts-checker-webpack-plugin@8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)): dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.0.1 @@ -48235,14 +48235,14 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.5.4 + semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.3 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) fork-ts-checker-webpack-plugin@8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)): dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.0.1 @@ -48252,14 +48252,14 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.5.4 + semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.3 webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20) fork-ts-checker-webpack-plugin@8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.0.1 @@ -48269,14 +48269,14 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.5.4 + semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.3 webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) fork-ts-checker-webpack-plugin@8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))): dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.0.1 @@ -48286,7 +48286,7 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.5.4 + semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.3 webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) @@ -49652,7 +49652,7 @@ snapshots: istanbul-lib-instrument@5.1.0: dependencies: '@babel/core': 7.24.9 - '@babel/parser': 7.23.9 + '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -50242,7 +50242,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.0 chalk: 4.1.2 @@ -50345,10 +50345,10 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.24.9 - '@babel/generator': 7.23.6 + '@babel/generator': 7.25.0 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.24.9) '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.24.9) - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -50363,7 +50363,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -50575,7 +50575,7 @@ snapshots: jscodeshift@0.15.1(@babel/preset-env@7.24.7(@babel/core@7.24.9)): dependencies: '@babel/core': 7.24.9 - '@babel/parser': 7.23.9 + '@babel/parser': 7.25.3 '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.9) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.9) @@ -51945,7 +51945,7 @@ snapshots: node-abi@3.43.0: dependencies: - semver: 7.5.4 + semver: 7.6.3 node-abort-controller@3.1.1: {} @@ -52193,7 +52193,7 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.6.2 + semver: 7.6.3 npm-normalize-package-bin@1.0.1: {} @@ -52591,7 +52591,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.1.6 @@ -53562,7 +53562,7 @@ snapshots: react-docgen@5.4.3: dependencies: '@babel/core': 7.24.9 - '@babel/generator': 7.23.6 + '@babel/generator': 7.25.0 '@babel/runtime': 7.24.7 ast-types: 0.14.2 commander: 2.20.3 @@ -53577,8 +53577,8 @@ snapshots: react-docgen@7.0.3: dependencies: '@babel/core': 7.24.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 '@types/doctrine': 0.0.9 @@ -55417,7 +55417,7 @@ snapshots: mime: 2.6.0 qs: 6.11.2 readable-stream: 3.6.0 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - supports-color From 49065ca37e5a73b4e6d7f013935017ea9d8e95a7 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 18:49:42 -0300 Subject: [PATCH 20/23] Add README and adjustments --- .../README.md | 28 +++- .../package.json | 4 +- .../src/formCodeGenerator.ts | 69 +++++++++ .../webpack.config.js | 1 + .../README.md | 28 +++- .../package.json | 4 +- .../src/formCodeGenerator.ts | 60 ++++++++ .../webpack.config.js | 1 + packages/form-code-generator/README.md | 88 ++++++------ .../src/FormCodeGenerator.ts | 6 +- packages/form-code-generator/src/types.ts | 4 +- .../tests/FormGenerator.test.ts | 40 +++--- .../jbpm-form-code-generator-themes/README.md | 131 +++++++++++------- .../jbpmBootstrap4FormCodeGeneratorTheme.ts | 8 +- .../jbpmPatternflyFormCodeGeneratorTheme.ts | 8 +- .../jbpmBootstrap4FormGeneratorTheme.test.ts | 10 +- .../jbpmPatternflyFormGeneratorTheme.test.ts | 10 +- pnpm-lock.yaml | 16 ++- repo/graph.dot | 9 +- repo/graph.json | 31 +---- 20 files changed, 377 insertions(+), 179 deletions(-) create mode 100644 packages/form-code-generator-bootstrap4-theme/src/formCodeGenerator.ts create mode 100644 packages/form-code-generator-patternfly-theme/src/formCodeGenerator.ts diff --git a/packages/form-code-generator-bootstrap4-theme/README.md b/packages/form-code-generator-bootstrap4-theme/README.md index 1a339ce5be1..d4bfbb3881e 100644 --- a/packages/form-code-generator-bootstrap4-theme/README.md +++ b/packages/form-code-generator-bootstrap4-theme/README.md @@ -17,7 +17,33 @@ ## Form Code Generator Bootstrap4 Theme -This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Bootstrap 4 forms for the `@kie-tools/jbpm-form-generator`. +This package is the Bootstrap4 theme for the [Form Code Generator](../form-code-generator/README.md). + +## How it works? + +This package generates the form code of a [Uniforms](https://uniforms.tools/) form using the Bootstrap4 style. [Uniforms](https://uniforms.tools/) is a library that autogenerates forms based on schemas, and supports multiple themes. This package makes its own theme, describing the code that each field should have. After it, the form is rendered using `ReactDOMServer.renderToString` getting the form code. + +## Usage + +To use this package, you must call the `renderForm` method passing its arguments: + +```ts +{ + id: string; // The form id + sanitizedId: string; // The form id, any # is replaced by _ + disabled?: boolean; // Enable/disable form (read only) + placeholder?: boolean; // Enable/disable placeholders + schema: Bridge; // A Uniforms Bridge instance +} +``` + +## Build + +In order to build the library you must run the following command in the root folder of the repository: + +```shell script +pnpm -F @kie-tools/form-code-generator-bootstrap4-theme... build:prod +``` --- diff --git a/packages/form-code-generator-bootstrap4-theme/package.json b/packages/form-code-generator-bootstrap4-theme/package.json index 5731a9e5175..8ebb0055b1d 100644 --- a/packages/form-code-generator-bootstrap4-theme/package.json +++ b/packages/form-code-generator-bootstrap4-theme/package.json @@ -22,11 +22,12 @@ "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, "dependencies": { + "@kie-tools/form-code-generator": "workspace:*", "lodash": "^4.17.21", "prettier": "^2.8.8", "underscore": "^1.13.1", "uniforms": "^3.10.2", - "uniforms-bridge-simple-schema-2": "^3.10.2" + "uniforms-bridge-json-schema": "^3.10.2" }, "devDependencies": { "@babel/core": "^7.16.0", @@ -58,6 +59,7 @@ "simpl-schema": "^1.12.0", "ts-jest": "^29.1.5", "typescript": "^5.5.3", + "uniforms-bridge-simple-schema-2": "^3.10.2", "webpack": "^5.94.0", "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.9.0", diff --git a/packages/form-code-generator-bootstrap4-theme/src/formCodeGenerator.ts b/packages/form-code-generator-bootstrap4-theme/src/formCodeGenerator.ts new file mode 100644 index 00000000000..6601ffd28f8 --- /dev/null +++ b/packages/form-code-generator-bootstrap4-theme/src/formCodeGenerator.ts @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormCodeGeneratorTheme, FormAsset } from "@kie-tools/form-code-generator/dist/types"; +import JSONSchemaBridge from "uniforms-bridge-json-schema"; +import unescape from "lodash/unescape"; +import { renderForm } from "."; + +export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"; +export const BOOTSTRAP4_JS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"; +export const JQUERY_URL = "https://code.jquery.com/jquery-3.2.1.slim.min.js"; + +const BOOTSTRAP4_THEME_NAME = "bootstrap"; +const BOOTSTRAP4_FILE_EXT = "html"; + +export type Bootstrap4ThemeName = typeof BOOTSTRAP4_THEME_NAME; +export type Bootstrap4FileExt = typeof BOOTSTRAP4_FILE_EXT; +export interface Bootstrap4FormAsset extends FormAsset {} + +export const bootstrap4JsonSchemaFormCodeGeneratorTheme: FormCodeGeneratorTheme< + Bootstrap4FileExt, + Bootstrap4ThemeName, + Bootstrap4FormAsset +> = { + theme: BOOTSTRAP4_THEME_NAME, + generate: (formSchema) => { + const form = renderForm({ + id: formSchema.name, + sanitizedId: formSchema.name, + schema: new JSONSchemaBridge(formSchema.schema, () => true), + disabled: false, + placeholder: true, + }); + return { + id: formSchema.name, + assetName: `${formSchema.name}.${BOOTSTRAP4_FILE_EXT}`, + type: BOOTSTRAP4_FILE_EXT, + content: unescape(form), + config: { + schema: JSON.stringify(formSchema.schema), + resources: { + styles: { + "bootstrap.min.css": BOOTSTRAP4_CSS_URL, + }, + scripts: { + "jquery.js": JQUERY_URL, + "bootstrap.bundle.min.js": BOOTSTRAP4_JS_URL, + }, + }, + }, + }; + }, +}; diff --git a/packages/form-code-generator-bootstrap4-theme/webpack.config.js b/packages/form-code-generator-bootstrap4-theme/webpack.config.js index 5064b497e5b..3e315e9f65f 100644 --- a/packages/form-code-generator-bootstrap4-theme/webpack.config.js +++ b/packages/form-code-generator-bootstrap4-theme/webpack.config.js @@ -27,6 +27,7 @@ module.exports = (env, args) => [ merge(common(env, args), { entry: { index: "./src/index.ts", + formCodeGenerator: "./src/formCodeGenerator.ts", }, plugins: [new CopyPlugin({ patterns: [{ from: "./src/resources", to: "./resources" }] })], module: { diff --git a/packages/form-code-generator-patternfly-theme/README.md b/packages/form-code-generator-patternfly-theme/README.md index 86228787012..696acad6203 100644 --- a/packages/form-code-generator-patternfly-theme/README.md +++ b/packages/form-code-generator-patternfly-theme/README.md @@ -17,7 +17,33 @@ ## Form Code Generator PatternFly Theme -This module contains the [Uniforms](https://uniforms.tools) theme contain to generate Patternfly forms for the `@kie-tools/jbpm-form-generator`. +This package is the PatternFly theme for the [Form Code Generator](../form-code-generator/README.md). + +## How it works? + +This package generates the form code of a [Uniforms](https://uniforms.tools/) form using PatternFly components. [Uniforms](https://uniforms.tools/) is a library that autogenerates forms based on schemas, and supports multiple themes. This package makes its own theme, describing the code that each field should have. After it, the form is rendered using `ReactDOMServer.renderToString` getting the form code. + +## Usage + +To use this package, you must call the `renderForm` method passing its arguments: + +```ts +{ + id: string; // The form id + sanitizedId: string; // The form id, any # is replaced by _ + disabled?: boolean; // Enable/disable form (read only) + placeholder?: boolean; // Enable/disable placeholders + schema: Bridge; // A Uniforms Bridge instance +} +``` + +## Build + +In order to build the library you must run the following command in the root folder of the repository: + +```shell script +pnpm -F @kie-tools/form-code-generator-patternfly-theme... build:prod +``` --- diff --git a/packages/form-code-generator-patternfly-theme/package.json b/packages/form-code-generator-patternfly-theme/package.json index 521ab10cafe..b7bc46a6a04 100644 --- a/packages/form-code-generator-patternfly-theme/package.json +++ b/packages/form-code-generator-patternfly-theme/package.json @@ -22,10 +22,11 @@ "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --verbose --passWithNoTests\"" }, "dependencies": { + "@kie-tools/form-code-generator": "workspace:*", "lodash": "^4.17.21", "prettier": "^2.8.8", "uniforms": "^3.10.2", - "uniforms-bridge-simple-schema-2": "^3.10.2" + "uniforms-bridge-json-schema": "^3.10.2" }, "devDependencies": { "@babel/core": "^7.16.0", @@ -55,6 +56,7 @@ "simpl-schema": "^1.12.0", "ts-jest": "^29.1.5", "typescript": "^5.5.3", + "uniforms-bridge-simple-schema-2": "^3.10.2", "webpack": "^5.94.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/packages/form-code-generator-patternfly-theme/src/formCodeGenerator.ts b/packages/form-code-generator-patternfly-theme/src/formCodeGenerator.ts new file mode 100644 index 00000000000..887a3b105e1 --- /dev/null +++ b/packages/form-code-generator-patternfly-theme/src/formCodeGenerator.ts @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FormAsset, FormCodeGeneratorTheme } from "@kie-tools/form-code-generator/dist/types"; +import JSONSchemaBridge from "uniforms-bridge-json-schema"; +import unescape from "lodash/unescape"; +import { renderForm } from "."; + +const PATTERNFLY_THEME_NAME = "patternfly"; +const PATTERNFLY_FILE_EXT = "tsx"; + +export type PatternflyThemeName = typeof PATTERNFLY_THEME_NAME; +export type PatternflyFileExt = typeof PATTERNFLY_FILE_EXT; +export interface PatternflyFormAsset extends FormAsset {} + +export const patternflyJsonSchemaFormCodeGeneratorTheme: FormCodeGeneratorTheme< + PatternflyFileExt, + PatternflyThemeName, + PatternflyFormAsset +> = { + theme: PATTERNFLY_THEME_NAME, + generate: (formSchema) => { + const form = renderForm({ + id: formSchema.name, + sanitizedId: formSchema.name, + schema: new JSONSchemaBridge(formSchema.schema, () => true), + disabled: false, + placeholder: true, + }); + return { + id: formSchema.name, + assetName: `${formSchema.name}.${PATTERNFLY_FILE_EXT}`, + type: PATTERNFLY_FILE_EXT, + content: unescape(form), + config: { + schema: JSON.stringify(formSchema.schema), + resources: { + styles: {}, + scripts: {}, + }, + }, + }; + }, +}; diff --git a/packages/form-code-generator-patternfly-theme/webpack.config.js b/packages/form-code-generator-patternfly-theme/webpack.config.js index e443c933a6d..f99ef8e2cf4 100644 --- a/packages/form-code-generator-patternfly-theme/webpack.config.js +++ b/packages/form-code-generator-patternfly-theme/webpack.config.js @@ -26,6 +26,7 @@ module.exports = (env) => [ merge(common(env), { entry: { index: "./src/index.ts", + formCodeGenerator: "./src/formCodeGenerator.ts", }, plugins: [new CopyPlugin({ patterns: [{ from: "./src/resources", to: "./resources" }] })], output: { diff --git a/packages/form-code-generator/README.md b/packages/form-code-generator/README.md index ae2ae8878ff..6ed2767bde8 100644 --- a/packages/form-code-generator/README.md +++ b/packages/form-code-generator/README.md @@ -17,69 +17,65 @@ ## Form Code Generator -This is a utility library to help generating form code in differents formats for BPMN processes and User Tasks in your Kogito projects. +This library is used to generate the form code from a schema. It can uses different themes, such as the [Bootstrap4](../form-code-generator-bootstrap4-theme/README.md) and [PatternFly](../form-code-generator-patternfly-theme/README.md) or any theme that implements the [FormCodeGeneratorTheme](./src/types.ts) interface. ## How it works? -When building a Kogito project, Kogito generates JSON Schemas to represent the data models for both Processes and User Tasks. +This library provides capabilities to register and use themes that implement the [FormCodeGeneratorTheme](./src/types.ts). -This tool locates those JSON Schemas in the project and taking advantage of the [Uniforms](https://uniforms.tools) APIs, processes them and generate static forms. +## Usage -### Form Types +To use it, create a new instance of `FormCodeGenerator` passing your theme to its constructor: -## Build - -In order to build the library you must run the following command in the root folder of the repository: +```ts +import { FormCodeGenerator } from "@kie-tools/form-code-generator/dist/FormCodeGenerator" +import { FormCodeGeneratorTheme } from "@kie-tools/form-code-generator/dist/types" -```shell script -pnpm -F @kie-tools/form-code-generator... build:prod -``` - -After the command, you can import the `generateForms` function into your codebase. It requires two arguments +const myAwesomeTheme: FormCodeGeneratorTheme: { + theme: "my theme", + generate: (formSchema) => { ... }; +} -```tsx -generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] +const myThemeFormCodeGenerator = new FormCodeGenerator(myAwesomeTheme); +const formsCode = myThemeFormCodeGenerator.generateFormCode([ + { + theme: "my theme", // Theme name + formSchema: { + name: "my form name", // Form name + schema: {}, // My form schema. The theme determines which kind of schema will be supported. + }, + }, +]); +formsCode[0]; // FormAsset | FormGenerationError ``` -The `type` argument defines which kind of form will be generated. Currently, we have native support for `"bootstrap"` and `"patternfly"` but more can be added. - -The `formSchemas` argument is a list of JSON Schemas which will be used to generate the form code. - -`generateForms` will return a list of form assets, which contain the `form` and `config` file content. - -## Adding custom themes - -To add custom themes use the `registerFormGeneratorType` method, which requires a class that implements the following interface: - -```tsx -export interface FormGenerator { - type: string; - generate: (formSchema: FormSchema) => FormAsset | FormGenerationError; -} +Example using the [PatternFly](../form-code-generator-patternfly-theme/README.md) theme: + +```ts +import { FormCodeGenerator } from "@kie-tools/form-code-generator/dist/FormCodeGenerator"; +import { patternflyJsonSchemaFormCodeGeneratorTheme } from "@kie-tools/form-code-generator-patternfly-theme/dist/formCodeGenerator"; + +const patternflyFormCodeGenerator = new FormCodeGenerator(patternflyJsonSchemaFormCodeGeneratorTheme); +const formsCode = patternflyFormCodeGenerator.generateFormCode([ + { + theme: "patternfly", // Theme name + formSchema: { + name: "my patternfly form", // Form name + schema: {}, // My form JSON Schema. + }, + }, +]); +formsCode[0]; // FormAsset | FormGenerationError ``` -## Using the Custom Forms with Runtime Tools Quarkus Extension - -If your project is a Quarkus based Kogito project, you can use and test them by using the **Runtime Tools Quarkus Extension**. - -To do so, just add the following dependency in your project `pom.xml`: - -```xml - - org.jbpm - jbpm-quarkus-devui - ${version} - -``` +## Build -And start the project in Dev mode with the command: +In order to build the library you must run the following command in the root folder of the repository: ```shell script -mvn clean quarkus:dev +pnpm -F @kie-tools/form-code-generator... build:prod ``` -For more information on how to setup the **Runtime Tools Quarkus Extension** in your project look at the oficial Kogito [documentation](https://docs.kogito.kie.org/latest/html_single/#con-runtime-tools-dev-ui_kogito-developing-process-services). - --- Apache KIE (incubating) is an effort undergoing incubation at The Apache Software diff --git a/packages/form-code-generator/src/FormCodeGenerator.ts b/packages/form-code-generator/src/FormCodeGenerator.ts index d2bdb31e344..df418436eba 100644 --- a/packages/form-code-generator/src/FormCodeGenerator.ts +++ b/packages/form-code-generator/src/FormCodeGenerator.ts @@ -54,14 +54,14 @@ export class FormCodeGenerator< throw new Error(`Unsupported form generation type: "${theme}"`); } - public generateForms({ theme, formSchemas }: Args) { + public generateFormsCode({ theme, formSchemas }: Args) { const formGenerator = this.getFormCodeGenerator(theme); return formSchemas.reduce((generatedForms, formSchema) => { try { - generatedForms.push({ formAssets: formGenerator.generate(formSchema), formErrors: undefined }); + generatedForms.push({ formAsset: formGenerator.generate(formSchema), formError: undefined }); } catch (error) { console.error(`Error generating form: ${error}`); - generatedForms.push({ formAssets: undefined, formErrors: error }); + generatedForms.push({ formAsset: undefined, formError: error }); } return generatedForms; }, [] as FormCodeGeneration[]); diff --git a/packages/form-code-generator/src/types.ts b/packages/form-code-generator/src/types.ts index a6279124bc7..68267530601 100644 --- a/packages/form-code-generator/src/types.ts +++ b/packages/form-code-generator/src/types.ts @@ -54,6 +54,6 @@ export interface FormCodeGeneratorTheme< } export interface FormCodeGeneration { - formAssets: FormAsset | undefined; - formErrors: FormCodeGenerationError | undefined; + formAsset: FormAsset | undefined; + formError: FormCodeGenerationError | undefined; } diff --git a/packages/form-code-generator/tests/FormGenerator.test.ts b/packages/form-code-generator/tests/FormGenerator.test.ts index a44531e2a02..3580b3350e7 100644 --- a/packages/form-code-generator/tests/FormGenerator.test.ts +++ b/packages/form-code-generator/tests/FormGenerator.test.ts @@ -56,11 +56,11 @@ describe("FormCodeGenerator tests", () => { }); }); - describe("generateForms tests", () => { + describe("generateFormsCode tests", () => { it("Generate forms with wrong formGenerator type", () => { const jbpmFormGenerator = new FormCodeGenerator(); expect(() => - jbpmFormGenerator.generateForms({ + jbpmFormGenerator.generateFormsCode({ formSchemas: [{ name: "", schema: {} }], theme: "wrong type", }) @@ -69,27 +69,27 @@ describe("FormCodeGenerator tests", () => { it("Generate forms for empty schema", () => { const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme); - const formAssets = jbpmFormGenerator.generateForms({ + const formsCode = jbpmFormGenerator.generateFormsCode({ formSchemas: [{ name: "test", schema: {} }], theme: "patternfly", }); - expect(formAssets[0]).toEqual( + expect(formsCode[0]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "test", assetName: "test.tsx", config: { resources: { scripts: {}, styles: {} }, schema: "{}" }, type: "tsx", }), - formErrors: undefined, + formError: undefined, }) ); }); it("Generate forms project with schemas", () => { const jbpmFormGenerator = new FormCodeGenerator(dummyPatternflyTheme); - const formAssets = jbpmFormGenerator.generateForms({ + const formsCode = jbpmFormGenerator.generateFormsCode({ formSchemas: [ { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, { name: "ConfirmTravel", schema: ConfirmTravelSchema }, @@ -97,26 +97,26 @@ describe("FormCodeGenerator tests", () => { theme: "patternfly", }); - expect(formAssets[0]).toEqual( + expect(formsCode[0]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "Apply#For#Visa", assetName: "Apply#For#Visa.tsx", config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, type: "tsx", }), - formErrors: undefined, + formError: undefined, }) ); - expect(formAssets[1]).toEqual( + expect(formsCode[1]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "ConfirmTravel", assetName: "ConfirmTravel.tsx", config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, type: "tsx", }), - formErrors: undefined, + formError: undefined, }) ); }); @@ -143,7 +143,7 @@ describe("FormCodeGenerator tests", () => { }, }); - const formAssets = jbpmFormGenerator.generateForms({ + const formsCode = jbpmFormGenerator.generateFormsCode({ formSchemas: [ { name: "ApplyForVisa", schema: ApplyForVisaSchema }, { name: "ConfirmTravel", schema: ConfirmTravelSchema }, @@ -151,19 +151,19 @@ describe("FormCodeGenerator tests", () => { theme: "cool formGenerator", }); - expect(formAssets[0]).toEqual({ - formAssets: undefined, - formErrors: new Error("Unexpected Error!"), + expect(formsCode[0]).toEqual({ + formAsset: undefined, + formError: new Error("Unexpected Error!"), }); - expect(formAssets[1]).toEqual( + expect(formsCode[1]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "ConfirmTravel", assetName: "ConfirmTravel.txt", config: { resources: { scripts: {}, styles: {} }, schema: "" }, type: "txt", }), - formErrors: undefined, + formError: undefined, }) ); }); diff --git a/packages/jbpm-form-code-generator-themes/README.md b/packages/jbpm-form-code-generator-themes/README.md index 439413f7e4c..736a5d92810 100644 --- a/packages/jbpm-form-code-generator-themes/README.md +++ b/packages/jbpm-form-code-generator-themes/README.md @@ -15,79 +15,112 @@ under the License. --> -## jBPM Form Generator +## jBPM Form Code Generator -This is a utility library to help generating form code in differents formats for BPMN processes and User Tasks in your Kogito projects. +This is a library that has jBPM themes for the [Form Code Generator](../form-code-generator/README.md). ## How it works? -When building a Kogito project, Kogito generates JSON Schemas to represent the data models for both Processes and User Tasks. +This package has two jBPM themes for the [Form Code Generator](../form-code-generator/README.md) library. It extends the [Bootstrap4 theme](../form-code-generator-bootstrap4-theme/README.md) and [PatternFly theme](../form-code-generator-patternfly-theme/README.md), modifying them by making operations over the JSON Schema and changing their return type to `JbpmFormAsset` insted of `FormAsset`. -This tool locates those JSON Schemas in the project and taking advantage of the [Uniforms](https://uniforms.tools) APIs, processes them and generate static forms. +## Usage -### Form Types +To use it, pass the jBPM theme to the `FormCodeGenerator` class and invoke the `generateFormsCode` method: -There are two types of form supported with differnt styling and output format: +```ts +import { FormCodeGenerator } from "@kie-tools/form-code-generator/dist/FormCodeGenerator"; +import { jbpmPatternflyFormCodeGeneratorTheme } from "@kie-tools/jbpm-form-code-generator-themes/dist/jbpmPatternflyFormCodeGeneratorTheme"; -- **Patternfly**: generates a React (`.tsx`) forms using Patternfly 4 components. Implementation can be found in `@kie-tools/uniforms-patternfly-codegen` - -- **Bootstrap 4**: generates a HTML (`.html`) forms using Bootstrap 4 styling. Implementation can be found in `@kie-tools/uniforms-bootstrap4-codegen` - -Each generated form consist in two files, the source code (`.tsx` or `.html`) and a companion `.config` file that defines the external resources (`css` / `js`) the form may need. - -## Build - -In order to build the library you must run the following command in the root folder of the repository: - -```shell script -pnpm -F @kie-tools/jbpm-form-generator... build:prod +const jbpmPatternflyFormCodeGenerator = new FormCodeGenerator(jbpmPatternflyFormCodeGeneratorTheme); +const jbpmFormsCode = jbpmPatternflyFormCodeGenerator.generateFormsCode({ + theme: "patternfly", + formSchemas: [ + { + name: "", + schema: {}, // your JSON Schema + }, + ], +}); ``` -After the command, you can import the `generateForms` function into your codebase. It requires two arguments +The `jbpmFormsCode` will give you the following object: -```tsx -generateForms({ type, formSchemas }: Args): (FormAsset | FormGenerationError)[] +```ts +[{ + formAsset: JbpmFormAssets | undefined + formError: FormCodeGenerationError | undefined +}] ``` -The `type` argument defines which kind of form will be generated. Currently, we have native support for `"bootstrap"` and `"patternfly"` but more can be added. - -The `formSchemas` argument is a list of JSON Schemas which will be used to generate the form code. - -`generateForms` will return a list of form assets, which contain the `form` and `config` file content. - -## Adding custom themes - -To add custom themes use the `registerFormGeneratorType` method, which requires a class that implements the following interface: - -```tsx -export interface FormGenerator { - type: string; - generate: (formSchema: FormSchema) => FormAsset | FormGenerationError; +`JbpmFormAssets` is a object with the following properties: + +```ts +{ + id: string, // The form id + sanitizedId: string, // The same value as "id" but any "#" occorrence is replaced by "_" + assetName: string, // The form name + sanitizedAssetName: string, // The same value as "assetName" but any "#" occorrence is replaced by "_" + type: string, // The file extension of the code + content: string, // The unescaped form code + config: { + schema: string, // The stringifyied JSON Schema + resources: { + styles: {}, // Any style that need to be loaded + scripts: {}, // Any script that need to be loaded + }, + }, } ``` -## Using the Custom Forms with Runtime Tools Quarkus Extension +`FormCodeGenerationError` is a object with the following properties: -If your project is a Quarkus based Kogito project, you can use and test them by using the **Runtime Tools Quarkus Extension**. - -To do so, just add the following dependency in your project `pom.xml`: +```ts +{ + error: Error; // The error object that was thrown during the form generation +} +``` -```xml - - org.jbpm - jbpm-quarkus-devui - ${version} - +Alternatively, it's possible to pass all themes to the `FormCodeGenerator`, but it requires to manually set the type: + +```ts +import { FormCodeGenerator } from "@kie-tools/form-code-generator/dist/FormCodeGenerator"; +import { + Bootstrap4FileExt, + Bootstrap4ThemeName, + Bootstrap4FormAsset, + jbpmBootstrap4FormCodeGeneratorTheme, +} from "@kie-tools/jbpm-form-code-generator-themes/dist/jbpmBootstrap4FormCodeGeneratorTheme"; +import { + PatternflyFileExt, + PatternflyThemeName, + PatternflyFormAsset, + jbpmPatternflyFormCodeGeneratorTheme, +} from "@kie-tools/jbpm-form-code-generator-themes/dist/jbpmPatternflyFormCodeGeneratorTheme"; + +const jbpmFormCodeGenerator = new FormCodeGenerator< + Bootstrap4FileExt | PatternflyFileExt, + Bootstrap4ThemeName | PatternflyThemeName, + Bootstrap4FormAsset | PatternflyFormAsset +>(jbpmBootstrap4FormCodeGeneratorTheme, jbpmPatternflyFormCodeGeneratorTheme); +const jbpmFormsCode = jbpmFormCodeGenerator.generateFormsCode({ + theme: "patternfly", + formSchemas: [ + { + name: "", + schema: {}, // your JSON Schema + }, + ], +}); ``` -And start the project in Dev mode with the command: +## Build + +In order to build the library you must run the following command in the root folder of the repository: ```shell script -mvn clean quarkus:dev +pnpm -F @kie-tools/jbpm-form-code-generator-themes... build:prod ``` -For more information on how to setup the **Runtime Tools Quarkus Extension** in your project look at the oficial Kogito [documentation](https://docs.kogito.kie.org/latest/html_single/#con-runtime-tools-dev-ui_kogito-developing-process-services). - --- Apache KIE (incubating) is an effort undergoing incubation at The Apache Software diff --git a/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts b/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts index e48f9cb8fb1..d94f49de29e 100644 --- a/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts +++ b/packages/jbpm-form-code-generator-themes/src/jbpmBootstrap4FormCodeGeneratorTheme.ts @@ -29,20 +29,20 @@ export const BOOTSTRAP4_CSS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0 export const BOOTSTRAP4_JS_URL = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.bundle.min.js"; export const JQUERY_URL = "https://code.jquery.com/jquery-3.2.1.slim.min.js"; -const BOOTSTRAP4_STYLE = "bootstrap"; +const BOOTSTRAP4_THEME_NAME = "bootstrap"; const BOOTSTRAP4_FILE_EXT = "html"; -export type Bootstrap4Style = typeof BOOTSTRAP4_STYLE; +export type Bootstrap4ThemeName = typeof BOOTSTRAP4_THEME_NAME; export type Bootstrap4FileExt = typeof BOOTSTRAP4_FILE_EXT; export interface Bootstrap4FormAsset extends FormAsset, JbpmFormAssetBase {} export const jbpmBootstrap4FormCodeGeneratorTheme: FormCodeGeneratorTheme< Bootstrap4FileExt, - Bootstrap4Style, + Bootstrap4ThemeName, Bootstrap4FormAsset > = { - theme: BOOTSTRAP4_STYLE, + theme: BOOTSTRAP4_THEME_NAME, generate: (formSchema) => { const uniformsSchema = getUniformsSchema(formSchema.schema); const form = renderForm({ diff --git a/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts b/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts index 86b93c6b866..3339f2b9130 100644 --- a/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts +++ b/packages/jbpm-form-code-generator-themes/src/jbpmPatternflyFormCodeGeneratorTheme.ts @@ -25,20 +25,20 @@ import { getUniformsSchema } from "./getUniformsSchema"; import { inputSanitizationUtil } from "./inputSanitizationUtil"; import { JbpmFormAssetBase } from "./types"; -const PATTERNFLY_STYLE = "patternfly"; +const PATTERNFLY_THEME_NAME = "patternfly"; const PATTERNFLY_FILE_EXT = "tsx"; -export type PatternflyStyle = typeof PATTERNFLY_STYLE; +export type PatternflyThemeName = typeof PATTERNFLY_THEME_NAME; export type PatternflyFileExt = typeof PATTERNFLY_FILE_EXT; export interface PatternflyFormAsset extends FormAsset, JbpmFormAssetBase {} export const jbpmPatternflyFormCodeGeneratorTheme: FormCodeGeneratorTheme< PatternflyFileExt, - PatternflyStyle, + PatternflyThemeName, PatternflyFormAsset > = { - theme: PATTERNFLY_STYLE, + theme: PATTERNFLY_THEME_NAME, generate: (formSchema) => { const uniformsSchema = getUniformsSchema(formSchema.schema); const form = renderForm({ diff --git a/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts b/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts index 39e1002aa64..c6f247a620e 100644 --- a/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts +++ b/packages/jbpm-form-code-generator-themes/tests/jbpmBootstrap4FormGeneratorTheme.test.ts @@ -64,7 +64,7 @@ describe("jbpmBootstrap4FormCodeGeneratorTheme tests", () => { it("FormCodeGenerator - form assets", () => { const formCodeGenerator = new FormCodeGenerator(jbpmBootstrap4FormCodeGeneratorTheme); - const formAssets = formCodeGenerator.generateForms({ + const formAssets = formCodeGenerator.generateFormsCode({ formSchemas: [ { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, { name: "ConfirmTravel", schema: ConfirmTravelSchema }, @@ -74,7 +74,7 @@ describe("jbpmBootstrap4FormCodeGeneratorTheme tests", () => { expect(formAssets[0]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "Apply#For#Visa", sanitizedId: "Apply_For_Visa", assetName: "Apply#For#Visa.html", @@ -93,13 +93,13 @@ describe("jbpmBootstrap4FormCodeGeneratorTheme tests", () => { }, type: "html", }), - formErrors: undefined, + formError: undefined, }) ); expect(formAssets[1]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "ConfirmTravel", sanitizedId: "ConfirmTravel", assetName: "ConfirmTravel.html", @@ -118,7 +118,7 @@ describe("jbpmBootstrap4FormCodeGeneratorTheme tests", () => { }, type: "html", }), - formErrors: undefined, + formError: undefined, }) ); }); diff --git a/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts b/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts index 0f7af9efef6..50a6fc3f898 100644 --- a/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts +++ b/packages/jbpm-form-code-generator-themes/tests/jbpmPatternflyFormGeneratorTheme.test.ts @@ -56,7 +56,7 @@ describe("jbpmPatternflyFormCodeGeneratorTheme tests", () => { it("FormCodeGenerator - form assets", () => { const formCodeGenerator = new FormCodeGenerator(jbpmPatternflyFormCodeGeneratorTheme); - const formAssets = formCodeGenerator.generateForms({ + const formAssets = formCodeGenerator.generateFormsCode({ formSchemas: [ { name: "Apply#For#Visa", schema: ApplyForVisaSchema }, { name: "ConfirmTravel", schema: ConfirmTravelSchema }, @@ -66,7 +66,7 @@ describe("jbpmPatternflyFormCodeGeneratorTheme tests", () => { expect(formAssets[0]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "Apply#For#Visa", sanitizedId: "Apply_For_Visa", assetName: "Apply#For#Visa.tsx", @@ -74,13 +74,13 @@ describe("jbpmPatternflyFormCodeGeneratorTheme tests", () => { config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ApplyForVisaSchema) }, type: "tsx", }), - formErrors: undefined, + formError: undefined, }) ); expect(formAssets[1]).toEqual( expect.objectContaining({ - formAssets: expect.objectContaining({ + formAsset: expect.objectContaining({ id: "ConfirmTravel", sanitizedId: "ConfirmTravel", assetName: "ConfirmTravel.tsx", @@ -88,7 +88,7 @@ describe("jbpmPatternflyFormCodeGeneratorTheme tests", () => { config: { resources: { scripts: {}, styles: {} }, schema: JSON.stringify(ConfirmTravelSchema) }, type: "tsx", }), - formErrors: undefined, + formError: undefined, }) ); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7201938f39d..7f818971c0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4767,6 +4767,9 @@ importers: packages/form-code-generator-bootstrap4-theme: dependencies: + '@kie-tools/form-code-generator': + specifier: workspace:* + version: link:../form-code-generator lodash: specifier: ^4.17.21 version: 4.17.21 @@ -4785,7 +4788,7 @@ importers: uniforms: specifier: ^3.10.2 version: 3.10.2(react@17.0.2) - uniforms-bridge-simple-schema-2: + uniforms-bridge-json-schema: specifier: ^3.10.2 version: 3.10.2(react@17.0.2) devDependencies: @@ -4876,6 +4879,9 @@ importers: typescript: specifier: ^5.5.3 version: 5.5.3 + uniforms-bridge-simple-schema-2: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) webpack: specifier: ^5.94.0 version: 5.94.0 @@ -4891,6 +4897,9 @@ importers: packages/form-code-generator-patternfly-theme: dependencies: + '@kie-tools/form-code-generator': + specifier: workspace:* + version: link:../form-code-generator lodash: specifier: ^4.17.21 version: 4.17.21 @@ -4906,7 +4915,7 @@ importers: uniforms: specifier: ^3.10.2 version: 3.10.2(react@17.0.2) - uniforms-bridge-simple-schema-2: + uniforms-bridge-json-schema: specifier: ^3.10.2 version: 3.10.2(react@17.0.2) devDependencies: @@ -4991,6 +5000,9 @@ importers: typescript: specifier: ^5.5.3 version: 5.5.3 + uniforms-bridge-simple-schema-2: + specifier: ^3.10.2 + version: 3.10.2(react@17.0.2) webpack: specifier: ^5.94.0 version: 5.94.0(webpack-cli@4.10.0) diff --git a/repo/graph.dot b/repo/graph.dot index 669edbd3890..c98954b3f31 100644 --- a/repo/graph.dot +++ b/repo/graph.dot @@ -383,14 +383,10 @@ digraph G { "@kie-tools/form-code-generator" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; "@kie-tools/form-code-generator" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; "@kie-tools/form-code-generator" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/form-code-generator" [ style = "solid", color = "blue" ]; "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; - "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/form-code-generator-bootstrap4-theme" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; + "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/form-code-generator" [ style = "solid", color = "blue" ]; "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/eslint" [ style = "dashed", color = "blue" ]; - "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/form-code-generator-patternfly-theme" -> "@kie-tools/tsconfig" [ style = "dashed", color = "blue" ]; "@kie-tools/form-dmn" -> "@kie-tools/form" [ style = "solid", color = "blue" ]; "@kie-tools-core/i18n" -> "@kie-tools/eslint" [ style = "dashed", color = "purple" ]; "@kie-tools-core/i18n" -> "@kie-tools/jest-base" [ style = "dashed", color = "purple" ]; @@ -405,7 +401,6 @@ digraph G { "@kie-tools/import-java-classes-component" -> "@kie-tools-core/monaco-editor" [ style = "dashed", color = "blue" ]; "@kie-tools/import-java-classes-component" -> "@kie-tools-core/patternfly-base" [ style = "dashed", color = "blue" ]; "@kie-tools/import-java-classes-component" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "blue" ]; - "@kie-tools/jbpm-form-code-generator-themes" -> "@kie-tools/form-code-generator" [ style = "solid", color = "blue" ]; "@kie-tools/jbpm-form-code-generator-themes" -> "@kie-tools/form-code-generator-bootstrap4-theme" [ style = "solid", color = "blue" ]; "@kie-tools/jbpm-form-code-generator-themes" -> "@kie-tools/form-code-generator-patternfly-theme" [ style = "solid", color = "blue" ]; "@kie-tools/jbpm-quarkus-devui" -> "@kie-tools/maven-base" [ style = "solid", color = "black" ]; diff --git a/repo/graph.json b/repo/graph.json index ddf7fd8a6fc..95c0bd21130 100644 --- a/repo/graph.json +++ b/repo/graph.json @@ -1636,42 +1636,22 @@ }, { "source": "@kie-tools/form-code-generator-bootstrap4-theme", - "target": "@kie-tools-core/webpack-base", - "weight": 1 - }, - { - "source": "@kie-tools/form-code-generator-bootstrap4-theme", - "target": "@kie-tools/eslint", - "weight": 1 - }, - { - "source": "@kie-tools/form-code-generator-bootstrap4-theme", - "target": "@kie-tools/jest-base", + "target": "@kie-tools/form-code-generator", "weight": 1 }, { "source": "@kie-tools/form-code-generator-bootstrap4-theme", - "target": "@kie-tools/tsconfig", - "weight": 1 - }, - { - "source": "@kie-tools/form-code-generator-patternfly-theme", "target": "@kie-tools-core/webpack-base", "weight": 1 }, { "source": "@kie-tools/form-code-generator-patternfly-theme", - "target": "@kie-tools/eslint", - "weight": 1 - }, - { - "source": "@kie-tools/form-code-generator-patternfly-theme", - "target": "@kie-tools/jest-base", + "target": "@kie-tools/form-code-generator", "weight": 1 }, { "source": "@kie-tools/form-code-generator-patternfly-theme", - "target": "@kie-tools/tsconfig", + "target": "@kie-tools-core/webpack-base", "weight": 1 }, { @@ -1699,11 +1679,6 @@ "target": "@kie-tools-core/webpack-base", "weight": 1 }, - { - "source": "@kie-tools/jbpm-form-code-generator-themes", - "target": "@kie-tools/form-code-generator", - "weight": 1 - }, { "source": "@kie-tools/jbpm-form-code-generator-themes", "target": "@kie-tools/form-code-generator-bootstrap4-theme", From 167dd1f37b1e2963bc8873f6307fe25dc1e18241 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 19:06:44 -0300 Subject: [PATCH 21/23] Adjustments --- .../form-code-generator-bootstrap4-theme/README.md | 2 +- .../package.json | 1 - .../form-code-generator-patternfly-theme/README.md | 2 +- packages/form-code-generator/README.md | 2 +- packages/form-code-generator/package.json | 5 ----- packages/jbpm-form-code-generator-themes/README.md | 10 +++------- pnpm-lock.yaml | 13 ------------- 7 files changed, 6 insertions(+), 29 deletions(-) diff --git a/packages/form-code-generator-bootstrap4-theme/README.md b/packages/form-code-generator-bootstrap4-theme/README.md index d4bfbb3881e..0f7d7c3d323 100644 --- a/packages/form-code-generator-bootstrap4-theme/README.md +++ b/packages/form-code-generator-bootstrap4-theme/README.md @@ -21,7 +21,7 @@ This package is the Bootstrap4 theme for the [Form Code Generator](../form-code- ## How it works? -This package generates the form code of a [Uniforms](https://uniforms.tools/) form using the Bootstrap4 style. [Uniforms](https://uniforms.tools/) is a library that autogenerates forms based on schemas, and supports multiple themes. This package makes its own theme, describing the code that each field should have. After it, the form is rendered using `ReactDOMServer.renderToString` getting the form code. +This package generates the form code of a [Uniforms](https://uniforms.tools/) form using the Bootstrap4 style. [Uniforms](https://uniforms.tools/) is a library that autogenerates forms based on schemas and supports multiple themes. This package makes its own theme, describing the code that each field should have. After it, the form is rendered using `ReactDOMServer.renderToString` getting the form code. ## Usage diff --git a/packages/form-code-generator-bootstrap4-theme/package.json b/packages/form-code-generator-bootstrap4-theme/package.json index 8ebb0055b1d..9004cc19e6b 100644 --- a/packages/form-code-generator-bootstrap4-theme/package.json +++ b/packages/form-code-generator-bootstrap4-theme/package.json @@ -49,7 +49,6 @@ "@types/simpl-schema": "^1.12.0", "@types/underscore": "^1.11.2", "copy-webpack-plugin": "^11.0.0", - "copyfiles": "^2.4.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", diff --git a/packages/form-code-generator-patternfly-theme/README.md b/packages/form-code-generator-patternfly-theme/README.md index 696acad6203..e2d6516dfb1 100644 --- a/packages/form-code-generator-patternfly-theme/README.md +++ b/packages/form-code-generator-patternfly-theme/README.md @@ -21,7 +21,7 @@ This package is the PatternFly theme for the [Form Code Generator](../form-code- ## How it works? -This package generates the form code of a [Uniforms](https://uniforms.tools/) form using PatternFly components. [Uniforms](https://uniforms.tools/) is a library that autogenerates forms based on schemas, and supports multiple themes. This package makes its own theme, describing the code that each field should have. After it, the form is rendered using `ReactDOMServer.renderToString` getting the form code. +This package generates the form code of a [Uniforms](https://uniforms.tools/) form using PatternFly components. [Uniforms](https://uniforms.tools/) is a library that autogenerates forms based on schemas and supports multiple themes. This package makes its own theme, describing the code that each field should have. After it, the form is rendered using `ReactDOMServer.renderToString` getting the form code. ## Usage diff --git a/packages/form-code-generator/README.md b/packages/form-code-generator/README.md index 6ed2767bde8..3dc19db623e 100644 --- a/packages/form-code-generator/README.md +++ b/packages/form-code-generator/README.md @@ -17,7 +17,7 @@ ## Form Code Generator -This library is used to generate the form code from a schema. It can uses different themes, such as the [Bootstrap4](../form-code-generator-bootstrap4-theme/README.md) and [PatternFly](../form-code-generator-patternfly-theme/README.md) or any theme that implements the [FormCodeGeneratorTheme](./src/types.ts) interface. +This library is used to generate the form code based on a schema. It can uses different themes, such as the [Bootstrap4](../form-code-generator-bootstrap4-theme/README.md) and [PatternFly](../form-code-generator-patternfly-theme/README.md) or any theme that implements the [FormCodeGeneratorTheme](./src/types.ts) interface. ## How it works? diff --git a/packages/form-code-generator/package.json b/packages/form-code-generator/package.json index fc71f804b93..321abcc7865 100644 --- a/packages/form-code-generator/package.json +++ b/packages/form-code-generator/package.json @@ -23,11 +23,6 @@ "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", "test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env tests.run)\" --then \"jest --silent --verbose --passWithNoTests\"" }, - "dependencies": { - "lodash": "^4.17.21", - "uniforms": "^3.10.2", - "uniforms-bridge-json-schema": "^3.10.2" - }, "devDependencies": { "@kie-tools/eslint": "workspace:*", "@kie-tools/jest-base": "workspace:*", diff --git a/packages/jbpm-form-code-generator-themes/README.md b/packages/jbpm-form-code-generator-themes/README.md index 736a5d92810..b287aa8e92c 100644 --- a/packages/jbpm-form-code-generator-themes/README.md +++ b/packages/jbpm-form-code-generator-themes/README.md @@ -17,11 +17,7 @@ ## jBPM Form Code Generator -This is a library that has jBPM themes for the [Form Code Generator](../form-code-generator/README.md). - -## How it works? - -This package has two jBPM themes for the [Form Code Generator](../form-code-generator/README.md) library. It extends the [Bootstrap4 theme](../form-code-generator-bootstrap4-theme/README.md) and [PatternFly theme](../form-code-generator-patternfly-theme/README.md), modifying them by making operations over the JSON Schema and changing their return type to `JbpmFormAsset` insted of `FormAsset`. +This package has two jBPM themes for the [Form Code Generator](../form-code-generator/README.md) library. Both themes are extensions of the [Bootstrap4 theme](../form-code-generator-bootstrap4-theme/README.md) and [PatternFly theme](../form-code-generator-patternfly-theme/README.md), resulting in the jBPM Bootstrap4 theme and jBPM PatternFly theme respectively. ## Usage @@ -37,7 +33,7 @@ const jbpmFormsCode = jbpmPatternflyFormCodeGenerator.generateFormsCode({ formSchemas: [ { name: "", - schema: {}, // your JSON Schema + schema: {}, // Your JSON Schema }, ], }); @@ -107,7 +103,7 @@ const jbpmFormsCode = jbpmFormCodeGenerator.generateFormsCode({ formSchemas: [ { name: "", - schema: {}, // your JSON Schema + schema: {}, // Your JSON Schema }, ], }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f818971c0a..792f3ca20ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4705,16 +4705,6 @@ importers: version: 5.5.3 packages/form-code-generator: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-json-schema: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) devDependencies: '@kie-tools/eslint': specifier: workspace:* @@ -4849,9 +4839,6 @@ importers: copy-webpack-plugin: specifier: ^11.0.0 version: 11.0.0(webpack@5.94.0) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) From c3b3a856bcb6d2b94ca0ef0fb7801b4f16f77119 Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 19:25:03 -0300 Subject: [PATCH 22/23] Clean up --- pnpm-lock.yaml | 342 ------------------------------------------------- 1 file changed, 342 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e4e73d81fd..f5e8363631b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5148,109 +5148,6 @@ importers: specifier: ^5.5.3 version: 5.5.3 - packages/form-generation-tool: - dependencies: - '@kie-tools/uniforms-bootstrap4-codegen': - specifier: workspace:* - version: link:../uniforms-bootstrap4-codegen - '@kie-tools/uniforms-patternfly-codegen': - specifier: workspace:* - version: link:../uniforms-patternfly-codegen - inquirer: - specifier: ^8.1.1 - version: 8.2.0 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-json-schema: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.16.12 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.11(@babel/core@7.16.12) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.16.12) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/jest-base': - specifier: workspace:* - version: link:../jest-base - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@types/inquirer': - specifier: ^7.3.2 - version: 7.3.3 - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/jest-when': - specifier: ^3.5.5 - version: 3.5.5 - '@types/lodash': - specifier: ^4.14.168 - version: 4.14.169 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-when: - specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - pkg: - specifier: ^5.8.1 - version: 5.8.1(encoding@0.1.13) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - run-script-os: - specifier: ^1.1.6 - version: 1.1.6 - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - webpack: - specifier: ^5.94.0 - version: 5.94.0(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 - packages/i18n: dependencies: react: @@ -12189,127 +12086,6 @@ importers: packages/tsconfig: {} - packages/uniforms-bootstrap4-codegen: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - react: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2 - react-dom: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2(react@17.0.2) - underscore: - specifier: ^1.13.1 - version: 1.13.1 - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-simple-schema-2: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.16.12 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.11(@babel/core@7.16.12) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.16.12) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/jest-base': - specifier: workspace:* - version: link:../jest-base - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@testing-library/react': - specifier: ^12.1.5 - version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/jest-when': - specifier: ^3.5.5 - version: 3.5.5 - '@types/lodash': - specifier: ^4.14.168 - version: 4.14.169 - '@types/prettier': - specifier: ^2.7.3 - version: 2.7.3 - '@types/react': - specifier: ^17.0.6 - version: 17.0.21 - '@types/react-dom': - specifier: ^17.0.5 - version: 17.0.8 - '@types/simpl-schema': - specifier: ^1.12.0 - version: 1.12.0 - '@types/underscore': - specifier: ^1.11.2 - version: 1.11.2 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.94.0) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-when: - specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - raw-loader: - specifier: ^4.0.2 - version: 4.0.2(webpack@5.94.0) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - simpl-schema: - specifier: ^1.12.0 - version: 1.12.0 - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - webpack: - specifier: ^5.94.0 - version: 5.94.0 - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 - packages/uniforms-patternfly: dependencies: '@types/invariant': @@ -12419,124 +12195,6 @@ importers: specifier: ^5.9.0 version: 5.9.0 - packages/uniforms-patternfly-codegen: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - react: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2 - react-dom: - specifier: '>=17.0.2 <19.0.0' - version: 17.0.2(react@17.0.2) - uniforms: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - uniforms-bridge-simple-schema-2: - specifier: ^3.10.2 - version: 3.10.2(react@17.0.2) - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.16.12 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.11(@babel/core@7.16.12) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.16.12) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/jest-base': - specifier: workspace:* - version: link:../jest-base - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@testing-library/jest-dom': - specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - '@testing-library/react': - specifier: ^12.1.5 - version: 12.1.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/jest-when': - specifier: ^3.5.5 - version: 3.5.5 - '@types/lodash': - specifier: ^4.14.168 - version: 4.14.169 - '@types/prettier': - specifier: ^2.7.3 - version: 2.7.3 - '@types/react': - specifier: ^17.0.6 - version: 17.0.21 - '@types/react-dom': - specifier: ^17.0.5 - version: 17.0.8 - '@types/simpl-schema': - specifier: ^1.12.0 - version: 1.12.0 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.94.0(webpack-cli@4.10.0)) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-junit: - specifier: ^16.0.0 - version: 16.0.0 - jest-when: - specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) - raw-loader: - specifier: ^4.0.2 - version: 4.0.2(webpack@5.94.0(webpack-cli@4.10.0)) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - simpl-schema: - specifier: ^1.12.0 - version: 1.12.0 - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) - typescript: - specifier: ^5.5.3 - version: 5.5.3 - webpack: - specifier: ^5.94.0 - version: 5.94.0(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - webpack-node-externals: - specifier: ^3.0.0 - version: 3.0.0 - packages/unitables: dependencies: '@kie-tools-core/i18n': From 8a6c437e44702df671408253dda26f92441d135d Mon Sep 17 00:00:00 2001 From: Luiz Motta Date: Fri, 27 Sep 2024 20:45:35 -0300 Subject: [PATCH 23/23] Add form-code-generator-* to syncpackrc --- .syncpackrc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.syncpackrc.json b/.syncpackrc.json index 7abf816f386..28fc3e2026b 100644 --- a/.syncpackrc.json +++ b/.syncpackrc.json @@ -3,8 +3,8 @@ { "dependencies": ["prettier"], "packages": [ - "@kie-tools/uniforms-bootstrap4-codegen", - "@kie-tools/uniforms-patternfly-codegen", + "@kie-tools/form-code-generator-bootstrap4-theme", + "@kie-tools/form-code-generator-patternfly-theme", "@kie-tools/yaml-language-server" ] },