@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,381 @@
1
+ /**
2
+ * Ecore primitive types that map to TypeScript built-ins (no import needed)
3
+ */
4
+ const ECORE_PRIMITIVES = new Set([
5
+ 'EString', 'EChar', 'ECharacterObject',
6
+ 'EBoolean', 'EBooleanObject',
7
+ 'EInt', 'EIntegerObject', 'EByte', 'EByteObject',
8
+ 'EShort', 'EShortObject', 'ELong', 'ELongObject',
9
+ 'EFloat', 'EFloatObject', 'EDouble', 'EDoubleObject',
10
+ 'EBigInteger', 'EBigDecimal',
11
+ 'EDate',
12
+ 'EJavaObject', 'EJavaClass',
13
+ 'EByteArray',
14
+ 'EFeatureMapEntry', 'EEnumerator',
15
+ 'EDiagnosticChain',
16
+ 'EMap', 'EEList', 'ETreeIterator',
17
+ 'EInvocationTargetException',
18
+ 'EResource', 'EResourceSet'
19
+ ]);
20
+ /**
21
+ * Resolves imports for generated files
22
+ */
23
+ export class ImportResolver {
24
+ packagePathMap = new Map();
25
+ /**
26
+ * Register a package with its import path
27
+ */
28
+ registerPackage(nsURI, importPath) {
29
+ this.packagePathMap.set(nsURI, importPath);
30
+ }
31
+ /**
32
+ * Get all imports needed for a class
33
+ */
34
+ resolveImportsForClass(eClass, genPackage, mode) {
35
+ const imports = new Map();
36
+ // Get super types - handle both static and dynamic objects
37
+ const superTypes = this.getSuperTypes(eClass);
38
+ for (const superType of superTypes) {
39
+ this.addImportForClassifier(imports, superType, eClass, genPackage);
40
+ }
41
+ // Get structural features - handle both static and dynamic objects
42
+ const features = this.getStructuralFeatures(eClass);
43
+ for (const feature of features) {
44
+ this.addImportsForFeature(imports, feature, eClass, genPackage);
45
+ }
46
+ // Add mode-specific imports
47
+ this.addModeImports(imports, mode, genPackage);
48
+ return Array.from(imports.values());
49
+ }
50
+ /**
51
+ * Get super types from EClass (handles both static and dynamic)
52
+ */
53
+ getSuperTypes(eClass) {
54
+ if (typeof eClass.getESuperTypes === 'function') {
55
+ return eClass.getESuperTypes() || [];
56
+ }
57
+ if (typeof eClass.eGet === 'function' && typeof eClass.eClass === 'function') {
58
+ const metaClass = eClass.eClass();
59
+ if (metaClass) {
60
+ const feature = metaClass.getEStructuralFeature?.('eSuperTypes');
61
+ if (feature) {
62
+ const result = eClass.eGet(feature);
63
+ if (Array.isArray(result))
64
+ return result;
65
+ if (result && typeof result[Symbol.iterator] === 'function') {
66
+ return Array.from(result);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ return [];
72
+ }
73
+ /**
74
+ * Get structural features from EClass (handles both static and dynamic)
75
+ */
76
+ getStructuralFeatures(eClass) {
77
+ if (typeof eClass.getEStructuralFeatures === 'function') {
78
+ return eClass.getEStructuralFeatures() || [];
79
+ }
80
+ if (typeof eClass.eGet === 'function' && typeof eClass.eClass === 'function') {
81
+ const metaClass = eClass.eClass();
82
+ if (metaClass) {
83
+ const feature = metaClass.getEStructuralFeature?.('eStructuralFeatures');
84
+ if (feature) {
85
+ const result = eClass.eGet(feature);
86
+ if (Array.isArray(result))
87
+ return result;
88
+ if (result && typeof result[Symbol.iterator] === 'function') {
89
+ return Array.from(result);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ return [];
95
+ }
96
+ /**
97
+ * Add import for a classifier if needed
98
+ */
99
+ addImportForClassifier(imports, classifier, currentClass, genPackage) {
100
+ const name = this.getName(classifier);
101
+ if (!name || imports.has(name)) {
102
+ return;
103
+ }
104
+ // Skip Ecore primitive types (they map to TypeScript built-ins)
105
+ if (ECORE_PRIMITIVES.has(name)) {
106
+ return;
107
+ }
108
+ // Check if same class
109
+ if (name === this.getName(currentClass)) {
110
+ return;
111
+ }
112
+ // Check if it's a proxy
113
+ if ('eIsProxy' in classifier && classifier.eIsProxy()) {
114
+ const proxyImport = this.resolveProxyImport(classifier);
115
+ if (proxyImport) {
116
+ // Skip primitive proxies too
117
+ if (ECORE_PRIMITIVES.has(proxyImport.typeName)) {
118
+ return;
119
+ }
120
+ imports.set(proxyImport.typeName, proxyImport);
121
+ }
122
+ return;
123
+ }
124
+ // Get the package
125
+ let classifierPackage = this.getEPackage(classifier);
126
+ // If package is null, check if the classifier exists in the current package
127
+ // This handles dynamic enum types that may not have their container set
128
+ if (!classifierPackage) {
129
+ const currentPackage = genPackage.ecorePackage;
130
+ // Check if a classifier with this name exists in the current package
131
+ const classifiers = currentPackage.getEClassifiers?.() || [];
132
+ for (const c of classifiers) {
133
+ if (this.getName(c) === name) {
134
+ classifierPackage = currentPackage;
135
+ break;
136
+ }
137
+ }
138
+ }
139
+ if (!classifierPackage) {
140
+ return;
141
+ }
142
+ const currentPackage = genPackage.ecorePackage;
143
+ const importPath = this.getImportPath(classifierPackage, currentPackage, name);
144
+ imports.set(name, {
145
+ typeName: name,
146
+ importPath,
147
+ isTypeOnly: false
148
+ });
149
+ }
150
+ /**
151
+ * Add imports for a structural feature
152
+ */
153
+ addImportsForFeature(imports, feature, currentClass, genPackage) {
154
+ // Use eType - try helper method for dynamic objects
155
+ let eType = null;
156
+ if (typeof feature.getEType === 'function') {
157
+ eType = feature.getEType();
158
+ }
159
+ else if (typeof feature.eGet === 'function' && typeof feature.eClass === 'function') {
160
+ const eClass = feature.eClass();
161
+ if (eClass) {
162
+ const typeFeature = eClass.getEStructuralFeature?.('eType');
163
+ if (typeFeature) {
164
+ eType = feature.eGet(typeFeature);
165
+ }
166
+ }
167
+ }
168
+ if (eType) {
169
+ this.addImportForClassifier(imports, eType, currentClass, genPackage);
170
+ }
171
+ }
172
+ /**
173
+ * Add imports for a generic type
174
+ */
175
+ addImportsForGenericType(imports, genericType, currentClass, genPackage) {
176
+ const classifier = genericType.getEClassifier();
177
+ if (classifier) {
178
+ this.addImportForClassifier(imports, classifier, currentClass, genPackage);
179
+ }
180
+ // Process type arguments
181
+ const typeArgs = genericType.getETypeArguments();
182
+ if (typeArgs) {
183
+ for (const arg of typeArgs) {
184
+ this.addImportsForGenericType(imports, arg, currentClass, genPackage);
185
+ }
186
+ }
187
+ }
188
+ /**
189
+ * Resolve import for a proxy object
190
+ */
191
+ resolveProxyImport(classifier, currentPackage) {
192
+ if (!('eProxyURI' in classifier)) {
193
+ return null;
194
+ }
195
+ const proxyURI = classifier.eProxyURI();
196
+ if (!proxyURI) {
197
+ return null;
198
+ }
199
+ const uriString = proxyURI.toString();
200
+ if (!uriString.includes('#//')) {
201
+ return null;
202
+ }
203
+ const [packageURI, typeName] = uriString.split('#//');
204
+ // Check if the proxy refers to a type in the same file/package
205
+ // (e.g., "library.ecore#//BookCategory" when we're generating Book)
206
+ // In this case, use a relative import
207
+ const isLocalFile = packageURI.endsWith('.ecore') && !packageURI.includes('/');
208
+ if (isLocalFile) {
209
+ return {
210
+ typeName,
211
+ importPath: `./${typeName}`,
212
+ isTypeOnly: false
213
+ };
214
+ }
215
+ const importPath = this.getPackageImportPath(packageURI) ?? this.uriToImportPath(packageURI);
216
+ return {
217
+ typeName,
218
+ importPath,
219
+ isTypeOnly: false
220
+ };
221
+ }
222
+ /**
223
+ * Get import path for a package
224
+ */
225
+ getImportPath(sourcePackage, currentPackage, typeName) {
226
+ const sourceURI = sourcePackage.getNsURI();
227
+ const currentURI = currentPackage.getNsURI();
228
+ // Same package - relative import
229
+ if (sourceURI === currentURI) {
230
+ return `./${typeName}`;
231
+ }
232
+ // Different package - check registered paths
233
+ if (sourceURI && this.packagePathMap.has(sourceURI)) {
234
+ return this.packagePathMap.get(sourceURI);
235
+ }
236
+ // Use URI as fallback
237
+ return this.uriToImportPath(sourceURI ?? typeName);
238
+ }
239
+ /**
240
+ * Get registered import path for a package URI
241
+ */
242
+ getPackageImportPath(nsURI) {
243
+ return this.packagePathMap.get(nsURI);
244
+ }
245
+ /**
246
+ * Convert a URI to an import path
247
+ */
248
+ uriToImportPath(uri) {
249
+ // Remove protocol
250
+ let path = uri;
251
+ if (path.startsWith('http://')) {
252
+ path = path.substring(7);
253
+ }
254
+ else if (path.startsWith('https://')) {
255
+ path = path.substring(8);
256
+ }
257
+ // Convert to valid import path
258
+ return path.replace(/[^a-zA-Z0-9./]/g, '-');
259
+ }
260
+ /**
261
+ * Add mode-specific imports
262
+ */
263
+ addModeImports(imports, mode, genPackage) {
264
+ switch (mode) {
265
+ case 'decorator':
266
+ imports.set('ModelAnnotations', {
267
+ typeName: 'Documentation, Attribute, ModelClass, Reference, Enum',
268
+ importPath: './ModelAnnotations',
269
+ isTypeOnly: false
270
+ });
271
+ break;
272
+ case 'emf':
273
+ imports.set('BasicEObject', {
274
+ typeName: 'BasicEObject',
275
+ importPath: '@emfts/core',
276
+ isTypeOnly: false
277
+ });
278
+ imports.set('EClass', {
279
+ typeName: 'EClass',
280
+ importPath: '@emfts/core',
281
+ isTypeOnly: true
282
+ });
283
+ imports.set('EStructuralFeature', {
284
+ typeName: 'EStructuralFeature',
285
+ importPath: '@emfts/core',
286
+ isTypeOnly: true
287
+ });
288
+ break;
289
+ case 'plain':
290
+ default:
291
+ // No additional imports for plain mode
292
+ break;
293
+ }
294
+ }
295
+ /**
296
+ * Get name from ENamedElement (works with both static and dynamic EObjects)
297
+ */
298
+ getName(obj) {
299
+ if (!obj)
300
+ return null;
301
+ // Try direct method first
302
+ if (typeof obj.getName === 'function') {
303
+ return obj.getName();
304
+ }
305
+ // Try eGet for dynamic objects
306
+ if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
307
+ const eClass = obj.eClass();
308
+ if (eClass) {
309
+ const nameFeature = eClass.getEStructuralFeature?.('name');
310
+ if (nameFeature) {
311
+ return obj.eGet(nameFeature);
312
+ }
313
+ }
314
+ }
315
+ // Fallback to property access
316
+ return obj.name ?? null;
317
+ }
318
+ /**
319
+ * Get the package of a classifier
320
+ */
321
+ getEPackage(classifier) {
322
+ if (!classifier)
323
+ return null;
324
+ // Try direct method first
325
+ if (typeof classifier.getEPackage === 'function') {
326
+ return classifier.getEPackage();
327
+ }
328
+ // Try eGet for dynamic objects
329
+ if (typeof classifier.eGet === 'function' && typeof classifier.eClass === 'function') {
330
+ const eClass = classifier.eClass();
331
+ if (eClass) {
332
+ const pkgFeature = eClass.getEStructuralFeature?.('ePackage');
333
+ if (pkgFeature) {
334
+ return classifier.eGet(pkgFeature);
335
+ }
336
+ }
337
+ }
338
+ // Try eContainer for contained objects
339
+ if (typeof classifier.eContainer === 'function') {
340
+ const container = classifier.eContainer();
341
+ if (container && this.isEPackage(container)) {
342
+ return container;
343
+ }
344
+ }
345
+ return null;
346
+ }
347
+ /**
348
+ * Check if an object is an EPackage
349
+ */
350
+ isEPackage(obj) {
351
+ return obj !== null &&
352
+ typeof obj === 'object' &&
353
+ 'getEClassifiers' in obj &&
354
+ 'getNsURI' in obj;
355
+ }
356
+ /**
357
+ * Format imports as TypeScript import statements
358
+ */
359
+ formatImports(imports) {
360
+ // Group imports by path
361
+ const byPath = new Map();
362
+ for (const imp of imports) {
363
+ const existing = byPath.get(imp.importPath) ?? [];
364
+ existing.push(imp);
365
+ byPath.set(imp.importPath, existing);
366
+ }
367
+ const lines = [];
368
+ for (const [path, imps] of byPath) {
369
+ const typeOnly = imps.every(i => i.isTypeOnly);
370
+ const names = imps.map(i => i.typeName).join(', ');
371
+ if (typeOnly) {
372
+ lines.push(`import type { ${names} } from '${path}';`);
373
+ }
374
+ else {
375
+ lines.push(`import { ${names} } from '${path}';`);
376
+ }
377
+ }
378
+ return lines.join('\n');
379
+ }
380
+ }
381
+ //# sourceMappingURL=ImportResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportResolver.js","sourceRoot":"","sources":["../../src/generator/ImportResolver.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,SAAS,EAAE,OAAO,EAAE,kBAAkB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa;IAChD,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;IAChD,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe;IACpD,aAAa,EAAE,aAAa;IAC5B,OAAO;IACP,aAAa,EAAE,YAAY;IAC3B,YAAY;IACZ,kBAAkB,EAAE,aAAa;IACjC,kBAAkB;IAClB,MAAM,EAAE,QAAQ,EAAE,eAAe;IACjC,4BAA4B;IAC5B,WAAW,EAAE,cAAc;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;IAExD;;OAEG;IACH,eAAe,CAAC,KAAa,EAAE,UAAkB;QAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,sBAAsB,CACpB,MAAc,EACd,UAAsB,EACtB,IAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;QAE9C,2DAA2D;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACtE,CAAC;QAED,mEAAmE;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACpD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAE/C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAW;QAC/B,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,aAAa,CAAC,CAAC;gBACjE,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAAE,OAAO,MAAM,CAAC;oBACzC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;wBAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAAW;QACvC,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,UAAU,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,qBAAqB,CAAC,CAAC;gBACzE,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAAE,OAAO,MAAM,CAAC;oBACzC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;wBAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,OAAgC,EAChC,UAAuB,EACvB,YAAoB,EACpB,UAAsB;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,gEAAgE;QAChE,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,UAAU,IAAI,UAAU,IAAK,UAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE,CAAC;gBAChB,6BAA6B;gBAC7B,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAErD,4EAA4E;QAC5E,wEAAwE;QACxE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC;YAC/C,qEAAqE;YACrE,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC;YAC7D,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC7B,iBAAiB,GAAG,cAAc,CAAC;oBACnC,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QAE/E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;YAChB,QAAQ,EAAE,IAAI;YACd,UAAU;YACV,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,OAAgC,EAChC,OAA2B,EAC3B,YAAoB,EACpB,UAAsB;QAEtB,oDAAoD;QACpD,IAAI,KAAK,GAAQ,IAAI,CAAC;QACtB,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC3C,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACtF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,WAAW,EAAE,CAAC;oBAChB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB,CAC9B,OAAgC,EAChC,WAAyB,EACzB,YAAoB,EACpB,UAAsB;QAEtB,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAC7E,CAAC;QAED,yBAAyB;QACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,UAAuB,EAAE,cAAyB;QAC3E,IAAI,CAAC,CAAC,WAAW,IAAI,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAI,UAAkB,CAAC,SAAS,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEtD,+DAA+D;QAC/D,oEAAoE;QACpE,sCAAsC;QACtC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO;gBACL,QAAQ;gBACR,UAAU,EAAE,KAAK,QAAQ,EAAE;gBAC3B,UAAU,EAAE,KAAK;aAClB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAE7F,OAAO;YACL,QAAQ;YACR,UAAU;YACV,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,aAAuB,EACvB,cAAwB,EACxB,QAAgB;QAEhB,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;QAE7C,iCAAiC;QACjC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,CAAC;QAED,6CAA6C;QAC7C,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC7C,CAAC;QAED,sBAAsB;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,KAAa;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAW;QACjC,kBAAkB;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,+BAA+B;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,OAAgC,EAChC,IAAoB,EACpB,UAAsB;QAEtB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW;gBACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE;oBAC9B,QAAQ,EAAE,uDAAuD;oBACjE,UAAU,EAAE,oBAAoB;oBAChC,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,UAAU,EAAE,aAAa;oBACzB,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,aAAa;oBACzB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;oBAChC,QAAQ,EAAE,oBAAoB;oBAC9B,UAAU,EAAE,aAAa;oBACzB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,OAAO,CAAC;YACb;gBACE,uCAAuC;gBACvC,MAAM;QACV,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,GAAQ;QACtB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,0BAA0B;QAC1B,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,+BAA+B;QAC/B,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QACD,8BAA8B;QAC9B,OAAO,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,UAAe;QACjC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7B,0BAA0B;QAC1B,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;QACD,+BAA+B;QAC/B,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACrF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QACD,uCAAuC;QACvC,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,OAAO,SAAqB,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAY;QAC7B,OAAO,GAAG,KAAK,IAAI;YACjB,OAAO,GAAG,KAAK,QAAQ;YACvB,iBAAiB,IAAI,GAAG;YACxB,UAAU,IAAI,GAAG,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAqB;QACjC,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnD,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,72 @@
1
+ interface RestClientGeneratorOptions {
2
+ outputDir: string;
3
+ verbose?: boolean;
4
+ }
5
+ /**
6
+ * Generates TypeScript fetch clients from rest-api.ecore + XMI instance
7
+ */
8
+ export declare class RestClientGenerator {
9
+ private options;
10
+ constructor(options: RestClientGeneratorOptions);
11
+ /**
12
+ * Load the REST API metamodel and instance, then generate client code
13
+ */
14
+ generate(metamodelPath: string, instancePath: string): Promise<string[]>;
15
+ /**
16
+ * Load and parse the XMI model into ApiModel
17
+ */
18
+ private loadModel;
19
+ /**
20
+ * Extract ApiModel from dynamic EObject tree
21
+ */
22
+ private extractModel;
23
+ private extractResource;
24
+ private extractEndpoint;
25
+ private extractParameter;
26
+ /**
27
+ * Generate all TypeScript files
28
+ */
29
+ private generateFiles;
30
+ /**
31
+ * Generate api-base.ts with shared utilities
32
+ */
33
+ private generateApiBase;
34
+ /**
35
+ * Generate a TypeScript API class for a REST resource
36
+ */
37
+ private generateResourceApi;
38
+ /**
39
+ * Generate a single endpoint method
40
+ */
41
+ private generateEndpointMethod;
42
+ /**
43
+ * Generate URL construction code
44
+ */
45
+ private generateUrlConstruction;
46
+ /**
47
+ * Generate response handling code based on endpoint config
48
+ */
49
+ private generateResponseHandling;
50
+ /**
51
+ * Build method parameter string
52
+ */
53
+ private buildMethodParams;
54
+ /**
55
+ * Determine the TypeScript return type for an endpoint
56
+ */
57
+ private getReturnType;
58
+ /**
59
+ * Map data type string to TypeScript type
60
+ */
61
+ private mapDataType;
62
+ /**
63
+ * Map body parameter type
64
+ */
65
+ private mapBodyType;
66
+ /**
67
+ * Generate barrel export index.ts
68
+ */
69
+ private generateIndex;
70
+ }
71
+ export {};
72
+ //# sourceMappingURL=RestClientGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestClientGenerator.d.ts","sourceRoot":"","sources":["../../src/generator/RestClientGenerator.ts"],"names":[],"mappings":"AAuCA,UAAU,0BAA0B;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA6B;gBAEhC,OAAO,EAAE,0BAA0B;IAI/C;;OAEG;IACG,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK9E;;OAEG;YACW,SAAS;IA4DvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;YACW,aAAa;IAuC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAoFvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4D9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuC/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,aAAa;CAmBtB"}