@carlonicora/nextjs-jsonapi 1.1.1 → 1.3.0
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.
- package/dist/{BlockNoteEditor-6NVBI7XL.js → BlockNoteEditor-CNXQ3WL3.js} +7 -7
- package/dist/{BlockNoteEditor-6NVBI7XL.js.map → BlockNoteEditor-CNXQ3WL3.js.map} +1 -1
- package/dist/{BlockNoteEditor-4VOBTXWC.mjs → BlockNoteEditor-DC33K4IF.mjs} +3 -3
- package/dist/{chunk-KPRHIJO6.js → chunk-KDFDGXCX.js} +53 -53
- package/dist/{chunk-KPRHIJO6.js.map → chunk-KDFDGXCX.js.map} +1 -1
- package/dist/{chunk-FYRFMABS.js → chunk-L6LH7WA4.js} +21 -2
- package/dist/chunk-L6LH7WA4.js.map +1 -0
- package/dist/{chunk-MA2L2PL2.mjs → chunk-MHVXFWZY.mjs} +20 -1
- package/dist/chunk-MHVXFWZY.mjs.map +1 -0
- package/dist/{chunk-HP4Q5ZVG.mjs → chunk-Y4XI3AZR.mjs} +3 -3
- package/dist/client/index.js +3 -3
- package/dist/client/index.mjs +2 -2
- package/dist/components/index.js +3 -3
- package/dist/components/index.mjs +2 -2
- package/dist/contexts/index.js +3 -3
- package/dist/contexts/index.mjs +2 -2
- package/dist/features/index.d.mts +3 -1
- package/dist/features/index.d.ts +3 -1
- package/dist/features/index.js +4 -2
- package/dist/features/index.js.map +1 -1
- package/dist/features/index.mjs +3 -1
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/index.mjs +2 -2
- package/dist/scripts/generate-web-module/generator.d.ts +15 -0
- package/dist/scripts/generate-web-module/generator.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/generator.js +320 -0
- package/dist/scripts/generate-web-module/generator.js.map +1 -0
- package/dist/scripts/generate-web-module/index.d.ts +16 -0
- package/dist/scripts/generate-web-module/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/index.js +80 -0
- package/dist/scripts/generate-web-module/index.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/container.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/container.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/container.template.js +124 -0
- package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/content.template.d.ts +15 -0
- package/dist/scripts/generate-web-module/templates/components/content.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/content.template.js +39 -0
- package/dist/scripts/generate-web-module/templates/components/content.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/deleter.template.js +51 -0
- package/dist/scripts/generate-web-module/templates/components/deleter.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/details.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/details.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/details.template.js +109 -0
- package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/editor.template.js +459 -0
- package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/index.d.ts +15 -0
- package/dist/scripts/generate-web-module/templates/components/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/index.js +29 -0
- package/dist/scripts/generate-web-module/templates/components/index.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/list-container.template.js +30 -0
- package/dist/scripts/generate-web-module/templates/components/list-container.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/list.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/list.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/list.template.js +84 -0
- package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +184 -0
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/components/selector.template.js +199 -0
- package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/context.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/context.template.js +121 -0
- package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/fields.template.js +55 -0
- package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/index.d.ts +10 -0
- package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/index.js +26 -0
- package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/interface.template.js +116 -0
- package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/model.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/data/model.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/model.template.js +274 -0
- package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/service.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/data/service.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/service.template.js +168 -0
- package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/index.d.ts +12 -0
- package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/index.js +37 -0
- package/dist/scripts/generate-web-module/templates/index.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/module.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/module.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/module.template.js +64 -0
- package/dist/scripts/generate-web-module/templates/module.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +65 -0
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/pages/index.d.ts +8 -0
- package/dist/scripts/generate-web-module/templates/pages/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/pages/index.js +13 -0
- package/dist/scripts/generate-web-module/templates/pages/index.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +37 -0
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts +14 -0
- package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/table-hook.template.js +174 -0
- package/dist/scripts/generate-web-module/templates/table-hook.template.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts +55 -0
- package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/field-mapper.js +179 -0
- package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts +78 -0
- package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/i18n-generator.js +182 -0
- package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +106 -0
- package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/import-resolver.js +193 -0
- package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/index.d.ts +12 -0
- package/dist/scripts/generate-web-module/transformers/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/index.js +28 -0
- package/dist/scripts/generate-web-module/transformers/index.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts +60 -0
- package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/name-transformer.js +115 -0
- package/dist/scripts/generate-web-module/transformers/name-transformer.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts +57 -0
- package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/parent-detector.js +88 -0
- package/dist/scripts/generate-web-module/transformers/parent-detector.js.map +1 -0
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +68 -0
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +219 -0
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -0
- package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +68 -0
- package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/types/field-mapping.types.js +129 -0
- package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -0
- package/dist/scripts/generate-web-module/types/index.d.ts +9 -0
- package/dist/scripts/generate-web-module/types/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/types/index.js +25 -0
- package/dist/scripts/generate-web-module/types/index.js.map +1 -0
- package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts +40 -0
- package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/types/json-schema.interface.js +10 -0
- package/dist/scripts/generate-web-module/types/json-schema.interface.js.map +1 -0
- package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +128 -0
- package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/types/template-data.interface.js +9 -0
- package/dist/scripts/generate-web-module/types/template-data.interface.js.map +1 -0
- package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts +29 -0
- package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +153 -0
- package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -0
- package/dist/scripts/generate-web-module/utils/file-writer.d.ts +38 -0
- package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/utils/file-writer.js +126 -0
- package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -0
- package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts +28 -0
- package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/utils/i18n-updater.js +122 -0
- package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -0
- package/dist/scripts/generate-web-module/utils/index.d.ts +9 -0
- package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/utils/index.js +20 -0
- package/dist/scripts/generate-web-module/utils/index.js.map +1 -0
- package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts +46 -0
- package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/validators/json-schema-validator.js +265 -0
- package/dist/scripts/generate-web-module/validators/json-schema-validator.js.map +1 -0
- package/package.json +27 -21
- package/scripts/generate-web-module/generator.ts +363 -0
- package/scripts/generate-web-module/index.ts +49 -0
- package/scripts/generate-web-module/templates/components/container.template.ts +129 -0
- package/scripts/generate-web-module/templates/components/content.template.ts +40 -0
- package/scripts/generate-web-module/templates/components/deleter.template.ts +51 -0
- package/scripts/generate-web-module/templates/components/details.template.ts +115 -0
- package/scripts/generate-web-module/templates/components/editor.template.ts +495 -0
- package/scripts/generate-web-module/templates/components/index.ts +18 -0
- package/scripts/generate-web-module/templates/components/list-container.template.ts +30 -0
- package/scripts/generate-web-module/templates/components/list.template.ts +91 -0
- package/scripts/generate-web-module/templates/components/multi-selector.template.ts +184 -0
- package/scripts/generate-web-module/templates/components/selector.template.ts +199 -0
- package/scripts/generate-web-module/templates/context.template.ts +121 -0
- package/scripts/generate-web-module/templates/data/fields.template.ts +64 -0
- package/scripts/generate-web-module/templates/data/index.ts +10 -0
- package/scripts/generate-web-module/templates/data/interface.template.ts +136 -0
- package/scripts/generate-web-module/templates/data/model.template.ts +327 -0
- package/scripts/generate-web-module/templates/data/service.template.ts +185 -0
- package/scripts/generate-web-module/templates/index.ts +34 -0
- package/scripts/generate-web-module/templates/module.template.ts +69 -0
- package/scripts/generate-web-module/templates/pages/detail-page.template.ts +65 -0
- package/scripts/generate-web-module/templates/pages/index.ts +8 -0
- package/scripts/generate-web-module/templates/pages/list-page.template.ts +37 -0
- package/scripts/generate-web-module/templates/table-hook.template.ts +182 -0
- package/scripts/generate-web-module/transformers/field-mapper.ts +201 -0
- package/scripts/generate-web-module/transformers/i18n-generator.ts +199 -0
- package/scripts/generate-web-module/transformers/import-resolver.ts +250 -0
- package/scripts/generate-web-module/transformers/index.ts +12 -0
- package/scripts/generate-web-module/transformers/name-transformer.ts +115 -0
- package/scripts/generate-web-module/transformers/parent-detector.ts +87 -0
- package/scripts/generate-web-module/transformers/relationship-resolver.ts +221 -0
- package/scripts/generate-web-module/tsconfig.json +24 -0
- package/scripts/generate-web-module/types/field-mapping.types.ts +141 -0
- package/scripts/generate-web-module/types/index.ts +9 -0
- package/scripts/generate-web-module/types/json-schema.interface.ts +42 -0
- package/scripts/generate-web-module/types/template-data.interface.ts +164 -0
- package/scripts/generate-web-module/utils/bootstrapper-updater.ts +145 -0
- package/scripts/generate-web-module/utils/file-writer.ts +115 -0
- package/scripts/generate-web-module/utils/i18n-updater.ts +108 -0
- package/scripts/generate-web-module/utils/index.ts +9 -0
- package/scripts/generate-web-module/validators/json-schema-validator.ts +306 -0
- package/src/features/user/index.ts +1 -1
- package/dist/chunk-FYRFMABS.js.map +0 -1
- package/dist/chunk-MA2L2PL2.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-4VOBTXWC.mjs.map → BlockNoteEditor-DC33K4IF.mjs.map} +0 -0
- /package/dist/{chunk-HP4Q5ZVG.mjs.map → chunk-Y4XI3AZR.mjs.map} +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Field Mapping Types
|
|
4
|
+
*
|
|
5
|
+
* Defines the mapping rules between JSON schema field types
|
|
6
|
+
* and their TypeScript, Zod, and form component equivalents.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_MODULE_ICON = exports.ENTITY_ZOD_SCHEMA = exports.AUTHOR_ZOD_SCHEMA = exports.AUTHOR_VARIANT = exports.STANDARD_FIELDS = exports.CONTENT_INDICATOR_FIELDS = exports.TYPE_TO_FORM_COMPONENT = exports.SPECIAL_FIELD_COMPONENTS = exports.JSON_TO_ZOD_BASE = exports.JSON_TO_TS_TYPE = void 0;
|
|
10
|
+
exports.getTsType = getTsType;
|
|
11
|
+
exports.getZodBase = getZodBase;
|
|
12
|
+
exports.getFormComponent = getFormComponent;
|
|
13
|
+
exports.isContentField = isContentField;
|
|
14
|
+
exports.buildZodSchema = buildZodSchema;
|
|
15
|
+
/**
|
|
16
|
+
* Mapping from JSON type to TypeScript type
|
|
17
|
+
*/
|
|
18
|
+
exports.JSON_TO_TS_TYPE = {
|
|
19
|
+
string: "string",
|
|
20
|
+
number: "number",
|
|
21
|
+
boolean: "boolean",
|
|
22
|
+
date: "Date",
|
|
23
|
+
any: "any",
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Mapping from JSON type to Zod schema (base, without modifiers)
|
|
27
|
+
*/
|
|
28
|
+
exports.JSON_TO_ZOD_BASE = {
|
|
29
|
+
string: "z.string()",
|
|
30
|
+
number: "z.number()",
|
|
31
|
+
boolean: "z.boolean()",
|
|
32
|
+
date: "z.date()",
|
|
33
|
+
any: "z.any()",
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Special field names that get specific form components
|
|
37
|
+
*/
|
|
38
|
+
exports.SPECIAL_FIELD_COMPONENTS = {
|
|
39
|
+
content: "BlockNoteEditor",
|
|
40
|
+
description: "FormTextarea",
|
|
41
|
+
abstract: "FormTextarea",
|
|
42
|
+
body: "FormTextarea",
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Default form component by type
|
|
46
|
+
*/
|
|
47
|
+
exports.TYPE_TO_FORM_COMPONENT = {
|
|
48
|
+
string: "FormInput",
|
|
49
|
+
number: "FormInputNumber",
|
|
50
|
+
boolean: "Checkbox",
|
|
51
|
+
date: "DatePicker",
|
|
52
|
+
any: "FormInput",
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Fields that indicate the module extends Content
|
|
56
|
+
*/
|
|
57
|
+
exports.CONTENT_INDICATOR_FIELDS = ["name", "tldr", "abstract"];
|
|
58
|
+
/**
|
|
59
|
+
* Standard fields added to all modules
|
|
60
|
+
*/
|
|
61
|
+
exports.STANDARD_FIELDS = ["createdAt", "updatedAt"];
|
|
62
|
+
/**
|
|
63
|
+
* Author variant special handling
|
|
64
|
+
*/
|
|
65
|
+
exports.AUTHOR_VARIANT = "Author";
|
|
66
|
+
/**
|
|
67
|
+
* Zod schema for author relationships
|
|
68
|
+
*/
|
|
69
|
+
exports.AUTHOR_ZOD_SCHEMA = "userObjectSchema";
|
|
70
|
+
/**
|
|
71
|
+
* Zod schema for entity relationships (non-author)
|
|
72
|
+
*/
|
|
73
|
+
exports.ENTITY_ZOD_SCHEMA = "entityObjectSchema";
|
|
74
|
+
/**
|
|
75
|
+
* Default icon for new modules
|
|
76
|
+
*/
|
|
77
|
+
exports.DEFAULT_MODULE_ICON = "FileTextIcon";
|
|
78
|
+
/**
|
|
79
|
+
* Get TypeScript type for a field
|
|
80
|
+
*/
|
|
81
|
+
function getTsType(jsonType) {
|
|
82
|
+
return exports.JSON_TO_TS_TYPE[jsonType] || "any";
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get base Zod schema for a field type
|
|
86
|
+
*/
|
|
87
|
+
function getZodBase(jsonType) {
|
|
88
|
+
return exports.JSON_TO_ZOD_BASE[jsonType] || "z.any()";
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get form component for a field
|
|
92
|
+
*/
|
|
93
|
+
function getFormComponent(fieldName, fieldType) {
|
|
94
|
+
// Check for special field names first
|
|
95
|
+
if (exports.SPECIAL_FIELD_COMPONENTS[fieldName]) {
|
|
96
|
+
return exports.SPECIAL_FIELD_COMPONENTS[fieldName];
|
|
97
|
+
}
|
|
98
|
+
// Fall back to type-based component
|
|
99
|
+
return exports.TYPE_TO_FORM_COMPONENT[fieldType] || "FormInput";
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if a field name indicates BlockNoteEditor should be used
|
|
103
|
+
*/
|
|
104
|
+
function isContentField(fieldName) {
|
|
105
|
+
return fieldName === "content";
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Build complete Zod schema for a field
|
|
109
|
+
*/
|
|
110
|
+
function buildZodSchema(fieldType, nullable, fieldName) {
|
|
111
|
+
const base = getZodBase(fieldType);
|
|
112
|
+
// Content fields use z.any()
|
|
113
|
+
if (isContentField(fieldName)) {
|
|
114
|
+
return "z.any()";
|
|
115
|
+
}
|
|
116
|
+
// String fields with min(1) for required
|
|
117
|
+
if (fieldType === "string") {
|
|
118
|
+
if (nullable) {
|
|
119
|
+
return `${base}.optional()`;
|
|
120
|
+
}
|
|
121
|
+
return `${base}.min(1, { message: t(\`features.\${moduleName}.fields.${fieldName}.error\`) })`;
|
|
122
|
+
}
|
|
123
|
+
// Other fields with optional modifier
|
|
124
|
+
if (nullable) {
|
|
125
|
+
return `${base}.optional()`;
|
|
126
|
+
}
|
|
127
|
+
return base;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=field-mapping.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-mapping.types.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/field-mapping.types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAgFH,8BAEC;AAKD,gCAEC;AAKD,4CAOC;AAKD,wCAEC;AAKD,wCAsBC;AAnID;;GAEG;AACU,QAAA,eAAe,GAA2B;IACrD,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;CACX,CAAC;AAEF;;GAEG;AACU,QAAA,gBAAgB,GAA2B;IACtD,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,SAAS;CACf,CAAC;AAEF;;GAEG;AACU,QAAA,wBAAwB,GAAsC;IACzE,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF;;GAEG;AACU,QAAA,sBAAsB,GAAsC;IACvE,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;CACjB,CAAC;AAEF;;GAEG;AACU,QAAA,wBAAwB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAErE;;GAEG;AACU,QAAA,eAAe,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,cAAc,GAAG,QAAQ,CAAC;AAEvC;;GAEG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD;;GAEG;AACU,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD;;GAEG;AACU,QAAA,mBAAmB,GAAG,cAAc,CAAC;AAElD;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAgB;IACxC,OAAO,uBAAe,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACzC,OAAO,wBAAgB,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,SAAiB;IACnE,sCAAsC;IACtC,IAAI,gCAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,gCAAwB,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IACD,oCAAoC;IACpC,OAAO,8BAAsB,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,SAAiB;IAC9C,OAAO,SAAS,KAAK,SAAS,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,SAAiB,EAAE,QAAiB,EAAE,SAAiB;IACpF,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yCAAyC;IACzC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,aAAa,CAAC;QAC9B,CAAC;QACD,OAAO,GAAG,IAAI,yDAAyD,SAAS,cAAc,CAAC;IACjG,CAAC;IAED,sCAAsC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Types Index
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all type definitions for the web module generator.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./json-schema.interface"), exports);
|
|
23
|
+
__exportStar(require("./template-data.interface"), exports);
|
|
24
|
+
__exportStar(require("./field-mapping.types"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,0DAAwC;AACxC,4DAA0C;AAC1C,wDAAsC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Schema Interfaces
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the JSON module definition files
|
|
5
|
+
* located in the /structure folder.
|
|
6
|
+
* Copied from backend generator - shared schema format.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Field definition in JSON schema
|
|
10
|
+
*/
|
|
11
|
+
export interface JsonFieldDefinition {
|
|
12
|
+
name: string;
|
|
13
|
+
type: string;
|
|
14
|
+
nullable: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Relationship definition in JSON schema
|
|
18
|
+
*/
|
|
19
|
+
export interface JsonRelationshipDefinition {
|
|
20
|
+
name: string;
|
|
21
|
+
variant?: string;
|
|
22
|
+
directory: string;
|
|
23
|
+
single: boolean;
|
|
24
|
+
relationshipName: string;
|
|
25
|
+
toNode: boolean;
|
|
26
|
+
nullable: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Complete module definition from JSON
|
|
30
|
+
*/
|
|
31
|
+
export interface JsonModuleDefinition {
|
|
32
|
+
moduleId: string;
|
|
33
|
+
moduleName: string;
|
|
34
|
+
endpointName: string;
|
|
35
|
+
targetDir: string;
|
|
36
|
+
languages: string[];
|
|
37
|
+
fields: JsonFieldDefinition[];
|
|
38
|
+
relationships: JsonRelationshipDefinition[];
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=json-schema.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema.interface.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/json-schema.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,aAAa,EAAE,0BAA0B,EAAE,CAAC;CAC7C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* JSON Schema Interfaces
|
|
4
|
+
*
|
|
5
|
+
* Type definitions for the JSON module definition files
|
|
6
|
+
* located in the /structure folder.
|
|
7
|
+
* Copied from backend generator - shared schema format.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=json-schema.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema.interface.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/json-schema.interface.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frontend Template Data Interfaces
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the data passed to templates
|
|
5
|
+
* during frontend module generation.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Name transformations for different naming conventions
|
|
9
|
+
*/
|
|
10
|
+
export interface NameTransforms {
|
|
11
|
+
pascalCase: string;
|
|
12
|
+
camelCase: string;
|
|
13
|
+
kebabCase: string;
|
|
14
|
+
pluralPascal: string;
|
|
15
|
+
pluralCamel: string;
|
|
16
|
+
pluralKebab: string;
|
|
17
|
+
titleCase: string;
|
|
18
|
+
pluralTitleCase: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Frontend field representation
|
|
22
|
+
*/
|
|
23
|
+
export interface FrontendField {
|
|
24
|
+
name: string;
|
|
25
|
+
type: string;
|
|
26
|
+
tsType: string;
|
|
27
|
+
zodSchema: string;
|
|
28
|
+
formComponent: FormComponentType;
|
|
29
|
+
nullable: boolean;
|
|
30
|
+
isContentField: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Form component types
|
|
34
|
+
*/
|
|
35
|
+
export type FormComponentType = "FormInput" | "FormTextarea" | "BlockNoteEditor" | "Checkbox" | "DatePicker" | "FormInputNumber";
|
|
36
|
+
/**
|
|
37
|
+
* Frontend relationship representation
|
|
38
|
+
*/
|
|
39
|
+
export interface FrontendRelationship {
|
|
40
|
+
name: string;
|
|
41
|
+
variant?: string;
|
|
42
|
+
directory: string;
|
|
43
|
+
single: boolean;
|
|
44
|
+
nullable: boolean;
|
|
45
|
+
formFieldId: string;
|
|
46
|
+
formFieldIdPlural: string;
|
|
47
|
+
payloadFieldId: string;
|
|
48
|
+
selectorComponent: string;
|
|
49
|
+
zodSchema: string;
|
|
50
|
+
importPath: string;
|
|
51
|
+
interfaceImportPath: string;
|
|
52
|
+
serviceImportPath: string;
|
|
53
|
+
interfaceName: string;
|
|
54
|
+
modelKebab: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* i18n key structure
|
|
58
|
+
*/
|
|
59
|
+
export interface I18nKeySet {
|
|
60
|
+
moduleName: string;
|
|
61
|
+
fields: Record<string, {
|
|
62
|
+
label: string;
|
|
63
|
+
placeholder: string;
|
|
64
|
+
error: string;
|
|
65
|
+
}>;
|
|
66
|
+
relationships: Record<string, {
|
|
67
|
+
label: string;
|
|
68
|
+
placeholder: string;
|
|
69
|
+
error: string;
|
|
70
|
+
list: string;
|
|
71
|
+
}>;
|
|
72
|
+
type: {
|
|
73
|
+
singular: string;
|
|
74
|
+
plural: string;
|
|
75
|
+
icuPlural: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Import statement groups
|
|
80
|
+
*/
|
|
81
|
+
export interface ImportStatements {
|
|
82
|
+
models: string[];
|
|
83
|
+
selectors: string[];
|
|
84
|
+
library: string[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Complete template data passed to all templates
|
|
88
|
+
*/
|
|
89
|
+
export interface FrontendTemplateData {
|
|
90
|
+
names: NameTransforms;
|
|
91
|
+
moduleId: string;
|
|
92
|
+
endpoint: string;
|
|
93
|
+
targetDir: "features" | "foundations";
|
|
94
|
+
extendsContent: boolean;
|
|
95
|
+
fields: FrontendField[];
|
|
96
|
+
relationships: FrontendRelationship[];
|
|
97
|
+
i18nKeys: I18nKeySet;
|
|
98
|
+
imports: ImportStatements;
|
|
99
|
+
tableFieldNames: string[];
|
|
100
|
+
relationshipServiceMethods: RelationshipServiceMethod[];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Service method for relationship queries
|
|
104
|
+
*/
|
|
105
|
+
export interface RelationshipServiceMethod {
|
|
106
|
+
methodName: string;
|
|
107
|
+
paramName: string;
|
|
108
|
+
relationshipName: string;
|
|
109
|
+
relationshipEndpoint: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Options for the generator
|
|
113
|
+
*/
|
|
114
|
+
export interface GenerateWebModuleOptions {
|
|
115
|
+
jsonPath: string;
|
|
116
|
+
dryRun?: boolean;
|
|
117
|
+
force?: boolean;
|
|
118
|
+
noRegister?: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Generated file info
|
|
122
|
+
*/
|
|
123
|
+
export interface GeneratedFile {
|
|
124
|
+
path: string;
|
|
125
|
+
content: string;
|
|
126
|
+
type: "data" | "component" | "context" | "hook" | "module" | "page";
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=template-data.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-data.interface.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/template-data.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Frontend Template Data Interfaces
|
|
4
|
+
*
|
|
5
|
+
* Type definitions for the data passed to templates
|
|
6
|
+
* during frontend module generation.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=template-data.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-data.interface.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/types/template-data.interface.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrapper Updater
|
|
3
|
+
*
|
|
4
|
+
* Updates the Bootstrapper.ts file to register new modules.
|
|
5
|
+
*/
|
|
6
|
+
import { FrontendTemplateData } from "../types/template-data.interface";
|
|
7
|
+
export interface BootstrapperUpdateResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
message: string;
|
|
10
|
+
alreadyRegistered?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Update Bootstrapper.ts to add a new module
|
|
14
|
+
*
|
|
15
|
+
* @param data - Frontend template data
|
|
16
|
+
* @param webBasePath - Base path to web app
|
|
17
|
+
* @param dryRun - Whether to perform a dry run
|
|
18
|
+
* @returns Update result
|
|
19
|
+
*/
|
|
20
|
+
export declare function updateBootstrapper(data: FrontendTemplateData, webBasePath: string, dryRun?: boolean): BootstrapperUpdateResult;
|
|
21
|
+
/**
|
|
22
|
+
* Generate the import statement for a module
|
|
23
|
+
*/
|
|
24
|
+
export declare function generateImportStatement(data: FrontendTemplateData): string;
|
|
25
|
+
/**
|
|
26
|
+
* Generate the module registration entry
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateModuleEntry(data: FrontendTemplateData): string;
|
|
29
|
+
//# sourceMappingURL=bootstrapper-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapper-updater.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/bootstrapper-updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAIxE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,OAAe,GACtB,wBAAwB,CAmG1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAG1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAGtE"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Bootstrapper Updater
|
|
4
|
+
*
|
|
5
|
+
* Updates the Bootstrapper.ts file to register new modules.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.updateBootstrapper = updateBootstrapper;
|
|
42
|
+
exports.generateImportStatement = generateImportStatement;
|
|
43
|
+
exports.generateModuleEntry = generateModuleEntry;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const BOOTSTRAPPER_PATH = "apps/web/src/config/Bootstrapper.ts";
|
|
46
|
+
/**
|
|
47
|
+
* Update Bootstrapper.ts to add a new module
|
|
48
|
+
*
|
|
49
|
+
* @param data - Frontend template data
|
|
50
|
+
* @param webBasePath - Base path to web app
|
|
51
|
+
* @param dryRun - Whether to perform a dry run
|
|
52
|
+
* @returns Update result
|
|
53
|
+
*/
|
|
54
|
+
function updateBootstrapper(data, webBasePath, dryRun = false) {
|
|
55
|
+
const { names, targetDir } = data;
|
|
56
|
+
const bootstrapperPath = `${webBasePath}/${BOOTSTRAPPER_PATH}`;
|
|
57
|
+
// Check if file exists
|
|
58
|
+
if (!fs.existsSync(bootstrapperPath)) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
message: `Bootstrapper.ts not found at ${bootstrapperPath}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
let content = fs.readFileSync(bootstrapperPath, "utf-8");
|
|
65
|
+
// Check if module is already registered
|
|
66
|
+
const modulePattern = new RegExp(`${names.pascalCase}Module`, "g");
|
|
67
|
+
if (modulePattern.test(content)) {
|
|
68
|
+
return {
|
|
69
|
+
success: true,
|
|
70
|
+
message: `Module ${names.pascalCase} already registered in Bootstrapper.ts`,
|
|
71
|
+
alreadyRegistered: true,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Add import statement
|
|
75
|
+
const importStatement = `import { ${names.pascalCase}Module } from "@/features/${targetDir}/${names.kebabCase}/${names.pascalCase}Module";`;
|
|
76
|
+
// Find the right place to insert import (after "// Feature module imports" or at end of imports)
|
|
77
|
+
const featureImportsMarker = "// Feature module imports";
|
|
78
|
+
const lastImportMatch = content.match(/^import .* from ".*";$/gm);
|
|
79
|
+
if (content.includes(featureImportsMarker)) {
|
|
80
|
+
// Find the last import after the marker
|
|
81
|
+
const markerIndex = content.indexOf(featureImportsMarker);
|
|
82
|
+
const afterMarker = content.substring(markerIndex);
|
|
83
|
+
const nextNewlineIndex = afterMarker.indexOf("\n");
|
|
84
|
+
const insertPosition = markerIndex + nextNewlineIndex;
|
|
85
|
+
// Find next empty line or start of const
|
|
86
|
+
const afterMarkerContent = content.substring(insertPosition);
|
|
87
|
+
const constIndex = afterMarkerContent.indexOf("\nconst ");
|
|
88
|
+
if (constIndex > 0) {
|
|
89
|
+
const insertAt = insertPosition + constIndex;
|
|
90
|
+
content = content.slice(0, insertAt) + `\n${importStatement}` + content.slice(insertAt);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (lastImportMatch) {
|
|
94
|
+
// Insert after last import
|
|
95
|
+
const lastImport = lastImportMatch[lastImportMatch.length - 1];
|
|
96
|
+
const lastImportIndex = content.lastIndexOf(lastImport);
|
|
97
|
+
const insertAt = lastImportIndex + lastImport.length;
|
|
98
|
+
content = content.slice(0, insertAt) + `\n${importStatement}` + content.slice(insertAt);
|
|
99
|
+
}
|
|
100
|
+
// Add module to allModules object
|
|
101
|
+
const allModulesPattern = /const allModules = \{[^}]+\}/s;
|
|
102
|
+
const allModulesMatch = content.match(allModulesPattern);
|
|
103
|
+
if (allModulesMatch) {
|
|
104
|
+
const allModulesBlock = allModulesMatch[0];
|
|
105
|
+
// Find the last line before closing brace
|
|
106
|
+
const lines = allModulesBlock.split("\n");
|
|
107
|
+
const lastEntryIndex = lines.length - 1;
|
|
108
|
+
// Add new module entry before the closing brace
|
|
109
|
+
const newEntry = ` ${names.pascalCase}: ${names.pascalCase}Module(moduleFactory),`;
|
|
110
|
+
// Find if there's a trailing comma on the last entry
|
|
111
|
+
for (let i = lastEntryIndex - 1; i >= 0; i--) {
|
|
112
|
+
const line = lines[i].trim();
|
|
113
|
+
if (line && !line.startsWith("//")) {
|
|
114
|
+
// Add comma if needed
|
|
115
|
+
if (!line.endsWith(",")) {
|
|
116
|
+
lines[i] = lines[i].replace(/(\s*)$/, ",$1");
|
|
117
|
+
}
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Insert new entry
|
|
122
|
+
lines.splice(lastEntryIndex, 0, newEntry);
|
|
123
|
+
const updatedBlock = lines.join("\n");
|
|
124
|
+
content = content.replace(allModulesBlock, updatedBlock);
|
|
125
|
+
}
|
|
126
|
+
if (dryRun) {
|
|
127
|
+
return {
|
|
128
|
+
success: true,
|
|
129
|
+
message: `[DRY RUN] Would update Bootstrapper.ts with ${names.pascalCase}Module`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// Write updated content
|
|
133
|
+
fs.writeFileSync(bootstrapperPath, content, "utf-8");
|
|
134
|
+
return {
|
|
135
|
+
success: true,
|
|
136
|
+
message: `Updated Bootstrapper.ts with ${names.pascalCase}Module`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Generate the import statement for a module
|
|
141
|
+
*/
|
|
142
|
+
function generateImportStatement(data) {
|
|
143
|
+
const { names, targetDir } = data;
|
|
144
|
+
return `import { ${names.pascalCase}Module } from "@/features/${targetDir}/${names.kebabCase}/${names.pascalCase}Module";`;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Generate the module registration entry
|
|
148
|
+
*/
|
|
149
|
+
function generateModuleEntry(data) {
|
|
150
|
+
const { names } = data;
|
|
151
|
+
return ` ${names.pascalCase}: ${names.pascalCase}Module(moduleFactory),`;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=bootstrapper-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapper-updater.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/bootstrapper-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Writer Utility
|
|
3
|
+
*
|
|
4
|
+
* Handles file writing with conflict detection and directory creation.
|
|
5
|
+
*/
|
|
6
|
+
import { GeneratedFile } from "../types/template-data.interface";
|
|
7
|
+
export interface WriteOptions {
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
force?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface WriteResult {
|
|
12
|
+
path: string;
|
|
13
|
+
status: "created" | "updated" | "skipped" | "dry-run";
|
|
14
|
+
existed: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Write a single file to disk
|
|
18
|
+
*
|
|
19
|
+
* @param file - Generated file data
|
|
20
|
+
* @param options - Write options
|
|
21
|
+
* @returns Write result
|
|
22
|
+
*/
|
|
23
|
+
export declare function writeFile(file: GeneratedFile, options?: WriteOptions): WriteResult;
|
|
24
|
+
/**
|
|
25
|
+
* Write multiple files to disk
|
|
26
|
+
*
|
|
27
|
+
* @param files - Array of generated files
|
|
28
|
+
* @param options - Write options
|
|
29
|
+
* @returns Array of write results
|
|
30
|
+
*/
|
|
31
|
+
export declare function writeFiles(files: GeneratedFile[], options?: WriteOptions): WriteResult[];
|
|
32
|
+
/**
|
|
33
|
+
* Print write results to console
|
|
34
|
+
*
|
|
35
|
+
* @param results - Array of write results
|
|
36
|
+
*/
|
|
37
|
+
export declare function printResults(results: WriteResult[]): void;
|
|
38
|
+
//# sourceMappingURL=file-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/file-writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAmCtF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,EAAE,CAE5F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAiCzD"}
|