@emfts/codegen 0.0.1-next.1

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 (184) hide show
  1. package/README.md +39 -0
  2. package/dist/cli/commands/generate-rest-client.d.ts +3 -0
  3. package/dist/cli/commands/generate-rest-client.d.ts.map +1 -0
  4. package/dist/cli/commands/generate-rest-client.js +38 -0
  5. package/dist/cli/commands/generate-rest-client.js.map +1 -0
  6. package/dist/cli/commands/generate.d.ts +3 -0
  7. package/dist/cli/commands/generate.d.ts.map +1 -0
  8. package/dist/cli/commands/generate.js +108 -0
  9. package/dist/cli/commands/generate.js.map +1 -0
  10. package/dist/cli/commands/init.d.ts +3 -0
  11. package/dist/cli/commands/init.d.ts.map +1 -0
  12. package/dist/cli/commands/init.js +57 -0
  13. package/dist/cli/commands/init.js.map +1 -0
  14. package/dist/cli/index.d.ts +3 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +15 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/debug-abstract.d.ts +2 -0
  19. package/dist/debug-abstract.d.ts.map +1 -0
  20. package/dist/debug-abstract.js +25 -0
  21. package/dist/debug-abstract.js.map +1 -0
  22. package/dist/debug-genmodel.d.ts +2 -0
  23. package/dist/debug-genmodel.d.ts.map +1 -0
  24. package/dist/debug-genmodel.js +41 -0
  25. package/dist/debug-genmodel.js.map +1 -0
  26. package/dist/genconfig/GenConfig.d.ts +125 -0
  27. package/dist/genconfig/GenConfig.d.ts.map +1 -0
  28. package/dist/genconfig/GenConfig.js +46 -0
  29. package/dist/genconfig/GenConfig.js.map +1 -0
  30. package/dist/genconfig/GenConfigConverter.d.ts +64 -0
  31. package/dist/genconfig/GenConfigConverter.d.ts.map +1 -0
  32. package/dist/genconfig/GenConfigConverter.js +293 -0
  33. package/dist/genconfig/GenConfigConverter.js.map +1 -0
  34. package/dist/genconfig/GenConfigLoader.d.ts +83 -0
  35. package/dist/genconfig/GenConfigLoader.d.ts.map +1 -0
  36. package/dist/genconfig/GenConfigLoader.js +455 -0
  37. package/dist/genconfig/GenConfigLoader.js.map +1 -0
  38. package/dist/genconfig/index.d.ts +4 -0
  39. package/dist/genconfig/index.d.ts.map +1 -0
  40. package/dist/genconfig/index.js +4 -0
  41. package/dist/genconfig/index.js.map +1 -0
  42. package/dist/generator/CodeGenerator.d.ts +45 -0
  43. package/dist/generator/CodeGenerator.d.ts.map +1 -0
  44. package/dist/generator/CodeGenerator.js +142 -0
  45. package/dist/generator/CodeGenerator.js.map +1 -0
  46. package/dist/generator/GeneratedFile.d.ts +23 -0
  47. package/dist/generator/GeneratedFile.d.ts.map +1 -0
  48. package/dist/generator/GeneratedFile.js +42 -0
  49. package/dist/generator/GeneratedFile.js.map +1 -0
  50. package/dist/generator/GeneratorContext.d.ts +73 -0
  51. package/dist/generator/GeneratorContext.d.ts.map +1 -0
  52. package/dist/generator/GeneratorContext.js +99 -0
  53. package/dist/generator/GeneratorContext.js.map +1 -0
  54. package/dist/generator/GeneratorOptions.d.ts +26 -0
  55. package/dist/generator/GeneratorOptions.d.ts.map +1 -0
  56. package/dist/generator/GeneratorOptions.js +16 -0
  57. package/dist/generator/GeneratorOptions.js.map +1 -0
  58. package/dist/generator/ImportResolver.d.ts +85 -0
  59. package/dist/generator/ImportResolver.d.ts.map +1 -0
  60. package/dist/generator/ImportResolver.js +381 -0
  61. package/dist/generator/ImportResolver.js.map +1 -0
  62. package/dist/generator/RestClientGenerator.d.ts +72 -0
  63. package/dist/generator/RestClientGenerator.d.ts.map +1 -0
  64. package/dist/generator/RestClientGenerator.js +488 -0
  65. package/dist/generator/RestClientGenerator.js.map +1 -0
  66. package/dist/generator/TypeMapper.d.ts +62 -0
  67. package/dist/generator/TypeMapper.d.ts.map +1 -0
  68. package/dist/generator/TypeMapper.js +224 -0
  69. package/dist/generator/TypeMapper.js.map +1 -0
  70. package/dist/generator/index.d.ts +9 -0
  71. package/dist/generator/index.d.ts.map +1 -0
  72. package/dist/generator/index.js +9 -0
  73. package/dist/generator/index.js.map +1 -0
  74. package/dist/generator/modes/BaseGenerator.d.ts +67 -0
  75. package/dist/generator/modes/BaseGenerator.d.ts.map +1 -0
  76. package/dist/generator/modes/BaseGenerator.js +128 -0
  77. package/dist/generator/modes/BaseGenerator.js.map +1 -0
  78. package/dist/generator/modes/DecoratorGenerator.d.ts +28 -0
  79. package/dist/generator/modes/DecoratorGenerator.d.ts.map +1 -0
  80. package/dist/generator/modes/DecoratorGenerator.js +147 -0
  81. package/dist/generator/modes/DecoratorGenerator.js.map +1 -0
  82. package/dist/generator/modes/EmfGenerator.d.ts +22 -0
  83. package/dist/generator/modes/EmfGenerator.d.ts.map +1 -0
  84. package/dist/generator/modes/EmfGenerator.js +202 -0
  85. package/dist/generator/modes/EmfGenerator.js.map +1 -0
  86. package/dist/generator/modes/PlainGenerator.d.ts +16 -0
  87. package/dist/generator/modes/PlainGenerator.d.ts.map +1 -0
  88. package/dist/generator/modes/PlainGenerator.js +95 -0
  89. package/dist/generator/modes/PlainGenerator.js.map +1 -0
  90. package/dist/generator/modes/index.d.ts +5 -0
  91. package/dist/generator/modes/index.d.ts.map +1 -0
  92. package/dist/generator/modes/index.js +5 -0
  93. package/dist/generator/modes/index.js.map +1 -0
  94. package/dist/genmodel/GenClass.d.ts +37 -0
  95. package/dist/genmodel/GenClass.d.ts.map +1 -0
  96. package/dist/genmodel/GenClass.js +14 -0
  97. package/dist/genmodel/GenClass.js.map +1 -0
  98. package/dist/genmodel/GenDataType.d.ts +19 -0
  99. package/dist/genmodel/GenDataType.d.ts.map +1 -0
  100. package/dist/genmodel/GenDataType.js +46 -0
  101. package/dist/genmodel/GenDataType.js.map +1 -0
  102. package/dist/genmodel/GenEnum.d.ts +30 -0
  103. package/dist/genmodel/GenEnum.d.ts.map +1 -0
  104. package/dist/genmodel/GenEnum.js +11 -0
  105. package/dist/genmodel/GenEnum.js.map +1 -0
  106. package/dist/genmodel/GenFeature.d.ts +30 -0
  107. package/dist/genmodel/GenFeature.d.ts.map +1 -0
  108. package/dist/genmodel/GenFeature.js +15 -0
  109. package/dist/genmodel/GenFeature.js.map +1 -0
  110. package/dist/genmodel/GenModel.d.ts +54 -0
  111. package/dist/genmodel/GenModel.d.ts.map +1 -0
  112. package/dist/genmodel/GenModel.js +24 -0
  113. package/dist/genmodel/GenModel.js.map +1 -0
  114. package/dist/genmodel/GenOperation.d.ts +19 -0
  115. package/dist/genmodel/GenOperation.d.ts.map +1 -0
  116. package/dist/genmodel/GenOperation.js +10 -0
  117. package/dist/genmodel/GenOperation.js.map +1 -0
  118. package/dist/genmodel/GenPackage.d.ts +42 -0
  119. package/dist/genmodel/GenPackage.d.ts.map +1 -0
  120. package/dist/genmodel/GenPackage.js +25 -0
  121. package/dist/genmodel/GenPackage.js.map +1 -0
  122. package/dist/genmodel/GenerationMode.d.ts +23 -0
  123. package/dist/genmodel/GenerationMode.d.ts.map +1 -0
  124. package/dist/genmodel/GenerationMode.js +25 -0
  125. package/dist/genmodel/GenerationMode.js.map +1 -0
  126. package/dist/genmodel/index.d.ts +9 -0
  127. package/dist/genmodel/index.d.ts.map +1 -0
  128. package/dist/genmodel/index.js +10 -0
  129. package/dist/genmodel/index.js.map +1 -0
  130. package/dist/index.d.ts +66 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +110 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/loader/EcoreLoader.d.ts +33 -0
  135. package/dist/loader/EcoreLoader.d.ts.map +1 -0
  136. package/dist/loader/EcoreLoader.js +91 -0
  137. package/dist/loader/EcoreLoader.js.map +1 -0
  138. package/dist/loader/index.d.ts +2 -0
  139. package/dist/loader/index.d.ts.map +1 -0
  140. package/dist/loader/index.js +2 -0
  141. package/dist/loader/index.js.map +1 -0
  142. package/dist/templates/partials/decorator/class-file.ejs +98 -0
  143. package/dist/templates/partials/decorator/enum-file.ejs +35 -0
  144. package/dist/templates/partials/decorator/interface-file.ejs +61 -0
  145. package/dist/templates/partials/decorator/model-annotations.ejs +91 -0
  146. package/dist/templates/partials/decorator/package-file.ejs +7 -0
  147. package/dist/templates/partials/emf/class-file.ejs +226 -0
  148. package/dist/templates/partials/emf/enum-file.ejs +36 -0
  149. package/dist/templates/partials/emf/factory-file.ejs +54 -0
  150. package/dist/templates/partials/emf/index-file.ejs +29 -0
  151. package/dist/templates/partials/emf/interface-file.ejs +72 -0
  152. package/dist/templates/partials/emf/package-file.ejs +149 -0
  153. package/dist/templates/partials/plain/class-file.ejs +75 -0
  154. package/dist/templates/partials/plain/enum-file.ejs +28 -0
  155. package/dist/templates/partials/plain/interface-file.ejs +61 -0
  156. package/dist/templates/partials/plain/package-file.ejs +6 -0
  157. package/dist/templates/templates/partials/decorator/class-file.ejs +98 -0
  158. package/dist/templates/templates/partials/decorator/enum-file.ejs +35 -0
  159. package/dist/templates/templates/partials/decorator/interface-file.ejs +61 -0
  160. package/dist/templates/templates/partials/decorator/model-annotations.ejs +91 -0
  161. package/dist/templates/templates/partials/decorator/package-file.ejs +7 -0
  162. package/dist/templates/templates/partials/emf/class-file.ejs +226 -0
  163. package/dist/templates/templates/partials/emf/enum-file.ejs +36 -0
  164. package/dist/templates/templates/partials/emf/factory-file.ejs +54 -0
  165. package/dist/templates/templates/partials/emf/index-file.ejs +29 -0
  166. package/dist/templates/templates/partials/emf/interface-file.ejs +72 -0
  167. package/dist/templates/templates/partials/emf/package-file.ejs +149 -0
  168. package/dist/templates/templates/partials/plain/class-file.ejs +75 -0
  169. package/dist/templates/templates/partials/plain/enum-file.ejs +28 -0
  170. package/dist/templates/templates/partials/plain/interface-file.ejs +61 -0
  171. package/dist/templates/templates/partials/plain/package-file.ejs +6 -0
  172. package/dist/util/EObjectHelper.d.ts +90 -0
  173. package/dist/util/EObjectHelper.d.ts.map +1 -0
  174. package/dist/util/EObjectHelper.js +381 -0
  175. package/dist/util/EObjectHelper.js.map +1 -0
  176. package/dist/util/StringUtils.d.ts +44 -0
  177. package/dist/util/StringUtils.d.ts.map +1 -0
  178. package/dist/util/StringUtils.js +115 -0
  179. package/dist/util/StringUtils.js.map +1 -0
  180. package/dist/util/index.d.ts +3 -0
  181. package/dist/util/index.d.ts.map +1 -0
  182. package/dist/util/index.js +3 -0
  183. package/dist/util/index.js.map +1 -0
  184. package/package.json +60 -0
