@carlonicora/nextjs-jsonapi 1.2.0 → 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.
Files changed (202) hide show
  1. package/dist/scripts/generate-web-module/generator.d.ts +15 -0
  2. package/dist/scripts/generate-web-module/generator.d.ts.map +1 -0
  3. package/dist/scripts/generate-web-module/generator.js +320 -0
  4. package/dist/scripts/generate-web-module/generator.js.map +1 -0
  5. package/dist/scripts/generate-web-module/index.d.ts +16 -0
  6. package/dist/scripts/generate-web-module/index.d.ts.map +1 -0
  7. package/dist/scripts/generate-web-module/index.js +80 -0
  8. package/dist/scripts/generate-web-module/index.js.map +1 -0
  9. package/dist/scripts/generate-web-module/templates/components/container.template.d.ts +14 -0
  10. package/dist/scripts/generate-web-module/templates/components/container.template.d.ts.map +1 -0
  11. package/dist/scripts/generate-web-module/templates/components/container.template.js +124 -0
  12. package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -0
  13. package/dist/scripts/generate-web-module/templates/components/content.template.d.ts +15 -0
  14. package/dist/scripts/generate-web-module/templates/components/content.template.d.ts.map +1 -0
  15. package/dist/scripts/generate-web-module/templates/components/content.template.js +39 -0
  16. package/dist/scripts/generate-web-module/templates/components/content.template.js.map +1 -0
  17. package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts +14 -0
  18. package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts.map +1 -0
  19. package/dist/scripts/generate-web-module/templates/components/deleter.template.js +51 -0
  20. package/dist/scripts/generate-web-module/templates/components/deleter.template.js.map +1 -0
  21. package/dist/scripts/generate-web-module/templates/components/details.template.d.ts +14 -0
  22. package/dist/scripts/generate-web-module/templates/components/details.template.d.ts.map +1 -0
  23. package/dist/scripts/generate-web-module/templates/components/details.template.js +109 -0
  24. package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -0
  25. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts +14 -0
  26. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -0
  27. package/dist/scripts/generate-web-module/templates/components/editor.template.js +459 -0
  28. package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -0
  29. package/dist/scripts/generate-web-module/templates/components/index.d.ts +15 -0
  30. package/dist/scripts/generate-web-module/templates/components/index.d.ts.map +1 -0
  31. package/dist/scripts/generate-web-module/templates/components/index.js +29 -0
  32. package/dist/scripts/generate-web-module/templates/components/index.js.map +1 -0
  33. package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts +14 -0
  34. package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts.map +1 -0
  35. package/dist/scripts/generate-web-module/templates/components/list-container.template.js +30 -0
  36. package/dist/scripts/generate-web-module/templates/components/list-container.template.js.map +1 -0
  37. package/dist/scripts/generate-web-module/templates/components/list.template.d.ts +14 -0
  38. package/dist/scripts/generate-web-module/templates/components/list.template.d.ts.map +1 -0
  39. package/dist/scripts/generate-web-module/templates/components/list.template.js +84 -0
  40. package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -0
  41. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts +14 -0
  42. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -0
  43. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +184 -0
  44. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -0
  45. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts +14 -0
  46. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -0
  47. package/dist/scripts/generate-web-module/templates/components/selector.template.js +199 -0
  48. package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -0
  49. package/dist/scripts/generate-web-module/templates/context.template.d.ts +14 -0
  50. package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -0
  51. package/dist/scripts/generate-web-module/templates/context.template.js +121 -0
  52. package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -0
  53. package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts +14 -0
  54. package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts.map +1 -0
  55. package/dist/scripts/generate-web-module/templates/data/fields.template.js +55 -0
  56. package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -0
  57. package/dist/scripts/generate-web-module/templates/data/index.d.ts +10 -0
  58. package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -0
  59. package/dist/scripts/generate-web-module/templates/data/index.js +26 -0
  60. package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -0
  61. package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts +14 -0
  62. package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts.map +1 -0
  63. package/dist/scripts/generate-web-module/templates/data/interface.template.js +116 -0
  64. package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -0
  65. package/dist/scripts/generate-web-module/templates/data/model.template.d.ts +14 -0
  66. package/dist/scripts/generate-web-module/templates/data/model.template.d.ts.map +1 -0
  67. package/dist/scripts/generate-web-module/templates/data/model.template.js +274 -0
  68. package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -0
  69. package/dist/scripts/generate-web-module/templates/data/service.template.d.ts +14 -0
  70. package/dist/scripts/generate-web-module/templates/data/service.template.d.ts.map +1 -0
  71. package/dist/scripts/generate-web-module/templates/data/service.template.js +168 -0
  72. package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -0
  73. package/dist/scripts/generate-web-module/templates/index.d.ts +12 -0
  74. package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -0
  75. package/dist/scripts/generate-web-module/templates/index.js +37 -0
  76. package/dist/scripts/generate-web-module/templates/index.js.map +1 -0
  77. package/dist/scripts/generate-web-module/templates/module.template.d.ts +14 -0
  78. package/dist/scripts/generate-web-module/templates/module.template.d.ts.map +1 -0
  79. package/dist/scripts/generate-web-module/templates/module.template.js +64 -0
  80. package/dist/scripts/generate-web-module/templates/module.template.js.map +1 -0
  81. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts +14 -0
  82. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -0
  83. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +65 -0
  84. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -0
  85. package/dist/scripts/generate-web-module/templates/pages/index.d.ts +8 -0
  86. package/dist/scripts/generate-web-module/templates/pages/index.d.ts.map +1 -0
  87. package/dist/scripts/generate-web-module/templates/pages/index.js +13 -0
  88. package/dist/scripts/generate-web-module/templates/pages/index.js.map +1 -0
  89. package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts +14 -0
  90. package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts.map +1 -0
  91. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +37 -0
  92. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -0
  93. package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts +14 -0
  94. package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts.map +1 -0
  95. package/dist/scripts/generate-web-module/templates/table-hook.template.js +174 -0
  96. package/dist/scripts/generate-web-module/templates/table-hook.template.js.map +1 -0
  97. package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts +55 -0
  98. package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts.map +1 -0
  99. package/dist/scripts/generate-web-module/transformers/field-mapper.js +179 -0
  100. package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -0
  101. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts +78 -0
  102. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts.map +1 -0
  103. package/dist/scripts/generate-web-module/transformers/i18n-generator.js +182 -0
  104. package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -0
  105. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +106 -0
  106. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -0
  107. package/dist/scripts/generate-web-module/transformers/import-resolver.js +193 -0
  108. package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -0
  109. package/dist/scripts/generate-web-module/transformers/index.d.ts +12 -0
  110. package/dist/scripts/generate-web-module/transformers/index.d.ts.map +1 -0
  111. package/dist/scripts/generate-web-module/transformers/index.js +28 -0
  112. package/dist/scripts/generate-web-module/transformers/index.js.map +1 -0
  113. package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts +60 -0
  114. package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts.map +1 -0
  115. package/dist/scripts/generate-web-module/transformers/name-transformer.js +115 -0
  116. package/dist/scripts/generate-web-module/transformers/name-transformer.js.map +1 -0
  117. package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts +57 -0
  118. package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts.map +1 -0
  119. package/dist/scripts/generate-web-module/transformers/parent-detector.js +88 -0
  120. package/dist/scripts/generate-web-module/transformers/parent-detector.js.map +1 -0
  121. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +68 -0
  122. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -0
  123. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +219 -0
  124. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -0
  125. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +68 -0
  126. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -0
  127. package/dist/scripts/generate-web-module/types/field-mapping.types.js +129 -0
  128. package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -0
  129. package/dist/scripts/generate-web-module/types/index.d.ts +9 -0
  130. package/dist/scripts/generate-web-module/types/index.d.ts.map +1 -0
  131. package/dist/scripts/generate-web-module/types/index.js +25 -0
  132. package/dist/scripts/generate-web-module/types/index.js.map +1 -0
  133. package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts +40 -0
  134. package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts.map +1 -0
  135. package/dist/scripts/generate-web-module/types/json-schema.interface.js +10 -0
  136. package/dist/scripts/generate-web-module/types/json-schema.interface.js.map +1 -0
  137. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +128 -0
  138. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -0
  139. package/dist/scripts/generate-web-module/types/template-data.interface.js +9 -0
  140. package/dist/scripts/generate-web-module/types/template-data.interface.js.map +1 -0
  141. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts +29 -0
  142. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts.map +1 -0
  143. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +153 -0
  144. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -0
  145. package/dist/scripts/generate-web-module/utils/file-writer.d.ts +38 -0
  146. package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -0
  147. package/dist/scripts/generate-web-module/utils/file-writer.js +126 -0
  148. package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -0
  149. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts +28 -0
  150. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts.map +1 -0
  151. package/dist/scripts/generate-web-module/utils/i18n-updater.js +122 -0
  152. package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -0
  153. package/dist/scripts/generate-web-module/utils/index.d.ts +9 -0
  154. package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -0
  155. package/dist/scripts/generate-web-module/utils/index.js +20 -0
  156. package/dist/scripts/generate-web-module/utils/index.js.map +1 -0
  157. package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts +46 -0
  158. package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts.map +1 -0
  159. package/dist/scripts/generate-web-module/validators/json-schema-validator.js +265 -0
  160. package/dist/scripts/generate-web-module/validators/json-schema-validator.js.map +1 -0
  161. package/package.json +27 -21
  162. package/scripts/generate-web-module/generator.ts +363 -0
  163. package/scripts/generate-web-module/index.ts +49 -0
  164. package/scripts/generate-web-module/templates/components/container.template.ts +129 -0
  165. package/scripts/generate-web-module/templates/components/content.template.ts +40 -0
  166. package/scripts/generate-web-module/templates/components/deleter.template.ts +51 -0
  167. package/scripts/generate-web-module/templates/components/details.template.ts +115 -0
  168. package/scripts/generate-web-module/templates/components/editor.template.ts +495 -0
  169. package/scripts/generate-web-module/templates/components/index.ts +18 -0
  170. package/scripts/generate-web-module/templates/components/list-container.template.ts +30 -0
  171. package/scripts/generate-web-module/templates/components/list.template.ts +91 -0
  172. package/scripts/generate-web-module/templates/components/multi-selector.template.ts +184 -0
  173. package/scripts/generate-web-module/templates/components/selector.template.ts +199 -0
  174. package/scripts/generate-web-module/templates/context.template.ts +121 -0
  175. package/scripts/generate-web-module/templates/data/fields.template.ts +64 -0
  176. package/scripts/generate-web-module/templates/data/index.ts +10 -0
  177. package/scripts/generate-web-module/templates/data/interface.template.ts +136 -0
  178. package/scripts/generate-web-module/templates/data/model.template.ts +327 -0
  179. package/scripts/generate-web-module/templates/data/service.template.ts +185 -0
  180. package/scripts/generate-web-module/templates/index.ts +34 -0
  181. package/scripts/generate-web-module/templates/module.template.ts +69 -0
  182. package/scripts/generate-web-module/templates/pages/detail-page.template.ts +65 -0
  183. package/scripts/generate-web-module/templates/pages/index.ts +8 -0
  184. package/scripts/generate-web-module/templates/pages/list-page.template.ts +37 -0
  185. package/scripts/generate-web-module/templates/table-hook.template.ts +182 -0
  186. package/scripts/generate-web-module/transformers/field-mapper.ts +201 -0
  187. package/scripts/generate-web-module/transformers/i18n-generator.ts +199 -0
  188. package/scripts/generate-web-module/transformers/import-resolver.ts +250 -0
  189. package/scripts/generate-web-module/transformers/index.ts +12 -0
  190. package/scripts/generate-web-module/transformers/name-transformer.ts +115 -0
  191. package/scripts/generate-web-module/transformers/parent-detector.ts +87 -0
  192. package/scripts/generate-web-module/transformers/relationship-resolver.ts +221 -0
  193. package/scripts/generate-web-module/tsconfig.json +24 -0
  194. package/scripts/generate-web-module/types/field-mapping.types.ts +141 -0
  195. package/scripts/generate-web-module/types/index.ts +9 -0
  196. package/scripts/generate-web-module/types/json-schema.interface.ts +42 -0
  197. package/scripts/generate-web-module/types/template-data.interface.ts +164 -0
  198. package/scripts/generate-web-module/utils/bootstrapper-updater.ts +145 -0
  199. package/scripts/generate-web-module/utils/file-writer.ts +115 -0
  200. package/scripts/generate-web-module/utils/i18n-updater.ts +108 -0
  201. package/scripts/generate-web-module/utils/index.ts +9 -0
  202. package/scripts/generate-web-module/validators/json-schema-validator.ts +306 -0
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ /**
3
+ * i18n Generator
4
+ *
5
+ * Generates internationalization keys and messages for a module.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateI18nKeys = generateI18nKeys;
9
+ exports.buildI18nMessages = buildI18nMessages;
10
+ exports.getFieldLabelKey = getFieldLabelKey;
11
+ exports.getFieldPlaceholderKey = getFieldPlaceholderKey;
12
+ exports.getFieldErrorKey = getFieldErrorKey;
13
+ exports.getTypeKey = getTypeKey;
14
+ exports.generateTranslationCall = generateTranslationCall;
15
+ exports.mergeI18nMessages = mergeI18nMessages;
16
+ exports.sortObjectKeys = sortObjectKeys;
17
+ const name_transformer_1 = require("./name-transformer");
18
+ /**
19
+ * Generate complete i18n key set for a module
20
+ *
21
+ * @param names - Name transforms
22
+ * @param fields - Array of frontend fields
23
+ * @param relationships - Array of frontend relationships
24
+ * @returns i18n key set
25
+ */
26
+ function generateI18nKeys(names, fields, relationships) {
27
+ const lowerModuleName = names.camelCase;
28
+ // Generate field keys
29
+ const fieldKeys = {};
30
+ fields.forEach((field) => {
31
+ fieldKeys[field.name] = {
32
+ label: (0, name_transformer_1.toTitleCase)(field.name),
33
+ placeholder: `Enter ${(0, name_transformer_1.toTitleCase)(field.name).toLowerCase()}`,
34
+ error: `${(0, name_transformer_1.toTitleCase)(field.name)} is required`,
35
+ };
36
+ });
37
+ // Generate relationship keys
38
+ const relationshipKeys = {};
39
+ relationships.forEach((rel) => {
40
+ const effectiveName = rel.variant || rel.name;
41
+ const effectiveKey = (0, name_transformer_1.toCamelCase)(effectiveName);
42
+ relationshipKeys[effectiveKey] = {
43
+ label: (0, name_transformer_1.toTitleCase)(effectiveName),
44
+ placeholder: `Select ${(0, name_transformer_1.toTitleCase)(effectiveName).toLowerCase()}`,
45
+ error: `${(0, name_transformer_1.toTitleCase)(effectiveName)} is required`,
46
+ list: (0, name_transformer_1.pluralize)((0, name_transformer_1.toTitleCase)(rel.name)),
47
+ };
48
+ });
49
+ // Generate type keys
50
+ const singularTitle = names.titleCase;
51
+ const pluralTitle = names.pluralTitleCase;
52
+ return {
53
+ moduleName: lowerModuleName,
54
+ fields: fieldKeys,
55
+ relationships: relationshipKeys,
56
+ type: {
57
+ singular: singularTitle,
58
+ plural: pluralTitle,
59
+ icuPlural: `{count, plural, =1 {${singularTitle}} other {${pluralTitle}}}`,
60
+ },
61
+ };
62
+ }
63
+ /**
64
+ * Build the i18n message object to merge into en.json
65
+ *
66
+ * @param i18nKeys - i18n key set
67
+ * @returns Object structure for en.json
68
+ */
69
+ function buildI18nMessages(i18nKeys) {
70
+ return {
71
+ features: {
72
+ [i18nKeys.moduleName]: {
73
+ fields: i18nKeys.fields,
74
+ relationships: i18nKeys.relationships,
75
+ },
76
+ },
77
+ types: {
78
+ [i18nKeys.moduleName + "s"]: i18nKeys.type.icuPlural,
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Get the translation key path for a field label
84
+ *
85
+ * @param moduleName - Module name (lowercase)
86
+ * @param fieldName - Field name
87
+ * @returns Translation key path
88
+ */
89
+ function getFieldLabelKey(moduleName, fieldName) {
90
+ return `features.${moduleName}.fields.${fieldName}.label`;
91
+ }
92
+ /**
93
+ * Get the translation key path for a field placeholder
94
+ *
95
+ * @param moduleName - Module name (lowercase)
96
+ * @param fieldName - Field name
97
+ * @returns Translation key path
98
+ */
99
+ function getFieldPlaceholderKey(moduleName, fieldName) {
100
+ return `features.${moduleName}.fields.${fieldName}.placeholder`;
101
+ }
102
+ /**
103
+ * Get the translation key path for a field error
104
+ *
105
+ * @param moduleName - Module name (lowercase)
106
+ * @param fieldName - Field name
107
+ * @returns Translation key path
108
+ */
109
+ function getFieldErrorKey(moduleName, fieldName) {
110
+ return `features.${moduleName}.fields.${fieldName}.error`;
111
+ }
112
+ /**
113
+ * Get the translation key path for type pluralization
114
+ *
115
+ * @param pluralKebab - Plural kebab-case name
116
+ * @returns Translation key path
117
+ */
118
+ function getTypeKey(pluralKebab) {
119
+ return `types.${pluralKebab}`;
120
+ }
121
+ /**
122
+ * Generate translation call for use in templates
123
+ *
124
+ * @param keyPath - Full translation key path
125
+ * @param params - Optional parameters for ICU messages
126
+ * @returns Translation function call as string
127
+ */
128
+ function generateTranslationCall(keyPath, params) {
129
+ if (params) {
130
+ const paramStr = JSON.stringify(params);
131
+ return `t(\`${keyPath}\`, ${paramStr})`;
132
+ }
133
+ return `t(\`${keyPath}\`)`;
134
+ }
135
+ /**
136
+ * Merge i18n messages into existing messages object
137
+ * This performs a deep merge, preserving existing keys
138
+ *
139
+ * @param existing - Existing messages object
140
+ * @param newMessages - New messages to merge
141
+ * @returns Merged messages object
142
+ */
143
+ function mergeI18nMessages(existing, newMessages) {
144
+ const result = { ...existing };
145
+ function deepMerge(target, source) {
146
+ for (const key of Object.keys(source)) {
147
+ if (source[key] &&
148
+ typeof source[key] === "object" &&
149
+ !Array.isArray(source[key])) {
150
+ if (!target[key]) {
151
+ target[key] = {};
152
+ }
153
+ deepMerge(target[key], source[key]);
154
+ }
155
+ else {
156
+ target[key] = source[key];
157
+ }
158
+ }
159
+ }
160
+ deepMerge(result, newMessages);
161
+ return result;
162
+ }
163
+ /**
164
+ * Sort object keys alphabetically (for consistent output)
165
+ *
166
+ * @param obj - Object to sort
167
+ * @returns New object with sorted keys
168
+ */
169
+ function sortObjectKeys(obj) {
170
+ const sorted = {};
171
+ const keys = Object.keys(obj).sort();
172
+ for (const key of keys) {
173
+ if (obj[key] && typeof obj[key] === "object" && !Array.isArray(obj[key])) {
174
+ sorted[key] = sortObjectKeys(obj[key]);
175
+ }
176
+ else {
177
+ sorted[key] = obj[key];
178
+ }
179
+ }
180
+ return sorted;
181
+ }
182
+ //# sourceMappingURL=i18n-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-generator.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/i18n-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Import Resolver
3
+ *
4
+ * Builds import paths for selectors, models, and related modules.
5
+ */
6
+ import { FrontendRelationship, ImportStatements, FrontendTemplateData } from "../types/template-data.interface";
7
+ /**
8
+ * Build all import statements needed for a module
9
+ *
10
+ * @param relationships - Array of frontend relationships
11
+ * @param extendsContent - Whether the module extends Content
12
+ * @returns Import statements grouped by category
13
+ */
14
+ export declare function buildImportStatements(relationships: FrontendRelationship[], extendsContent: boolean): ImportStatements;
15
+ /**
16
+ * Build model/interface import statements
17
+ *
18
+ * @param relationships - Array of frontend relationships
19
+ * @returns Array of import statements for models
20
+ */
21
+ export declare function buildModelImports(relationships: FrontendRelationship[]): string[];
22
+ /**
23
+ * Build selector component import statements
24
+ *
25
+ * @param relationships - Array of frontend relationships
26
+ * @returns Array of import statements for selectors
27
+ */
28
+ export declare function buildSelectorImports(relationships: FrontendRelationship[]): string[];
29
+ /**
30
+ * Build library import statements
31
+ *
32
+ * @param extendsContent - Whether the module extends Content
33
+ * @returns Array of import statements for library
34
+ */
35
+ export declare function buildLibraryImports(extendsContent: boolean): string[];
36
+ /**
37
+ * Build import path for a module's own files
38
+ *
39
+ * @param targetDir - Target directory
40
+ * @param moduleName - Module name (PascalCase)
41
+ * @param fileName - File name without extension
42
+ * @returns Import path
43
+ */
44
+ export declare function buildModuleImportPath(targetDir: string, moduleName: string, fileName: string): string;
45
+ /**
46
+ * Build import path for a related module's selector
47
+ *
48
+ * @param rel - Frontend relationship
49
+ * @returns Import path for selector
50
+ */
51
+ export declare function buildSelectorImportPath(rel: FrontendRelationship): string;
52
+ /**
53
+ * Get the web base path for generated files
54
+ *
55
+ * @param targetDir - Target directory (features or foundations)
56
+ * @param moduleName - Module name (PascalCase)
57
+ * @returns Base path for generated files
58
+ */
59
+ export declare function getWebBasePath(targetDir: string, moduleName: string): string;
60
+ /**
61
+ * Get the page path for generated pages
62
+ *
63
+ * @param pluralKebab - Plural kebab-case name (e.g., "comments")
64
+ * @returns Base path for page files
65
+ */
66
+ export declare function getPageBasePath(pluralKebab: string): string;
67
+ /**
68
+ * File paths interface
69
+ */
70
+ export interface ModuleFilePaths {
71
+ interface: string;
72
+ model: string;
73
+ service: string;
74
+ fields: string;
75
+ editor: string;
76
+ deleter: string;
77
+ selector: string;
78
+ multiSelector: string;
79
+ list: string;
80
+ details: string;
81
+ content: string;
82
+ container: string;
83
+ listContainer: string;
84
+ context: string;
85
+ tableHook: string;
86
+ module: string;
87
+ listPage: string;
88
+ detailPage: string;
89
+ }
90
+ /**
91
+ * Build all file paths for a module from template data
92
+ *
93
+ * @param data - Frontend template data
94
+ * @param rootPath - Root path for the monorepo (optional, defaults to "")
95
+ * @returns Object with all file paths
96
+ */
97
+ export declare function buildFilePaths(data: FrontendTemplateData, rootPath?: string): ModuleFilePaths;
98
+ /**
99
+ * Build relative import path between two files
100
+ *
101
+ * @param fromPath - Source file path
102
+ * @param toPath - Target file path
103
+ * @returns Relative import path
104
+ */
105
+ export declare function buildRelativeImport(fromPath: string, toPath: string): string;
106
+ //# sourceMappingURL=import-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-resolver.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/import-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAIhH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,oBAAoB,EAAE,EACrC,cAAc,EAAE,OAAO,GACtB,gBAAgB,CAMlB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAWjF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAgBpF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,EAAE,CAgBrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAGzE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,GAAE,MAAW,GACpB,eAAe,CAmCjB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0B5E"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ /**
3
+ * Import Resolver
4
+ *
5
+ * Builds import paths for selectors, models, and related modules.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.buildImportStatements = buildImportStatements;
9
+ exports.buildModelImports = buildModelImports;
10
+ exports.buildSelectorImports = buildSelectorImports;
11
+ exports.buildLibraryImports = buildLibraryImports;
12
+ exports.buildModuleImportPath = buildModuleImportPath;
13
+ exports.buildSelectorImportPath = buildSelectorImportPath;
14
+ exports.getWebBasePath = getWebBasePath;
15
+ exports.getPageBasePath = getPageBasePath;
16
+ exports.buildFilePaths = buildFilePaths;
17
+ exports.buildRelativeImport = buildRelativeImport;
18
+ const field_mapping_types_1 = require("../types/field-mapping.types");
19
+ const name_transformer_1 = require("./name-transformer");
20
+ /**
21
+ * Build all import statements needed for a module
22
+ *
23
+ * @param relationships - Array of frontend relationships
24
+ * @param extendsContent - Whether the module extends Content
25
+ * @returns Import statements grouped by category
26
+ */
27
+ function buildImportStatements(relationships, extendsContent) {
28
+ return {
29
+ models: buildModelImports(relationships),
30
+ selectors: buildSelectorImports(relationships),
31
+ library: buildLibraryImports(extendsContent),
32
+ };
33
+ }
34
+ /**
35
+ * Build model/interface import statements
36
+ *
37
+ * @param relationships - Array of frontend relationships
38
+ * @returns Array of import statements for models
39
+ */
40
+ function buildModelImports(relationships) {
41
+ const imports = [];
42
+ relationships.forEach((rel) => {
43
+ // Import interface for relationships
44
+ imports.push(`import { ${rel.interfaceName} } from "${rel.interfaceImportPath}";`);
45
+ });
46
+ return [...new Set(imports)]; // Deduplicate
47
+ }
48
+ /**
49
+ * Build selector component import statements
50
+ *
51
+ * @param relationships - Array of frontend relationships
52
+ * @returns Array of import statements for selectors
53
+ */
54
+ function buildSelectorImports(relationships) {
55
+ const imports = [];
56
+ relationships.forEach((rel) => {
57
+ // Skip author - handled specially or auto-set
58
+ if (rel.variant === field_mapping_types_1.AUTHOR_VARIANT) {
59
+ return;
60
+ }
61
+ const componentName = rel.single ? `${rel.name}Selector` : `${rel.name}MultiSelector`;
62
+ imports.push(`import ${componentName} from "${rel.importPath}";`);
63
+ });
64
+ return [...new Set(imports)]; // Deduplicate
65
+ }
66
+ /**
67
+ * Build library import statements
68
+ *
69
+ * @param extendsContent - Whether the module extends Content
70
+ * @returns Array of import statements for library
71
+ */
72
+ function buildLibraryImports(extendsContent) {
73
+ const imports = [];
74
+ // Core imports always needed
75
+ imports.push(`import { AbstractApiData } from "@carlonicora/nextjs-jsonapi/core";`);
76
+ // Content import if extending
77
+ if (extendsContent) {
78
+ imports.push(`import { Content, ContentInterface, ContentInput } from "@carlonicora/nextjs-jsonapi/core";`);
79
+ }
80
+ return imports;
81
+ }
82
+ /**
83
+ * Build import path for a module's own files
84
+ *
85
+ * @param targetDir - Target directory
86
+ * @param moduleName - Module name (PascalCase)
87
+ * @param fileName - File name without extension
88
+ * @returns Import path
89
+ */
90
+ function buildModuleImportPath(targetDir, moduleName, fileName) {
91
+ const kebab = (0, name_transformer_1.toKebabCase)(moduleName);
92
+ return `@/features/${targetDir}/${kebab}/data/${fileName}`;
93
+ }
94
+ /**
95
+ * Build import path for a related module's selector
96
+ *
97
+ * @param rel - Frontend relationship
98
+ * @returns Import path for selector
99
+ */
100
+ function buildSelectorImportPath(rel) {
101
+ const componentName = rel.single ? `${rel.name}Selector` : `${rel.name}MultiSelector`;
102
+ return `@/features/${rel.directory}/${rel.modelKebab}/components/forms/${componentName}`;
103
+ }
104
+ /**
105
+ * Get the web base path for generated files
106
+ *
107
+ * @param targetDir - Target directory (features or foundations)
108
+ * @param moduleName - Module name (PascalCase)
109
+ * @returns Base path for generated files
110
+ */
111
+ function getWebBasePath(targetDir, moduleName) {
112
+ const kebab = (0, name_transformer_1.toKebabCase)(moduleName);
113
+ return `apps/web/src/features/${targetDir}/${kebab}`;
114
+ }
115
+ /**
116
+ * Get the page path for generated pages
117
+ *
118
+ * @param pluralKebab - Plural kebab-case name (e.g., "comments")
119
+ * @returns Base path for page files
120
+ */
121
+ function getPageBasePath(pluralKebab) {
122
+ return `apps/web/src/app/[locale]/(main)/(features)/${pluralKebab}`;
123
+ }
124
+ /**
125
+ * Build all file paths for a module from template data
126
+ *
127
+ * @param data - Frontend template data
128
+ * @param rootPath - Root path for the monorepo (optional, defaults to "")
129
+ * @returns Object with all file paths
130
+ */
131
+ function buildFilePaths(data, rootPath = "") {
132
+ const { names, targetDir } = data;
133
+ const prefix = rootPath ? `${rootPath}/` : "";
134
+ const basePath = `${prefix}apps/web/src/features/${targetDir}/${names.kebabCase}`;
135
+ const pagePath = `${prefix}apps/web/src/app/[locale]/(main)/(features)/${names.pluralKebab}`;
136
+ return {
137
+ // Data layer
138
+ interface: `${basePath}/data/${names.pascalCase}Interface.ts`,
139
+ model: `${basePath}/data/${names.pascalCase}.ts`,
140
+ service: `${basePath}/data/${names.pascalCase}Service.ts`,
141
+ fields: `${basePath}/data/${names.pascalCase}Fields.ts`,
142
+ // Components
143
+ editor: `${basePath}/components/forms/${names.pascalCase}Editor.tsx`,
144
+ deleter: `${basePath}/components/forms/${names.pascalCase}Deleter.tsx`,
145
+ selector: `${basePath}/components/forms/${names.pascalCase}Selector.tsx`,
146
+ multiSelector: `${basePath}/components/forms/${names.pascalCase}MultiSelector.tsx`,
147
+ list: `${basePath}/components/lists/${names.pascalCase}List.tsx`,
148
+ details: `${basePath}/components/details/${names.pascalCase}Details.tsx`,
149
+ content: `${basePath}/components/details/${names.pascalCase}Content.tsx`,
150
+ container: `${basePath}/components/containers/${names.pascalCase}Container.tsx`,
151
+ listContainer: `${basePath}/components/containers/${names.pascalCase}ListContainer.tsx`,
152
+ // Context & Hooks
153
+ context: `${basePath}/contexts/${names.pascalCase}Context.tsx`,
154
+ tableHook: `${basePath}/hooks/use${names.pascalCase}TableStructure.tsx`,
155
+ // Module
156
+ module: `${basePath}/${names.pascalCase}Module.ts`,
157
+ // Pages
158
+ listPage: `${pagePath}/page.tsx`,
159
+ detailPage: `${pagePath}/[id]/page.tsx`,
160
+ };
161
+ }
162
+ /**
163
+ * Build relative import path between two files
164
+ *
165
+ * @param fromPath - Source file path
166
+ * @param toPath - Target file path
167
+ * @returns Relative import path
168
+ */
169
+ function buildRelativeImport(fromPath, toPath) {
170
+ // For files in same feature, use @ alias
171
+ if (toPath.startsWith("@/")) {
172
+ return toPath;
173
+ }
174
+ // Calculate relative path
175
+ const fromParts = fromPath.split("/");
176
+ const toParts = toPath.split("/");
177
+ // Find common prefix
178
+ let commonLength = 0;
179
+ for (let i = 0; i < Math.min(fromParts.length, toParts.length); i++) {
180
+ if (fromParts[i] === toParts[i]) {
181
+ commonLength++;
182
+ }
183
+ else {
184
+ break;
185
+ }
186
+ }
187
+ // Build relative path
188
+ const upCount = fromParts.length - commonLength - 1; // -1 for the file itself
189
+ const relativeParts = toParts.slice(commonLength);
190
+ const prefix = upCount > 0 ? "../".repeat(upCount) : "./";
191
+ return prefix + relativeParts.join("/");
192
+ }
193
+ //# sourceMappingURL=import-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/import-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Transformers Index
3
+ *
4
+ * Re-exports all transformer modules.
5
+ */
6
+ export * from "./name-transformer";
7
+ export * from "./parent-detector";
8
+ export * from "./field-mapper";
9
+ export * from "./relationship-resolver";
10
+ export * from "./import-resolver";
11
+ export * from "./i18n-generator";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Transformers Index
4
+ *
5
+ * Re-exports all transformer 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 __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("./name-transformer"), exports);
23
+ __exportStar(require("./parent-detector"), exports);
24
+ __exportStar(require("./field-mapper"), exports);
25
+ __exportStar(require("./relationship-resolver"), exports);
26
+ __exportStar(require("./import-resolver"), exports);
27
+ __exportStar(require("./i18n-generator"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,qDAAmC;AACnC,oDAAkC;AAClC,iDAA+B;AAC/B,0DAAwC;AACxC,oDAAkC;AAClC,mDAAiC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Name Transformer
3
+ *
4
+ * Transforms module names to various case conventions
5
+ * needed for code generation.
6
+ */
7
+ import { NameTransforms } from "../types/template-data.interface";
8
+ /**
9
+ * Transform a module name to all necessary case conventions
10
+ *
11
+ * @param moduleName - PascalCase module name (e.g., "Comment")
12
+ * @param endpoint - Optional kebab-case plural endpoint (e.g., "comments"), derived from moduleName if not provided
13
+ * @returns All name transformations
14
+ */
15
+ export declare function transformNames(moduleName: string, endpoint?: string): NameTransforms;
16
+ /**
17
+ * Convert PascalCase to camelCase
18
+ *
19
+ * @param str - PascalCase string
20
+ * @returns camelCase string
21
+ */
22
+ export declare function toCamelCase(str: string): string;
23
+ /**
24
+ * Convert PascalCase to kebab-case
25
+ *
26
+ * @param str - PascalCase string
27
+ * @returns kebab-case string
28
+ */
29
+ export declare function toKebabCase(str: string): string;
30
+ /**
31
+ * Convert string to PascalCase
32
+ *
33
+ * @param str - Any case string
34
+ * @returns PascalCase string
35
+ */
36
+ export declare function toPascalCase(str: string): string;
37
+ /**
38
+ * Convert PascalCase/camelCase to Title Case with spaces
39
+ * e.g., "firstName" -> "First Name", "UserProfile" -> "User Profile"
40
+ *
41
+ * @param str - PascalCase or camelCase string
42
+ * @returns Title Case string with spaces
43
+ */
44
+ export declare function toTitleCase(str: string): string;
45
+ /**
46
+ * Simple pluralization
47
+ * Note: This is a basic implementation. For production, consider using a library like 'pluralize'
48
+ *
49
+ * @param str - Singular form
50
+ * @returns Plural form
51
+ */
52
+ export declare function pluralize(str: string): string;
53
+ /**
54
+ * Simple singularization (reverse of pluralize)
55
+ *
56
+ * @param str - Plural form
57
+ * @returns Singular form
58
+ */
59
+ export declare function singularize(str: string): string;
60
+ //# sourceMappingURL=name-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-transformer.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/name-transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAepF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW/C"}