@ostack.tech/ui-kform-scaffolder 0.12.2 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,7 +75,7 @@ function UseTableValuesSerializerConfig({
75
75
  );
76
76
  }
77
77
  const loadTsxEjs = 'import { LoadAction } from "@ostack.tech/ui-kform";\nimport { decode<%= formClass %>FromString, <%= formClass %>FormMode } from "<%= kmpModuleName %>";\nimport { use<%= formClass %>Context } from "../<%= formClass %>Context.ts";\n\nexport function Load() {\n const { externalContexts } = use<%= formClass %>Context();\n\n return (\n externalContexts.mode !== <%= formClass %>FormMode.READ && (\n <LoadAction\n decode={async (file) => decode<%= formClass %>FromString(await file.text())}\n mimeTypes={["<%= serializationMimeType %>"]}\n extensions={[".<%= serializationFormat %>"]}\n />\n )\n );\n}\n';
78
- const saveTsxEjs = 'import { SaveAction } from "@ostack.tech/ui-kform";\nimport { format } from "date-fns";\nimport { type <%= formClass %>, encode<%= formClass %>ToString, <%= formClass %>FormMode } from "<%= kmpModuleName %>";\nimport { use<%= formClass %>Context } from "../<%= formClass %>Context.ts";\n\nexport function Save() {\n const { externalContexts } = use<%= formClass %>Context();\n\n return (\n <SaveAction\n encode={(<%= formVar %>: <%= formClass %>) => encode<%= formClass %>ToString(<%= formVar %>, true)}\n disableOverwrite={externalContexts.mode === <%= formClass %>FormMode.READ}\n mimeTypes={["<%= serializationMimeType %>"]}\n extensions={[".<%= serializationFormat %>"]}\n />\n );\n}\n';
78
+ const saveTsxEjs = 'import { SaveAction } from "@ostack.tech/ui-kform";\nimport { type <%= formClass %>, encode<%= formClass %>ToString, <%= formClass %>FormMode } from "<%= kmpModuleName %>";\nimport { use<%= formClass %>Context } from "../<%= formClass %>Context.ts";\n\nexport function Save() {\n const { externalContexts } = use<%= formClass %>Context();\n\n return (\n <SaveAction\n encode={(<%= formVar %>: <%= formClass %>) => encode<%= formClass %>ToString(<%= formVar %>, true)}\n disableOverwrite={externalContexts.mode === <%= formClass %>FormMode.READ}\n mimeTypes={["<%= serializationMimeType %>"]}\n extensions={[".<%= serializationFormat %>"]}\n />\n );\n}\n';
79
79
  const submitTsxEjs = 'import { LocatedValidationWarning } from "@ostack.tech/kform";\nimport { SubmitAction } from "@ostack.tech/ui-kform";\nimport {\n type <%= formClass %>,\n <%= formClass %>FormMode,\n <%= formClass %>SubmitSuccess,\n <%= formClass %>SubmitValidationError,\n <%= formClass %>SubmitError,\n} from "<%= kmpModuleName %>";\nimport { use<%= formClass %>Context } from "../<%= formClass %>Context.ts";\nimport { submit } from "../api/submit.ts";\n\nexport function Submit() {\n const { externalContexts } = use<%= formClass %>Context();\n\n const handleSubmit = async (\n <%= formVar %>: <%= formClass %>,\n acceptedWarnings?: LocatedValidationWarning[],\n ) => {\n const response = await submit(<%= formVar %>, acceptedWarnings);\n if (response instanceof <%= formClass %>SubmitSuccess) {\n return response.redirectTo;\n } else if (response instanceof <%= formClass %>SubmitValidationError) {\n return response.issues;\n } else {\n throw response as <%= formClass %>SubmitError;\n }\n };\n\n const handleSuccessfulSubmit = (redirectTo: string) => {\n window.location.href = redirectTo;\n };\n\n return (\n externalContexts.mode !== <%= formClass %>FormMode.READ && (\n <SubmitAction\n onSubmit={handleSubmit}\n onSuccessfulSubmit={handleSuccessfulSubmit}\n <%_ if (useTableValuesSerializer) { -%>\n convertExternalIssuesTableRowIndicesToIds\n <%_ } -%>\n />\n )\n );\n}\n';