@@ -0,0 +1,455 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { dirname, resolve } from 'path';
3
+ import { createDefaultGenerationSettings, createDefaultClassDefaults, createDefaultFeatureDefaults } from './GenConfig.js';
4
+ /**
5
+ * Loads GenConfig from XMI files
6
+ */
7
+ export class GenConfigLoader {
8
+ resourceSet = null;
9
+ genconfigPackage = null;
10
+ ecorePackages = new Map();
11
+ /**
12
+ * Initialize the loader
13
+ */
14
+ async init() {
15
+ const { BasicResourceSet, getEcorePackage, ECORE_NS_URI, XMIResource, URI } = await import('@emfts/core');
16
+ // Initialize Ecore
17
+ getEcorePackage();
18
+ // Create resource set
19
+ this.resourceSet = new BasicResourceSet();
20
+ this.resourceSet.getPackageRegistry().set(ECORE_NS_URI, getEcorePackage());
21
+ // Load genconfig.ecore metamodel
22
+ const genconfigEcorePath = resolve(dirname(import.meta.url.replace('file://', '')), '../../model/genconfig.ecore');
23
+ await this.loadGenConfigMetamodel(genconfigEcorePath);
24
+ }
25
+ /**
26
+ * Load the genconfig.ecore metamodel
27
+ */
28
+ async loadGenConfigMetamodel(path) {
29
+ const { XMIResource, URI } = await import('@emfts/core');
30
+ const content = await readFile(path, 'utf-8');
31
+ const uri = URI.createURI(path);
32
+ const resource = new XMIResource(uri);
33
+ resource.setResourceSet(this.resourceSet);
34
+ resource.loadFromString(content);
35
+ const contents = resource.getContents();
36
+ if (contents.length > 0) {
37
+ this.genconfigPackage = contents[0];
38
+ const nsURI = this.genconfigPackage.getNsURI();
39
+ if (nsURI) {
40
+ this.resourceSet.getPackageRegistry().set(nsURI, this.genconfigPackage);
41
+ }
42
+ }
43
+ }
44
+ /**
45
+ * Register an EPackage for reference resolution
46
+ */
47
+ registerPackage(ePackage) {
48
+ const nsURI = ePackage.getNsURI();
49
+ if (nsURI) {
50
+ this.ecorePackages.set(nsURI, ePackage);
51
+ if (this.resourceSet) {
52
+ this.resourceSet.getPackageRegistry().set(nsURI, ePackage);
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Load a GenConfig from XMI file
58
+ */
59
+ async load(configPath) {
60
+ if (!this.resourceSet) {
61
+ await this.init();
62
+ }
63
+ const { XMIResource, URI } = await import('@emfts/core');
64
+ // Load the .genconfig.xmi file
65
+ const content = await readFile(configPath, 'utf-8');
66
+ const uri = URI.createURI(configPath);
67
+ const resource = new XMIResource(uri);
68
+ resource.setResourceSet(this.resourceSet);
69
+ resource.loadFromString(content);
70
+ const contents = resource.getContents();
71
+ if (contents.length === 0) {
72
+ throw new Error(`No content found in ${configPath}`);
73
+ }
74
+ const root = contents[0];
75
+ return this.convertToGenConfig(root);
76
+ }
77
+ /**
78
+ * Convert dynamic EObject to GenConfig
79
+ */
80
+ convertToGenConfig(obj) {
81
+ // Resolve ecorePackage reference
82
+ const ecorePackageRef = this.getFeatureValue(obj, 'ecorePackage');
83
+ let ecorePackage = this.resolvePackageReference(ecorePackageRef);
84
+ // Fallback: if ecorePackage not specified in XMI, use the first registered package
85
+ // (typical when the CLI provides the model via -m flag)
86
+ if (!ecorePackage && this.ecorePackages.size > 0) {
87
+ ecorePackage = this.ecorePackages.values().next().value ?? null;
88
+ }
89
+ if (!ecorePackage) {
90
+ throw new Error('Could not resolve ecorePackage reference. Either specify ecorePackage in the GenConfig XMI or register a package via registerPackage() before loading.');
91
+ }
92
+ // Get generation settings
93
+ const generationObj = this.getFeatureValue(obj, 'generation');
94
+ const generation = this.convertGenerationSettings(generationObj);
95
+ // Get package settings
96
+ const packageObj = this.getFeatureValue(obj, 'package');
97
+ const packageSettings = this.convertPackageSettings(packageObj);
98
+ // Get class defaults (optional)
99
+ const classDefaultsObj = this.getFeatureValue(obj, 'classDefaults');
100
+ const classDefaults = classDefaultsObj
101
+ ? this.convertClassDefaults(classDefaultsObj)
102
+ : createDefaultClassDefaults();
103
+ // Get feature defaults (optional)
104
+ const featureDefaultsObj = this.getFeatureValue(obj, 'featureDefaults');
105
+ const featureDefaults = featureDefaultsObj
106
+ ? this.convertFeatureDefaults(featureDefaultsObj)
107
+ : createDefaultFeatureDefaults(generation.mode);
108
+ // Get class overrides (optional)
109
+ const classOverridesObj = this.getFeatureValue(obj, 'classOverrides') || [];
110
+ const classOverrides = this.convertClassOverrides(classOverridesObj, ecorePackage);
111
+ return {
112
+ ecorePackage,
113
+ generation,
114
+ package: packageSettings,
115
+ classDefaults,
116
+ featureDefaults,
117
+ classOverrides
118
+ };
119
+ }
120
+ /**
121
+ * Convert GenerationSettings
122
+ */
123
+ convertGenerationSettings(obj) {
124
+ if (!obj) {
125
+ return createDefaultGenerationSettings();
126
+ }
127
+ const modeValue = this.getFeatureValue(obj, 'mode');
128
+ const mode = this.convertMode(modeValue);
129
+ return {
130
+ mode,
131
+ outputDir: this.getFeatureValue(obj, 'outputDir') || './generated',
132
+ fileExtension: this.getFeatureValue(obj, 'fileExtension') || '.ts',
133
+ headerComment: this.getFeatureValue(obj, 'headerComment')
134
+ };
135
+ }
136
+ /**
137
+ * Convert mode value (can be enum literal or string)
138
+ */
139
+ convertMode(value) {
140
+ if (!value)
141
+ return 'emf';
142
+ // Handle enum literal object
143
+ if (typeof value === 'object' && value !== null) {
144
+ const literal = value.getLiteral?.() || value.literal || value.name;
145
+ if (literal)
146
+ return literal;
147
+ }
148
+ // Handle string
149
+ if (typeof value === 'string') {
150
+ return value;
151
+ }
152
+ // Handle number (enum ordinal)
153
+ if (typeof value === 'number') {
154
+ const modes = ['emf', 'decorator', 'plain'];
155
+ return modes[value] || 'emf';
156
+ }
157
+ return 'emf';
158
+ }
159
+ /**
160
+ * Convert PackageSettings
161
+ */
162
+ convertPackageSettings(obj) {
163
+ if (!obj) {
164
+ throw new Error('Package settings are required');
165
+ }
166
+ return {
167
+ prefix: this.getFeatureValue(obj, 'prefix') || '',
168
+ basePackage: this.getFeatureValue(obj, 'basePackage'),
169
+ generateFactory: this.getFeatureValue(obj, 'generateFactory') ?? true,
170
+ generatePackage: this.getFeatureValue(obj, 'generatePackage') ?? true,
171
+ generateIndex: this.getFeatureValue(obj, 'generateIndex') ?? true
172
+ };
173
+ }
174
+ /**
175
+ * Convert ClassDefaults
176
+ */
177
+ convertClassDefaults(obj) {
178
+ return {
179
+ generateInterface: this.getFeatureValue(obj, 'generateInterface') ?? true,
180
+ generateImpl: this.getFeatureValue(obj, 'generateImpl') ?? true,
181
+ rootExtendsClass: this.getFeatureValue(obj, 'rootExtendsClass') || 'BasicEObject',
182
+ rootExtendsInterface: this.getFeatureValue(obj, 'rootExtendsInterface') || 'EObject'
183
+ };
184
+ }
185
+ /**
186
+ * Convert FeatureDefaults
187
+ */
188
+ convertFeatureDefaults(obj) {
189
+ const propertyValue = this.getFeatureValue(obj, 'property');
190
+ return {
191
+ notify: this.getFeatureValue(obj, 'notify') ?? true,
192
+ property: this.convertPropertyMode(propertyValue)
193
+ };
194
+ }
195
+ /**
196
+ * Convert property mode value
197
+ */
198
+ convertPropertyMode(value) {
199
+ if (!value)
200
+ return 'editable';
201
+ if (typeof value === 'object' && value !== null) {
202
+ const literal = value.getLiteral?.() || value.literal || value.name;
203
+ if (literal)
204
+ return literal;
205
+ }
206
+ if (typeof value === 'string') {
207
+ return value;
208
+ }
209
+ if (typeof value === 'number') {
210
+ const modes = ['editable', 'readonly', 'none'];
211
+ return modes[value] || 'editable';
212
+ }
213
+ return 'editable';
214
+ }
215
+ /**
216
+ * Convert ClassOverrides array
217
+ */
218
+ convertClassOverrides(objs, ecorePackage) {
219
+ const overrides = [];
220
+ for (const obj of objs) {
221
+ const ecoreClassRef = this.getFeatureValue(obj, 'ecoreClass');
222
+ const ecoreClass = this.resolveClassReference(ecoreClassRef, ecorePackage);
223
+ if (!ecoreClass) {
224
+ console.warn(`Could not resolve ecoreClass reference: ${ecoreClassRef}`);
225
+ continue;
226
+ }
227
+ const featureOverridesObj = this.getFeatureValue(obj, 'featureOverrides') || [];
228
+ const featureOverrides = this.convertFeatureOverrides(featureOverridesObj, ecoreClass);
229
+ overrides.push({
230
+ ecoreClass,
231
+ generateInterface: this.getFeatureValue(obj, 'generateInterface'),
232
+ generateImpl: this.getFeatureValue(obj, 'generateImpl'),
233
+ extendsClass: this.getFeatureValue(obj, 'extendsClass'),
234
+ implementsInterfaces: this.getFeatureValue(obj, 'implementsInterfaces'),
235
+ featureOverrides
236
+ });
237
+ }
238
+ return overrides;
239
+ }
240
+ /**
241
+ * Convert FeatureOverrides array
242
+ */
243
+ convertFeatureOverrides(objs, ecoreClass) {
244
+ const overrides = [];
245
+ for (const obj of objs) {
246
+ const ecoreFeatureRef = this.getFeatureValue(obj, 'ecoreFeature');
247
+ const ecoreFeature = this.resolveFeatureReference(ecoreFeatureRef, ecoreClass);
248
+ if (!ecoreFeature) {
249
+ console.warn(`Could not resolve ecoreFeature reference: ${ecoreFeatureRef}`);
250
+ continue;
251
+ }
252
+ const propertyValue = this.getFeatureValue(obj, 'property');
253
+ overrides.push({
254
+ ecoreFeature,
255
+ notify: this.getFeatureValue(obj, 'notify'),
256
+ property: propertyValue !== undefined ? this.convertPropertyMode(propertyValue) : undefined,
257
+ customGetter: this.getFeatureValue(obj, 'customGetter'),
258
+ customSetter: this.getFeatureValue(obj, 'customSetter')
259
+ });
260
+ }
261
+ return overrides;
262
+ }
263
+ /**
264
+ * Resolve EPackage reference from URI
265
+ */
266
+ resolvePackageReference(ref) {
267
+ if (!ref)
268
+ return null;
269
+ // If it's already an EPackage
270
+ if (typeof ref === 'object' && 'getNsURI' in ref) {
271
+ return ref;
272
+ }
273
+ // If it's a proxy, get the URI
274
+ if (typeof ref === 'object' && ref.eIsProxy?.()) {
275
+ const proxyURI = ref.eProxyURI?.()?.toString?.();
276
+ if (proxyURI) {
277
+ return this.resolvePackageFromURI(proxyURI);
278
+ }
279
+ }
280
+ // If it's a string URI
281
+ if (typeof ref === 'string') {
282
+ return this.resolvePackageFromURI(ref);
283
+ }
284
+ return null;
285
+ }
286
+ /**
287
+ * Resolve EPackage from URI string
288
+ */
289
+ resolvePackageFromURI(uri) {
290
+ // Remove fragment (#/ or #//)
291
+ const nsURI = uri.replace(/#\/?.*$/, '');
292
+ // Look up in registered packages
293
+ return this.ecorePackages.get(nsURI) || null;
294
+ }
295
+ /**
296
+ * Resolve EClass reference from URI
297
+ */
298
+ resolveClassReference(ref, defaultPackage) {
299
+ if (!ref)
300
+ return null;
301
+ // If it's already an EClass
302
+ if (typeof ref === 'object' && 'getEStructuralFeatures' in ref) {
303
+ return ref;
304
+ }
305
+ // Get URI string
306
+ let uri = null;
307
+ if (typeof ref === 'object' && ref.eIsProxy?.()) {
308
+ uri = ref.eProxyURI?.()?.toString?.();
309
+ }
310
+ else if (typeof ref === 'string') {
311
+ uri = ref;
312
+ }
313
+ if (!uri)
314
+ return null;
315
+ // Parse URI: nsURI#//ClassName
316
+ const match = uri.match(/^(.+)#\/\/(.+)$/);
317
+ if (!match)
318
+ return null;
319
+ const [, nsURI, className] = match;
320
+ const ePackage = this.ecorePackages.get(nsURI) || defaultPackage;
321
+ // Find classifier by name
322
+ const classifiers = ePackage.getEClassifiers?.() || [];
323
+ for (const classifier of classifiers) {
324
+ if (classifier.getName?.() === className) {
325
+ return classifier;
326
+ }
327
+ }
328
+ return null;
329
+ }
330
+ /**
331
+ * Resolve EStructuralFeature reference from URI
332
+ */
333
+ resolveFeatureReference(ref, defaultClass) {
334
+ if (!ref)
335
+ return null;
336
+ // If it's already an EStructuralFeature
337
+ if (typeof ref === 'object' && 'getEContainingClass' in ref) {
338
+ return ref;
339
+ }
340
+ // Get URI string
341
+ let uri = null;
342
+ if (typeof ref === 'object' && ref.eIsProxy?.()) {
343
+ uri = ref.eProxyURI?.()?.toString?.();
344
+ }
345
+ else if (typeof ref === 'string') {
346
+ uri = ref;
347
+ }
348
+ if (!uri)
349
+ return null;
350
+ // Parse URI: nsURI#//ClassName/featureName
351
+ const match = uri.match(/^(.+)#\/\/(.+)\/(.+)$/);
352
+ if (!match)
353
+ return null;
354
+ const [, nsURI, className, featureName] = match;
355
+ // Find the class first
356
+ const ePackage = this.ecorePackages.get(nsURI);
357
+ let eClass = null;
358
+ if (ePackage) {
359
+ const classifiers = ePackage.getEClassifiers?.() || [];
360
+ for (const classifier of classifiers) {
361
+ if (classifier.getName?.() === className) {
362
+ eClass = classifier;
363
+ break;
364
+ }
365
+ }
366
+ }
367
+ if (!eClass) {
368
+ eClass = defaultClass;
369
+ }
370
+ // Find feature by name
371
+ const features = eClass.getEStructuralFeatures?.() || [];
372
+ for (const feature of features) {
373
+ if (feature.getName?.() === featureName) {
374
+ return feature;
375
+ }
376
+ }
377
+ // Also check inherited features
378
+ const allFeatures = eClass.getEAllStructuralFeatures?.() || [];
379
+ for (const feature of allFeatures) {
380
+ if (feature.getName?.() === featureName) {
381
+ return feature;
382
+ }
383
+ }
384
+ return null;
385
+ }
386
+ /**
387
+ * Get feature value from dynamic EObject
388
+ */
389
+ getFeatureValue(obj, featureName) {
390
+ if (!obj)
391
+ return undefined;
392
+ let value = undefined;
393
+ // Try direct getter
394
+ const getterName = `get${featureName.charAt(0).toUpperCase()}${featureName.slice(1)}`;
395
+ if (typeof obj[getterName] === 'function') {
396
+ value = obj[getterName]();
397
+ }
398
+ // Try isXxx for booleans
399
+ else {
400
+ const isGetterName = `is${featureName.charAt(0).toUpperCase()}${featureName.slice(1)}`;
401
+ if (typeof obj[isGetterName] === 'function') {
402
+ value = obj[isGetterName]();
403
+ }
404
+ // Try eGet
405
+ else if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
406
+ const eClass = obj.eClass();
407
+ if (eClass) {
408
+ const feature = eClass.getEStructuralFeature?.(featureName);
409
+ if (feature) {
410
+ value = obj.eGet(feature);
411
+ }
412
+ }
413
+ }
414
+ // Try direct property access
415
+ else if (featureName in obj) {
416
+ value = obj[featureName];
417
+ }
418
+ }
419
+ // Handle value conversion
420
+ if (value === undefined || value === null) {
421
+ return value;
422
+ }
423
+ // Check if it's an EList or iterable (but not string)
424
+ if (typeof value === 'object' && typeof value[Symbol.iterator] === 'function') {
425
+ // Check if it's meant to be a multi-valued feature
426
+ const eClass = obj.eClass?.();
427
+ const feature = eClass?.getEStructuralFeature?.(featureName);
428
+ const upperBound = feature?.getUpperBound?.() ?? 1;
429
+ if (upperBound === -1 || upperBound > 1) {
430
+ // Multi-valued - return as array
431
+ return Array.from(value);
432
+ }
433
+ else {
434
+ // Single-valued but came as iterable - might be a string that got split
435
+ // Check if all elements are single characters
436
+ const arr = Array.from(value);
437
+ if (arr.length > 0 && arr.every((c) => typeof c === 'string' && c.length === 1)) {
438
+ // It's a string that got split into characters - join it back
439
+ return arr.join('');
440
+ }
441
+ // Return first element for single-valued
442
+ return arr[0];
443
+ }
444
+ }
445
+ // Convert string "true"/"false" to boolean
446
+ if (typeof value === 'string') {
447
+ if (value === 'true')
448
+ return true;
449
+ if (value === 'false')
450
+ return false;
451
+ }
452
+ return value;
453
+ }
454
+ }
455
+ //# sourceMappingURL=GenConfigLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenConfigLoader.js","sourceRoot":"","sources":["../../src/genconfig/GenConfigLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './GenConfig.js';
2
+ export * from './GenConfigLoader.js';
3
+ export * from './GenConfigConverter.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/genconfig/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './GenConfig.js';
2
+ export * from './GenConfigLoader.js';
3
+ export * from './GenConfigConverter.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/genconfig/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { GenModel } from '../genmodel/GenModel.js';
2
+ import type { GeneratorOptions } from './GeneratorOptions.js';
3
+ import { type Diagnostic } from './GeneratorContext.js';
4
+ import { GeneratedFile } from './GeneratedFile.js';
5
+ /**
6
+ * Result of code generation
7
+ */
8
+ export interface GenerationResult {
9
+ /** Generated files */
10
+ files: GeneratedFile[];
11
+ /** Diagnostics (warnings, errors) */
12
+ diagnostics: Diagnostic[];
13
+ /** Whether generation succeeded */
14
+ success: boolean;
15
+ }
16
+ /**
17
+ * Main code generator that orchestrates generation based on mode
18
+ */
19
+ export declare class CodeGenerator {
20
+ private genModel;
21
+ private context;
22
+ private generator;
23
+ constructor(genModel: GenModel, options?: Partial<GeneratorOptions>);
24
+ /**
25
+ * Create the appropriate generator for the mode
26
+ */
27
+ private createModeGenerator;
28
+ /**
29
+ * Generate all code for the model
30
+ */
31
+ generate(): Promise<GenerationResult>;
32
+ /**
33
+ * Generate files for a package
34
+ */
35
+ private generatePackage;
36
+ /**
37
+ * Write all generated files to disk
38
+ */
39
+ writeFiles(files: GeneratedFile[]): Promise<void>;
40
+ /**
41
+ * Generate and write all files
42
+ */
43
+ run(): Promise<GenerationResult>;
44
+ }
45
+ //# sourceMappingURL=CodeGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../src/generator/CodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IAEvB,qCAAqC;IACrC,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAgB;gBAErB,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAMnE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyB3C;;OAEG;YACW,eAAe;IAqE7B;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;CASvC"}