@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,64 @@
1
+ import type { GenConfig } from './GenConfig.js';
2
+ import type { GenModel } from '../genmodel/GenModel.js';
3
+ /**
4
+ * Converts GenConfig to GenModel for the CodeGenerator
5
+ */
6
+ export declare class GenConfigConverter {
7
+ /**
8
+ * Convert GenConfig to GenModel
9
+ */
10
+ convert(config: GenConfig): GenModel;
11
+ /**
12
+ * Convert mode string to GenerationMode enum
13
+ */
14
+ private convertMode;
15
+ /**
16
+ * Convert package
17
+ */
18
+ private convertPackage;
19
+ /**
20
+ * Convert class
21
+ */
22
+ private convertClass;
23
+ /**
24
+ * Convert feature
25
+ */
26
+ private convertFeature;
27
+ /**
28
+ * Convert property mode string to PropertyMode enum
29
+ */
30
+ private convertPropertyMode;
31
+ /**
32
+ * Convert operation
33
+ */
34
+ private convertOperation;
35
+ /**
36
+ * Convert enum
37
+ */
38
+ private convertEnum;
39
+ /**
40
+ * Convert data type
41
+ */
42
+ private convertDataType;
43
+ /**
44
+ * Map Ecore type name to TypeScript type
45
+ */
46
+ private mapDefaultTsType;
47
+ /**
48
+ * Check if classifier is an EClass
49
+ */
50
+ private isEClass;
51
+ /**
52
+ * Check if classifier is an EEnum
53
+ */
54
+ private isEEnum;
55
+ /**
56
+ * Check if classifier is an EDataType (but not EEnum)
57
+ */
58
+ private isEDataType;
59
+ /**
60
+ * Check if feature is containment
61
+ */
62
+ private isContainment;
63
+ }
64
+ //# sourceMappingURL=GenConfigConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenConfigConverter.d.ts","sourceRoot":"","sources":["../../src/genconfig/GenConfigConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAkC,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAUxD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ;IA+BpC;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,cAAc;IA4CtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,OAAO,CAAC,OAAO;IAUf;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,aAAa;CAkBtB"}
@@ -0,0 +1,293 @@
1
+ import { GenerationMode, PropertyMode } from '../genmodel/GenerationMode.js';
2
+ import { getName } from '../util/EObjectHelper.js';
3
+ /**
4
+ * Converts GenConfig to GenModel for the CodeGenerator
5
+ */
6
+ export class GenConfigConverter {
7
+ /**
8
+ * Convert GenConfig to GenModel
9
+ */
10
+ convert(config) {
11
+ const genPackage = this.convertPackage(config);
12
+ return {
13
+ // Generation settings
14
+ generationMode: this.convertMode(config.generation.mode),
15
+ modelDirectory: config.generation.outputDir,
16
+ // Class defaults
17
+ rootExtendsClass: config.classDefaults?.rootExtendsClass || 'BasicEObject',
18
+ rootExtendsInterface: config.classDefaults?.rootExtendsInterface || 'EObject',
19
+ // Package settings
20
+ generateFactory: config.package.generateFactory ?? true,
21
+ generatePackage: config.package.generatePackage ?? true,
22
+ generateInterfaces: config.classDefaults?.generateInterface ?? true,
23
+ generateClasses: config.classDefaults?.generateImpl ?? true,
24
+ // Required defaults
25
+ generateResource: false,
26
+ boundedGenericTypeNames: false,
27
+ usedGenPackages: [],
28
+ featureDelegation: 'None',
29
+ suppressEMFTypes: false,
30
+ suppressGenModelAnnotations: false,
31
+ // Packages
32
+ genPackages: [genPackage]
33
+ };
34
+ }
35
+ /**
36
+ * Convert mode string to GenerationMode enum
37
+ */
38
+ convertMode(mode) {
39
+ switch (mode) {
40
+ case 'emf':
41
+ return GenerationMode.EMF;
42
+ case 'decorator':
43
+ return GenerationMode.DECORATOR;
44
+ case 'plain':
45
+ return GenerationMode.PLAIN;
46
+ default:
47
+ return GenerationMode.EMF;
48
+ }
49
+ }
50
+ /**
51
+ * Convert package
52
+ */
53
+ convertPackage(config) {
54
+ const ePackage = config.ecorePackage;
55
+ const rawClassifiers = ePackage.getEClassifiers?.() || [];
56
+ const classifiers = Array.isArray(rawClassifiers) ? rawClassifiers : Array.from(rawClassifiers);
57
+ const pkgName = getName(ePackage) || 'model';
58
+ // Build override maps for quick lookup
59
+ const classOverrideMap = new Map();
60
+ for (const override of config.classOverrides || []) {
61
+ classOverrideMap.set(override.ecoreClass, override);
62
+ }
63
+ // Convert classes, enums, and data types
64
+ const genClasses = [];
65
+ const genEnums = [];
66
+ const genDataTypes = [];
67
+ for (const classifier of classifiers) {
68
+ if (this.isEClass(classifier)) {
69
+ const classOverride = classOverrideMap.get(classifier);
70
+ genClasses.push(this.convertClass(classifier, config, classOverride));
71
+ }
72
+ else if (this.isEEnum(classifier)) {
73
+ genEnums.push(this.convertEnum(classifier));
74
+ }
75
+ else if (this.isEDataType(classifier)) {
76
+ genDataTypes.push(this.convertDataType(classifier));
77
+ }
78
+ }
79
+ return {
80
+ ecorePackage: ePackage,
81
+ prefix: config.package.prefix,
82
+ basePackage: config.package.basePackage || '',
83
+ interfacePackageSuffix: '',
84
+ classPackageSuffix: 'impl',
85
+ adapterFactory: false,
86
+ generateResourceFactory: false,
87
+ fileExtension: pkgName.toLowerCase(),
88
+ genClasses,
89
+ genEnums,
90
+ genDataTypes,
91
+ nestedGenPackages: []
92
+ };
93
+ }
94
+ /**
95
+ * Convert class
96
+ */
97
+ convertClass(eClass, config, override) {
98
+ // Build feature override map
99
+ const featureOverrideMap = new Map();
100
+ if (override?.featureOverrides) {
101
+ for (const fo of override.featureOverrides) {
102
+ featureOverrideMap.set(fo.ecoreFeature, fo);
103
+ }
104
+ }
105
+ // Convert features
106
+ const rawFeatures = eClass.getEStructuralFeatures?.() || [];
107
+ const features = Array.isArray(rawFeatures) ? rawFeatures : Array.from(rawFeatures);
108
+ const genFeatures = [];
109
+ for (const feature of features) {
110
+ const featureOverride = featureOverrideMap.get(feature);
111
+ genFeatures.push(this.convertFeature(feature, config, featureOverride));
112
+ }
113
+ // Convert operations
114
+ const rawOperations = eClass.getEOperations?.() || [];
115
+ const operations = Array.isArray(rawOperations) ? rawOperations : Array.from(rawOperations);
116
+ const genOperations = operations.map(op => this.convertOperation(op));
117
+ return {
118
+ ecoreClass: eClass,
119
+ generateInterface: override?.generateInterface ?? config.classDefaults?.generateInterface ?? true,
120
+ generateImpl: override?.generateImpl ?? config.classDefaults?.generateImpl ?? true,
121
+ dynamic: false,
122
+ genFeatures,
123
+ genOperations
124
+ };
125
+ }
126
+ /**
127
+ * Convert feature
128
+ */
129
+ convertFeature(feature, config, override) {
130
+ // Determine notify - use override, then feature defaults, then mode-based default
131
+ let notify = override?.notify;
132
+ if (notify === undefined) {
133
+ notify = config.featureDefaults?.notify;
134
+ }
135
+ if (notify === undefined) {
136
+ notify = config.generation.mode === 'emf';
137
+ }
138
+ // Determine property mode
139
+ let property = override?.property;
140
+ if (property === undefined) {
141
+ property = config.featureDefaults?.property;
142
+ }
143
+ if (property === undefined) {
144
+ property = 'editable';
145
+ }
146
+ return {
147
+ ecoreFeature: feature,
148
+ notify,
149
+ property: this.convertPropertyMode(property),
150
+ children: false,
151
+ createChild: this.isContainment(feature),
152
+ propertySortChoices: false
153
+ };
154
+ }
155
+ /**
156
+ * Convert property mode string to PropertyMode enum
157
+ */
158
+ convertPropertyMode(mode) {
159
+ switch (mode) {
160
+ case 'readonly':
161
+ return PropertyMode.READONLY;
162
+ case 'none':
163
+ return PropertyMode.NONE;
164
+ case 'editable':
165
+ default:
166
+ return PropertyMode.EDITABLE;
167
+ }
168
+ }
169
+ /**
170
+ * Convert operation
171
+ */
172
+ convertOperation(op) {
173
+ return {
174
+ ecoreOperation: op,
175
+ generateBody: false,
176
+ body: undefined
177
+ };
178
+ }
179
+ /**
180
+ * Convert enum
181
+ */
182
+ convertEnum(eEnum) {
183
+ return {
184
+ ecoreEnum: eEnum,
185
+ useStringValues: false,
186
+ generateAsConst: false
187
+ };
188
+ }
189
+ /**
190
+ * Convert data type
191
+ */
192
+ convertDataType(dataType) {
193
+ const typeName = getName(dataType) || 'any';
194
+ return {
195
+ ecoreDataType: dataType,
196
+ tsType: this.mapDefaultTsType(typeName)
197
+ };
198
+ }
199
+ /**
200
+ * Map Ecore type name to TypeScript type
201
+ */
202
+ mapDefaultTsType(typeName) {
203
+ switch (typeName) {
204
+ case 'EString':
205
+ case 'EChar':
206
+ case 'ECharacterObject':
207
+ return 'string';
208
+ case 'EBoolean':
209
+ case 'EBooleanObject':
210
+ return 'boolean';
211
+ case 'EInt':
212
+ case 'EIntegerObject':
213
+ case 'EByte':
214
+ case 'EByteObject':
215
+ case 'ELong':
216
+ case 'ELongObject':
217
+ case 'EShort':
218
+ case 'EShortObject':
219
+ case 'EFloat':
220
+ case 'EFloatObject':
221
+ case 'EDouble':
222
+ case 'EDoubleObject':
223
+ case 'EBigInteger':
224
+ case 'EBigDecimal':
225
+ return 'number';
226
+ case 'EDate':
227
+ return 'Date';
228
+ case 'EJavaObject':
229
+ case 'EJavaClass':
230
+ return 'any';
231
+ default:
232
+ return typeName;
233
+ }
234
+ }
235
+ /**
236
+ * Check if classifier is an EClass
237
+ */
238
+ isEClass(classifier) {
239
+ // Check for static interface
240
+ if ('getEStructuralFeatures' in classifier)
241
+ return true;
242
+ // Check for dynamic object
243
+ const eClass = classifier.eClass?.();
244
+ const eClassName = eClass?.getName?.();
245
+ return eClassName === 'EClass';
246
+ }
247
+ /**
248
+ * Check if classifier is an EEnum
249
+ */
250
+ isEEnum(classifier) {
251
+ // Check for static interface
252
+ if ('getELiterals' in classifier)
253
+ return true;
254
+ // Check for dynamic object
255
+ const eClass = classifier.eClass?.();
256
+ const eClassName = eClass?.getName?.();
257
+ return eClassName === 'EEnum';
258
+ }
259
+ /**
260
+ * Check if classifier is an EDataType (but not EEnum)
261
+ */
262
+ isEDataType(classifier) {
263
+ if (this.isEEnum(classifier))
264
+ return false;
265
+ // Check for static interface
266
+ if ('isSerializable' in classifier)
267
+ return true;
268
+ // Check for dynamic object
269
+ const eClass = classifier.eClass?.();
270
+ const eClassName = eClass?.getName?.();
271
+ return eClassName === 'EDataType';
272
+ }
273
+ /**
274
+ * Check if feature is containment
275
+ */
276
+ isContainment(feature) {
277
+ if ('isContainment' in feature && typeof feature.isContainment === 'function') {
278
+ return feature.isContainment();
279
+ }
280
+ // Dynamic object
281
+ if (typeof feature.eGet === 'function' && typeof feature.eClass === 'function') {
282
+ const eClass = feature.eClass();
283
+ if (eClass) {
284
+ const containmentFeature = eClass.getEStructuralFeature?.('containment');
285
+ if (containmentFeature) {
286
+ return feature.eGet(containmentFeature) === true;
287
+ }
288
+ }
289
+ }
290
+ return false;
291
+ }
292
+ }
293
+ //# sourceMappingURL=GenConfigConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenConfigConverter.js","sourceRoot":"","sources":["../../src/genconfig/GenConfigConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { EPackage } from '@emfts/core';
2
+ import type { GenConfig } from './GenConfig.js';
3
+ /**
4
+ * Loads GenConfig from XMI files
5
+ */
6
+ export declare class GenConfigLoader {
7
+ private resourceSet;
8
+ private genconfigPackage;
9
+ private ecorePackages;
10
+ /**
11
+ * Initialize the loader
12
+ */
13
+ init(): Promise<void>;
14
+ /**
15
+ * Load the genconfig.ecore metamodel
16
+ */
17
+ private loadGenConfigMetamodel;
18
+ /**
19
+ * Register an EPackage for reference resolution
20
+ */
21
+ registerPackage(ePackage: EPackage): void;
22
+ /**
23
+ * Load a GenConfig from XMI file
24
+ */
25
+ load(configPath: string): Promise<GenConfig>;
26
+ /**
27
+ * Convert dynamic EObject to GenConfig
28
+ */
29
+ private convertToGenConfig;
30
+ /**
31
+ * Convert GenerationSettings
32
+ */
33
+ private convertGenerationSettings;
34
+ /**
35
+ * Convert mode value (can be enum literal or string)
36
+ */
37
+ private convertMode;
38
+ /**
39
+ * Convert PackageSettings
40
+ */
41
+ private convertPackageSettings;
42
+ /**
43
+ * Convert ClassDefaults
44
+ */
45
+ private convertClassDefaults;
46
+ /**
47
+ * Convert FeatureDefaults
48
+ */
49
+ private convertFeatureDefaults;
50
+ /**
51
+ * Convert property mode value
52
+ */
53
+ private convertPropertyMode;
54
+ /**
55
+ * Convert ClassOverrides array
56
+ */
57
+ private convertClassOverrides;
58
+ /**
59
+ * Convert FeatureOverrides array
60
+ */
61
+ private convertFeatureOverrides;
62
+ /**
63
+ * Resolve EPackage reference from URI
64
+ */
65
+ private resolvePackageReference;
66
+ /**
67
+ * Resolve EPackage from URI string
68
+ */
69
+ private resolvePackageFromURI;
70
+ /**
71
+ * Resolve EClass reference from URI
72
+ */
73
+ private resolveClassReference;
74
+ /**
75
+ * Resolve EStructuralFeature reference from URI
76
+ */
77
+ private resolveFeatureReference;
78
+ /**
79
+ * Get feature value from dynamic EObject
80
+ */
81
+ private getFeatureValue;
82
+ }
83
+ //# sourceMappingURL=GenConfigLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenConfigLoader.d.ts","sourceRoot":"","sources":["../../src/genconfig/GenConfigLoader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAA2C,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EACV,SAAS,EASV,MAAM,gBAAgB,CAAC;AAQxB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,aAAa,CAAoC;IAEzD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;OAEG;YACW,sBAAsB;IAmBpC;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAUzC;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAuBlD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiD1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8D/B;;OAEG;IACH,OAAO,CAAC,eAAe;CAoExB"}