80
80
  const validateTsxEjs = 'import { ValidateAction } from "@ostack.tech/ui-kform";\nimport { <%= formClass %>FormMode } from "<%= kmpModuleName %>";\nimport { use<%= formClass %>Context } from "../<%= formClass %>Context.ts";\n\nexport function Validate() {\n const { externalContexts } = use<%= formClass %>Context();\n\n return externalContexts.mode !== <%= formClass %>FormMode.READ && <ValidateAction />;\n}\n';
81
81
  function scaffoldActions(schematic, data) {
@@ -113,7 +113,11 @@ function scaffoldApi(schematic, data) {
113
113
  addEjsTemplateFile(data, "api/reportError.ts", reportErrorTsEjs, ejsData);
114
114
  addEjsTemplateFile(data, "api/submit.ts", submitTsEjs, ejsData);
115
115
  }
116
+ const DEFAULT_SCAFFOLD_ISSUE_MESSAGES = true;
116
117
  function scaffoldIssueMessages(schematic, data) {
118
+ if (!shouldScaffoldIssueMessages(data)) {
119
+ return;
120
+ }
117
121
  const fileName = joinPaths(
118
122
  data.currentDir,
119
123
  `${schematic.name}IssueMessages.tsx`
@@ -128,6 +132,9 @@ function scaffoldIssueMessages(schematic, data) {
128
132
  currentFile: file
129
133
  });
130
134
  }
135
+ function shouldScaffoldIssueMessages(data) {
136
+ return data.scaffoldIssueMessages ?? DEFAULT_SCAFFOLD_ISSUE_MESSAGES;
137
+ }
131
138
  function scaffoldIssueMessagesConstant(schematic, data) {
132
139
  data.currentFile.imports.push({
133
140
  moduleName: "@ostack.tech/ui-kform",
@@ -751,7 +758,7 @@ function layoutAnnex(schematic, data) {
751
758
  }
752
759
  return { schematic, data, formPages };
753
760
  }
754
- const DEFAULT_ACTIVE_PATH_SEARCH_PARAM = "activePath";
761
+ const DEFAULT_ACTIVE_PATH_SEARCH_PARAM = "page";
755
762
  function scaffoldAppComponent(schematic, data) {
756
763
  const fileName = joinPaths(data.currentDir, `${schematic.name}App.tsx`);
757
764
  let file = data.files.get(fileName);
@@ -781,12 +788,17 @@ function scaffoldAppComponentFile(schematic, data) {
781
788
  {
782
789
  moduleName: `./${schematic.name}Context.ts`,
783
790
  name: `use${schematic.name}Context`
784
- },
785
- {
786
- moduleName: `./${schematic.name}IssueMessages.tsx`,
787
- name: `${constantCase(schematic.name)}_ISSUE_MESSAGES`
788
791
  }
789
792
  );
793
+ let issueMessagesProp = "";
794
+ if (shouldScaffoldIssueMessages(data)) {
795
+ data.currentFile.imports.push({
796
+ moduleName: `./${schematic.name}IssueMessages.tsx`,
797
+ name: `${constantCase(schematic.name)}_ISSUE_MESSAGES`
798
+ });
799
+ issueMessagesProp = `
800
+ issueMessages={${constantCase(schematic.name)}_ISSUE_MESSAGES}`;
801
+ }
790
802
  data.currentFile.declarations.push(code`
791
803
  export function ${schematic.name}App() {
792
804
  const { externalContexts } = use${schematic.name}Context();
@@ -812,8 +824,7 @@ function scaffoldAppComponentFile(schematic, data) {
812
824
  }
813
825
  formTitle="${capitalCase(schematic.name)}"
814
826
  activePath={activePath}
815
- onActivePathChange={setActivePath}
816
- issueMessages={${constantCase(schematic.name)}_ISSUE_MESSAGES}
827
+ onActivePathChange={setActivePath}${issueMessagesProp}
817
828
  defaultLocale={${localeVar}}
818
829
  reportError={reportError}
819
830
  >
@@ -912,7 +923,7 @@ function scaffoldFormPage(data, annex, formPage) {
912
923
  }
913
924
  );
914
925
  let issueMessagesProp = "";
915
- if (formPage.data.currentPath !== "/") {
926
+ if (shouldScaffoldIssueMessages(data) && formPage.data.currentPath !== "/") {
916
927
  data.currentFile.imports.push({
917
928
  moduleName: `./${joinPaths(
918
929
  formPage.data.currentDir.slice(
@@ -1418,23 +1429,21 @@ function scaffoldMainDeclarations(schematic, data) {
1418
1429
  }
1419
1430
  );
1420
1431
  data.currentFile.declarations.push(code`
1421
- declare global {
1422
- function render${schematic.name}App(): void;
1423
- }
1424
- globalThis.render${schematic.name}App = () => {
1425
- const root = document.getElementById("${kebabCase(schematic.name)}-app-root")!;
1426
- const externalContexts = decode${schematic.name}ExternalContextsFromString(
1427
- root.dataset.externalContexts!,
1428
- );
1429
-
1430
- createRoot(root).render(
1432
+ export function renderRoot(encodedExternalContexts: string) {
1433
+ createRoot(document.getElementById("${kebabCase(schematic.name)}-app-root")!).render(
1431
1434
  <StrictMode>
1432
- <${schematic.name}Context.Provider value={{ externalContexts }}>
1435
+ <${schematic.name}Context.Provider
1436
+ value={{
1437
+ externalContexts: decode${schematic.name}ExternalContextsFromString(
1438
+ encodedExternalContexts,
1439
+ ),
1440
+ }}
1441
+ >
1433
1442
  <${schematic.name}App />
1434
1443
  </${schematic.name}Context.Provider>
1435
1444
  </StrictMode>,
1436
1445
  );
1437
- };
1446
+ }
1438
1447
  `);
1439
1448
  }
1440
1449
  const editorconfig = "# http://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\nmax_line_length = 80\ntrim_trailing_whitespace = true\n\n[*.bat]\nend_of_line = crlf\n\n[{*.kt,*.kts,*.md}]\nindent_size = 4\nmax_line_length = 100\n";
@@ -1463,13 +1472,13 @@ function scaffoldStyles(_schematic, data) {
1463
1472
  addTemplateFile(data, "index.scss", indexScss);
1464
1473
  }
1465
1474
  const eslintConfigJs = 'import js from "@eslint/js";\nimport { defineConfig, globalIgnores } from "eslint/config";\nimport reactHooks from "eslint-plugin-react-hooks";\nimport reactRefresh from "eslint-plugin-react-refresh";\nimport globals from "globals";\nimport tseslint from "typescript-eslint";\n\nexport default defineConfig([\n globalIgnores([".gradle", "build"]),\n {\n files: ["**/*.{ts,tsx}"],\n extends: [\n js.configs.recommended,\n tseslint.configs.recommended,\n reactHooks.configs.flat.recommended,\n reactRefresh.configs.vite,\n ],\n languageOptions: {\n ecmaVersion: 2020,\n globals: globals.browser,\n },\n },\n]);\n';
1466
- const indexHtmlEjs = '<!doctype html>\n<html lang="en">\n <head>\n <meta charset="UTF-8" />\n <link rel="icon" type="image/svg+xml" href="/vite.svg" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <title><%= formTitle %></title>\n <style>\n body {\n margin: 0;\n }\n </style>\n </head>\n <body>\n <div\n id="<%= formId %>-app-root"\n data-external-contexts="<%= externalContextsData %>"\n ></div>\n <script type="module" src="/src/main.tsx"><\/script>\n <script type="module">\n render<%= formClass %>App();\n <\/script>\n </body>\n</html>\n';
1475
+ const indexHtmlEjs = '<!doctype html>\n<html lang="en">\n <head>\n <meta charset="UTF-8" />\n <link rel="icon" type="image/svg+xml" href="/vite.svg" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <title><%= formTitle %></title>\n <style>\n body {\n margin: 0;\n }\n </style>\n </head>\n <body>\n <div id="<%= formId %>-app-root"></div>\n <script type="module">\n import { renderRoot } from "/src/main.tsx";\n\n renderRoot(<%- encodedExternalContexts %>);\n <\/script>\n </body>\n</html>\n';
1467
1476
  const packageJsonEjs = '{\n "name": "<%= formId %>-react-app",\n "private": true,\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "tsc -b && vite build",\n "lint": "eslint .",\n "preview": "vite preview"\n },\n "dependencies": {\n "@fortawesome/fontawesome-svg-core": "<%= dependencyVersions["@fortawesome/fontawesome-svg-core"] %>",\n "@fortawesome/free-regular-svg-icons": "<%= dependencyVersions["@fortawesome/free-regular-svg-icons"] %>",\n "@fortawesome/free-solid-svg-icons": "<%= dependencyVersions["@fortawesome/free-solid-svg-icons"] %>",\n "@ostack.tech/kform-react": "~<%= kFormVersion %>",\n "@ostack.tech/ui": "~<%= ostackUiVersion %>",\n "@ostack.tech/ui-kform": "~<%= ostackUiVersion %>",\n "date-fns": "<%= dependencyVersions["date-fns"] %>",\n "<%= formId %>-shared": "file:../shared/build/<%= formId %>-shared-0.0.1.tgz",\n "react": "<%= dependencyVersions.react %>",\n "react-dom": "<%= dependencyVersions["react-dom"] %>"\n },\n "devDependencies": {\n "@eslint/js": "<%= dependencyVersions["@eslint/js"] %>",\n "@types/node": "<%= dependencyVersions["@types/node"] %>",\n "@types/ostack.tech__kform": "npm:@ostack.tech/kform@~<%= kFormVersion %>",\n "@types/react": "<%= dependencyVersions["@types/react"] %>",\n "@types/react-dom": "<%= dependencyVersions["@types/react-dom"] %>",\n "@vitejs/plugin-react": "<%= dependencyVersions["@vitejs/plugin-react"] %>",\n "eslint": "<%= dependencyVersions.eslint %>",\n "eslint-plugin-react-hooks": "<%= dependencyVersions["eslint-plugin-react-hooks"] %>",\n "eslint-plugin-react-refresh": "<%= dependencyVersions["eslint-plugin-react-refresh"] %>",\n "globals": "<%= dependencyVersions.globals %>",\n "sass-embedded": "<%= dependencyVersions["sass-embedded"] %>",\n "typescript": "<%= dependencyVersions.typescript %>",\n "typescript-eslint": "<%= dependencyVersions["typescript-eslint"] %>",\n "vite": "<%= dependencyVersions.vite %>"\n }\n}\n';
1468
1477
  const viteSvg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>\n';
1469
1478
  const tsConfigAppJson = '{\n "compilerOptions": {\n "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",\n "target": "ES2022",\n "useDefineForClassFields": true,\n "lib": ["ES2022", "DOM", "DOM.Iterable"],\n "module": "ESNext",\n "types": ["vite/client"],\n "skipLibCheck": true,\n\n /* Bundler mode */\n "moduleResolution": "bundler",\n "allowImportingTsExtensions": true,\n "verbatimModuleSyntax": true,\n "moduleDetection": "force",\n "noEmit": true,\n "jsx": "react-jsx",\n\n /* Linting */\n "strict": true,\n "noUnusedLocals": true,\n "noUnusedParameters": true,\n "erasableSyntaxOnly": true,\n "noFallthroughCasesInSwitch": true,\n "noUncheckedSideEffectImports": true\n },\n "include": ["src"]\n}\n';
1470
1479
  const tsConfigJson = '{\n "files": [],\n "references": [\n { "path": "./tsconfig.app.json" },\n { "path": "./tsconfig.node.json" }\n ]\n}\n';
1471
1480
  const tsConfigNodeJson = '{\n "compilerOptions": {\n "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",\n "target": "ES2023",\n "lib": ["ES2023"],\n "module": "ESNext",\n "types": ["node"],\n "skipLibCheck": true,\n\n /* Bundler mode */\n "moduleResolution": "bundler",\n "allowImportingTsExtensions": true,\n "verbatimModuleSyntax": true,\n "moduleDetection": "force",\n "noEmit": true,\n\n /* Linting */\n "strict": true,\n "noUnusedLocals": true,\n "noUnusedParameters": true,\n "erasableSyntaxOnly": true,\n "noFallthroughCasesInSwitch": true,\n "noUncheckedSideEffectImports": true\n },\n "include": ["vite.config.ts"]\n}\n';
1472
- const viteConfigTsEjs = 'import { resolve } from "node:path";\n\nimport react from "@vitejs/plugin-react";\nimport { defineConfig } from "vite";\n\n// https://vite.dev/config/\nexport default defineConfig({\n plugins: [react()],\n build: {\n outDir: "<%= viteConfigOutDir %>",\n rollupOptions: {\n input: {\n "<%= formId %>-app":\n process.env.VITE_BUILD_REASON === "preview"\n ? "index.html"\n : "src/main.tsx",\n },\n output: {\n // Output files without hashes, making it easier to serve them in the\n // server. However, the server is expected to somehow "version" them for\n // cache busting purposes.\n entryFileNames: "assets/[name].js",\n chunkFileNames: "assets/[name].js",\n assetFileNames: "assets/[name].[ext]",\n },\n },\n },\n resolve: {\n alias: [\n // Due to how Kotlin "bundles" dependencies, we need to use the\n // `@ostack.tech/kform` produced by the shared module.\n {\n find: "@ostack.tech/kform",\n replacement: resolve(\n import.meta.dirname,\n "node_modules/<%= formId %>-shared/ostack-kform.mjs",\n ),\n },\n ],\n },\n server: {\n proxy: { "<%= apiBasePath %>": "<%= viteConfigProxyTarget %>" },\n },\n});\n';
1481
+ const viteConfigTsEjs = 'import { resolve } from "node:path";\n\nimport react from "@vitejs/plugin-react";\nimport { defineConfig } from "vite";\n\n// https://vite.dev/config/\nexport default defineConfig({\n plugins: [react()],\n build: {\n outDir: "<%= viteConfigOutDir %>",\n rollupOptions: {\n preserveEntrySignatures: "exports-only",\n input: {\n "<%= formId %>-app":\n process.env.VITE_BUILD_REASON === "preview"\n ? "index.html"\n : "src/main.tsx",\n },\n output: {\n // Output files without hashes, making it easier to serve them in the\n // server. However, the server is expected to somehow "version" them for\n // cache busting purposes.\n entryFileNames: "assets/[name].js",\n chunkFileNames: "assets/[name].js",\n assetFileNames: "assets/[name].[ext]",\n },\n },\n },\n resolve: {\n alias: {\n // Due to how Kotlin "bundles" dependencies, we need to use the\n // `@ostack.tech/kform` produced by the shared module.\n "@ostack.tech/kform": resolve(\n import.meta.dirname,\n "node_modules/<%= formId %>-shared/ostack-kform.mjs",\n ),\n },\n },\n server: {\n proxy: { "<%= apiBasePath %>": "<%= viteConfigProxyTarget %>" },\n },\n});\n';
1473
1482
  const DEFAULT_VITE_CONFIG_OUT_DIR = "build/dist/";
1474
1483
  const DEFAULT_VITE_CONFIG_PROXY_TARGET = "http://127.0.0.1:8080/";
1475
1484
  function scaffoldViteProject(schematic, data) {
@@ -1477,10 +1486,12 @@ function scaffoldViteProject(schematic, data) {
1477
1486
  formId: kebabCase(schematic.name),
1478
1487
  formClass: schematic.name,
1479
1488
  formTitle: capitalCase(schematic.name),
1480
- ostackUiVersion: "0.12.2",
1489
+ ostackUiVersion: "0.12.4",
1481
1490
  kFormVersion: "0.32.4",
1482
1491
  dependencyVersions: JSON.parse('{"@eslint/js":"^9.39.3","@fortawesome/fontawesome-svg-core":"^7.2.0","@fortawesome/free-brands-svg-icons":"^7.2.0","@fortawesome/free-regular-svg-icons":"^7.2.0","@fortawesome/free-solid-svg-icons":"^7.2.0","@ostack.tech/kform":"^0.32.4","@ostack.tech/kform-react":"^0.32.4","@ostack.tech/kform-scaffolder":"^0.32.4","@storybook/addon-docs":"^10.2.14","@storybook/addon-links":"^10.2.14","@storybook/react-vite":"^10.2.14","@types/node":"^22.19.13","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","change-case":"^5.4.4","cpy-cli":"^7.0.0","date-fns":"^4.1.0","eslint":"^9.39.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2","eslint-plugin-simple-import-sort":"^12.1.1","eslint-plugin-storybook":"^10.2.14","globals":"^17.4.0","happy-dom":"^20.7.0","lint-staged":"^16.3.1","prettier":"^3.8.1","prettier-plugin-jsdoc":"^1.8.0","react":"^19.2.4","react-dom":"^19.2.4","rimraf":"^6.1.3","sass-embedded":"^1.97.3","simple-git-hooks":"^2.13.1","storybook":"^10.2.14","terser":"^5.46.0","tslib":"^2.8.1","typescript":"~5.9.3","typescript-eslint":"^8.56.1","vite":"^7.3.1","vite-plugin-dts":"^4.5.4","vitest":"^4.0.18","write-excel-file":"^3.0.5","zustand":"^5.0.11"}'),
1483
- externalContextsData: data.serializationFormat === "json" ? "{}" : `<${schematic.name}ExternalContexts />`,
1492
+ encodedExternalContexts: JSON.stringify(
1493
+ data.serializationFormat === "json" ? "{}" : `<${schematic.name}ExternalContexts />`
1494
+ ),
1484
1495
  apiBasePath: data.apiBasePath ?? DEFAULT_API_BASE_PATH,
1485
1496
  viteConfigOutDir: data.viteConfigOutDir ?? DEFAULT_VITE_CONFIG_OUT_DIR,
1486
1497
  viteConfigProxyTarget: data.viteConfigProxyTarget ?? DEFAULT_VITE_CONFIG_PROXY_TARGET
@@ -1539,7 +1550,7 @@ function SchematicBuilder({
1539
1550
  /* @__PURE__ */ jsx(SerializationFormatConfig, {}),
1540
1551
  /* @__PURE__ */ jsx(UseTableValuesSerializerConfig, {})
1541
1552
  ] }),
1542
- version = "0.12.2",
1553
+ version = "0.12.4",
1543
1554
  ...otherProps
1544
1555
  }) {
1545
1556
  return /* @__PURE__ */ jsx(
@@ -1611,6 +1622,7 @@ export {
1611
1622
  scaffoldStyles,
1612
1623
  scaffoldViteProject,
1613
1624
  shortSchematicKind,
1625
+ shouldScaffoldIssueMessages,
1614
1626
  stringSchematicKind,
1615
1627
  tableAnnexesSchematicKind,
1616
1628
  tableSchematicKind