@emfts/codegen 0.0.1-next.4 → 0.0.1-next.6

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.
@@ -37,6 +37,26 @@ export declare class ImportResolver {
37
37
  * Add import for a classifier if needed
38
38
  */
39
39
  private addImportForClassifier;
40
+ /**
41
+ * Get operations from EClass (handles both static and dynamic)
42
+ */
43
+ private getOperations;
44
+ /**
45
+ * Add imports for an operation's return type and parameter types
46
+ */
47
+ private addImportsForOperation;
48
+ /**
49
+ * Get the eType from an element (handles both static and dynamic)
50
+ */
51
+ private getEType;
52
+ /**
53
+ * Get parameters from an EOperation (handles both static and dynamic)
54
+ */
55
+ private getEParameters;
56
+ /**
57
+ * Resolve imports for additional features (e.g., mixin features from non-primary supertypes)
58
+ */
59
+ resolveImportsForFeatures(features: any[], currentClass: EClass, genPackage: GenPackage): ImportInfo[];
40
60
  /**
41
61
  * Add imports for a structural feature
42
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ImportResolver.d.ts","sourceRoot":"","sources":["../../src/generator/ImportResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAuE,MAAM,aAAa,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;CACrB;AAsBD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAkC;IAExD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxD;;OAEG;IACH,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,UAAU,EAAE;IAqBf;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiE9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAoBf;;OAEG;IACH,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;CAuB7C"}
1
+ {"version":3,"file":"ImportResolver.d.ts","sourceRoot":"","sources":["../../src/generator/ImportResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAuE,MAAM,aAAa,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;CACrB;AAsBD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAkC;IAExD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxD;;OAEG;IACH,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,UAAU,EAAE;IA2Bf;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiE9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,yBAAyB,CACvB,QAAQ,EAAE,GAAG,EAAE,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,GACrB,UAAU,EAAE;IAQf;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAoBf;;OAEG;IACH,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;CAuB7C"}
@@ -43,6 +43,11 @@ export class ImportResolver {
43
43
  for (const feature of features) {
44
44
  this.addImportsForFeature(imports, feature, eClass, genPackage);
45
45
  }
46
+ // Get operations and resolve imports for parameter/return types
47
+ const operations = this.getOperations(eClass);
48
+ for (const operation of operations) {
49
+ this.addImportsForOperation(imports, operation, eClass, genPackage);
50
+ }
46
51
  // Add mode-specific imports
47
52
  this.addModeImports(imports, mode, genPackage);
48
53
  return Array.from(imports.values());
@@ -147,6 +152,100 @@ export class ImportResolver {
147
152
  isTypeOnly: false
148
153
  });
149
154
  }
155
+ /**
156
+ * Get operations from EClass (handles both static and dynamic)
157
+ */
158
+ getOperations(eClass) {
159
+ if (typeof eClass.getEOperations === 'function') {
160
+ return eClass.getEOperations() || [];
161
+ }
162
+ if (typeof eClass.eGet === 'function' && typeof eClass.eClass === 'function') {
163
+ const metaClass = eClass.eClass();
164
+ if (metaClass) {
165
+ const feature = metaClass.getEStructuralFeature?.('eOperations');
166
+ if (feature) {
167
+ const result = eClass.eGet(feature);
168
+ if (Array.isArray(result))
169
+ return result;
170
+ if (result && typeof result[Symbol.iterator] === 'function') {
171
+ return Array.from(result);
172
+ }
173
+ }
174
+ }
175
+ }
176
+ return [];
177
+ }
178
+ /**
179
+ * Add imports for an operation's return type and parameter types
180
+ */
181
+ addImportsForOperation(imports, operation, currentClass, genPackage) {
182
+ // Return type
183
+ const returnType = this.getEType(operation);
184
+ if (returnType) {
185
+ this.addImportForClassifier(imports, returnType, currentClass, genPackage);
186
+ }
187
+ // Parameter types
188
+ const params = this.getEParameters(operation);
189
+ for (const param of params) {
190
+ const paramType = this.getEType(param);
191
+ if (paramType) {
192
+ this.addImportForClassifier(imports, paramType, currentClass, genPackage);
193
+ }
194
+ }
195
+ }
196
+ /**
197
+ * Get the eType from an element (handles both static and dynamic)
198
+ */
199
+ getEType(obj) {
200
+ if (!obj)
201
+ return null;
202
+ if (typeof obj.getEType === 'function') {
203
+ return obj.getEType();
204
+ }
205
+ if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
206
+ const eClass = obj.eClass();
207
+ if (eClass) {
208
+ const typeFeature = eClass.getEStructuralFeature?.('eType');
209
+ if (typeFeature) {
210
+ return obj.eGet(typeFeature);
211
+ }
212
+ }
213
+ }
214
+ return null;
215
+ }
216
+ /**
217
+ * Get parameters from an EOperation (handles both static and dynamic)
218
+ */
219
+ getEParameters(operation) {
220
+ if (typeof operation.getEParameters === 'function') {
221
+ return operation.getEParameters() || [];
222
+ }
223
+ if (typeof operation.eGet === 'function' && typeof operation.eClass === 'function') {
224
+ const eClass = operation.eClass();
225
+ if (eClass) {
226
+ const feature = eClass.getEStructuralFeature?.('eParameters');
227
+ if (feature) {
228
+ const result = operation.eGet(feature);
229
+ if (Array.isArray(result))
230
+ return result;
231
+ if (result && typeof result[Symbol.iterator] === 'function') {
232
+ return Array.from(result);
233
+ }
234
+ }
235
+ }
236
+ }
237
+ return [];
238
+ }
239
+ /**
240
+ * Resolve imports for additional features (e.g., mixin features from non-primary supertypes)
241
+ */
242
+ resolveImportsForFeatures(features, currentClass, genPackage) {
243
+ const imports = new Map();
244
+ for (const feature of features) {
245
+ this.addImportsForFeature(imports, feature, currentClass, genPackage);
246
+ }
247
+ return Array.from(imports.values());
248
+ }
150
249
  /**
151
250
  * Add imports for a structural feature
152
251
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ImportResolver.js","sourceRoot":"","sources":["../../src/generator/ImportResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImportResolver.js","sourceRoot":"","sources":["../../src/generator/ImportResolver.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,20 @@ export declare class EmfGenerator extends BaseGenerator {
17
17
  * Generate barrel index file
18
18
  */
19
19
  generateIndex(genPackage: GenPackage): Promise<GeneratedFile>;
20
+ /**
21
+ * Collect features from non-primary supertypes that need to be generated as mixins.
22
+ * These are features inherited from interface supertypes or non-first supertypes
23
+ * that aren't covered by the primary extends chain.
24
+ */
25
+ private collectMixinFeatures;
26
+ /**
27
+ * Recursively collect all feature names from a class and its supertypes
28
+ */
29
+ private collectAllFeatureNames;
30
+ /**
31
+ * Collect all inherited features in order (matching the traversal used by countInheritedFeatures)
32
+ */
33
+ private collectAllInheritedFeaturesOrdered;
20
34
  private toUpperSnake;
21
35
  }
22
36
  //# sourceMappingURL=EmfGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmfGenerator.d.ts","sourceRoot":"","sources":["../../../src/generator/modes/EmfGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,cAAc,IAAI,MAAM;IAI5B,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAuEjF,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBrF,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAoB9E,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CnE,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsB5E;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA0CnE,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"EmfGenerator.d.ts","sourceRoot":"","sources":["../../../src/generator/modes/EmfGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,cAAc,IAAI,MAAM;IAI5B,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAwFjF,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBrF,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAoB9E,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CnE,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsB5E;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA0CnE;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACH,OAAO,CAAC,kCAAkC;IAS1C,OAAO,CAAC,YAAY;CAGrB"}
@@ -21,15 +21,19 @@ export class EmfGenerator extends BaseGenerator {
21
21
  const packagePrefix = genPackage.prefix;
22
22
  const isAbstractValue = EObjectHelper.isAbstract(eClass);
23
23
  const superTypes = EObjectHelper.getESuperTypes(eClass);
24
- // Determine the extends class - use first supertype's impl or rootExtendsClass
24
+ // Determine the extends class - use first non-interface supertype's impl or rootExtendsClass
25
25
  let extendsClass = this.context.genModel.rootExtendsClass;
26
26
  let extendsImport = null;
27
- if (superTypes.length > 0) {
28
- const superType = superTypes[0];
29
- const superTypeName = EObjectHelper.getName(superType);
30
- if (superTypeName) {
31
- extendsClass = `${superTypeName}Impl`;
32
- extendsImport = `./${extendsClass}`;
27
+ let primarySuperType = null;
28
+ for (const st of superTypes) {
29
+ if (!EObjectHelper.isInterface(st)) {
30
+ primarySuperType = st;
31
+ const superTypeName = EObjectHelper.getName(st);
32
+ if (superTypeName) {
33
+ extendsClass = `${superTypeName}Impl`;
34
+ extendsImport = `./${extendsClass}`;
35
+ }
36
+ break;
33
37
  }
34
38
  }
35
39
  // Calculate inherited feature count for feature ID offset
@@ -53,6 +57,10 @@ export class EmfGenerator extends BaseGenerator {
53
57
  feature: genFeature
54
58
  });
55
59
  }
60
+ // Collect mixin features from non-primary supertypes (Bug 3: multiple inheritance)
61
+ const mixinFeatures = this.collectMixinFeatures(eClass, primarySuperType);
62
+ // Resolve additional imports for mixin feature types
63
+ const mixinImports = this.context.importResolver.resolveImportsForFeatures(mixinFeatures.map(mf => mf.feature), eClass, genPackage);
56
64
  const content = await this.render('class-file', {
57
65
  genClass,
58
66
  genPackage,
@@ -67,6 +75,8 @@ export class EmfGenerator extends BaseGenerator {
67
75
  extendsImport,
68
76
  features: genClass.genFeatures,
69
77
  featureIds,
78
+ mixinFeatures,
79
+ mixinImports,
70
80
  operations: genClass.genOperations,
71
81
  typeParameters: EObjectHelper.getETypeParameters(eClass),
72
82
  rootExtendsClass: this.context.genModel.rootExtendsClass
@@ -171,9 +181,9 @@ export class EmfGenerator extends BaseGenerator {
171
181
  exports.push(name);
172
182
  }
173
183
  }
174
- // Export implementations
184
+ // Export implementations (including abstract classes, as they're extended by subclasses)
175
185
  for (const genClass of genPackage.genClasses) {
176
- if (!EObjectHelper.isAbstract(genClass.ecoreClass) && !EObjectHelper.isInterface(genClass.ecoreClass)) {
186
+ if (!EObjectHelper.isInterface(genClass.ecoreClass)) {
177
187
  const implName = genClass.implClassName ?? `${EObjectHelper.getName(genClass.ecoreClass)}Impl`;
178
188
  exports.push(implName);
179
189
  }
@@ -195,6 +205,60 @@ export class EmfGenerator extends BaseGenerator {
195
205
  const packagePath = this.getPackagePath(genPackage);
196
206
  return this.createFile(join(packagePath, 'index.ts'), content);
197
207
  }
208
+ /**
209
+ * Collect features from non-primary supertypes that need to be generated as mixins.
210
+ * These are features inherited from interface supertypes or non-first supertypes
211
+ * that aren't covered by the primary extends chain.
212
+ */
213
+ collectMixinFeatures(eClass, primarySuperType) {
214
+ // Collect all feature names from the primary extends chain
215
+ const primaryChainFeatureNames = new Set();
216
+ if (primarySuperType) {
217
+ this.collectAllFeatureNames(primarySuperType, primaryChainFeatureNames);
218
+ }
219
+ // Collect all inherited features in order (matching countInheritedFeatures traversal)
220
+ const allInherited = this.collectAllInheritedFeaturesOrdered(eClass);
221
+ // Mixin features = inherited features not covered by primary chain
222
+ const mixinFeatures = [];
223
+ const seen = new Set();
224
+ for (let i = 0; i < allInherited.length; i++) {
225
+ const featureName = EObjectHelper.getName(allInherited[i]);
226
+ if (featureName && !primaryChainFeatureNames.has(featureName) && !seen.has(featureName)) {
227
+ seen.add(featureName);
228
+ mixinFeatures.push({
229
+ name: featureName,
230
+ upperName: this.toUpperSnake(featureName),
231
+ id: i,
232
+ feature: allInherited[i]
233
+ });
234
+ }
235
+ }
236
+ return mixinFeatures;
237
+ }
238
+ /**
239
+ * Recursively collect all feature names from a class and its supertypes
240
+ */
241
+ collectAllFeatureNames(cls, names) {
242
+ for (const f of EObjectHelper.getEStructuralFeatures(cls)) {
243
+ const name = EObjectHelper.getName(f);
244
+ if (name)
245
+ names.add(name);
246
+ }
247
+ for (const st of EObjectHelper.getESuperTypes(cls)) {
248
+ this.collectAllFeatureNames(st, names);
249
+ }
250
+ }
251
+ /**
252
+ * Collect all inherited features in order (matching the traversal used by countInheritedFeatures)
253
+ */
254
+ collectAllInheritedFeaturesOrdered(cls) {
255
+ const features = [];
256
+ for (const st of EObjectHelper.getESuperTypes(cls)) {
257
+ features.push(...this.collectAllInheritedFeaturesOrdered(st));
258
+ features.push(...EObjectHelper.getEStructuralFeatures(st));
259
+ }
260
+ return features;
261
+ }
198
262
  toUpperSnake(str) {
199
263
  return str.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');
200
264
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EmfGenerator.js","sourceRoot":"","sources":["../../../src/generator/modes/EmfGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmfGenerator.js","sourceRoot":"","sources":["../../../src/generator/modes/EmfGenerator.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ const hardcodedCoreTypes = ['BasicEObject', 'EClass', 'EStructuralFeature'];
6
6
  const coreTypeImports = ['EClass', 'EStructuralFeature'];
7
7
  const typeOnlyImports = [];
8
8
  const valueImports = [];
9
+ const importedNames = new Set();
9
10
  for (const imp of imports) {
10
11
  if (imp.typeName === className || imp.typeName === interfaceName || imp.typeName === extendsClass) continue;
11
12
  if (hardcodedCoreTypes.includes(imp.typeName)) continue;
@@ -25,6 +26,21 @@ for (const imp of imports) {
25
26
  } else {
26
27
  typeOnlyImports.push(imp);
27
28
  }
29
+ importedNames.add(imp.typeName);
30
+ }
31
+ // Add mixin feature type imports (if not already imported)
32
+ for (const imp of (mixinImports || [])) {
33
+ if (imp.typeName === className || imp.typeName === interfaceName || imp.typeName === extendsClass) continue;
34
+ if (hardcodedCoreTypes.includes(imp.typeName)) continue;
35
+ if (importedNames.has(imp.typeName)) continue;
36
+ if (imp.importPath === '@emfts/core') {
37
+ if (!coreTypeImports.includes(imp.typeName)) {
38
+ coreTypeImports.push(imp.typeName);
39
+ }
40
+ continue;
41
+ }
42
+ typeOnlyImports.push(imp);
43
+ importedNames.add(imp.typeName);
28
44
  }
29
45
  -%>
30
46
  <% if (!extendsImport) { -%>
@@ -52,6 +68,9 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
52
68
  <% for (const fid of featureIds) { -%>
53
69
  static readonly <%- fid.name %>: number = <%- fid.id %>;
54
70
  <% } -%>
71
+ <% for (const mf of (mixinFeatures || [])) { -%>
72
+ static readonly <%- mf.upperName %>: number = <%- mf.id %>;
73
+ <% } -%>
55
74
 
56
75
  // Private fields
57
76
  <% for (const genFeature of features) {
@@ -63,6 +82,13 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
63
82
  -%>
64
83
  private _<%- featureName %><% if (!featureIsMany && defaultValue === null) { %>?<% } %>: <%- featureType %><% if (defaultValue !== null) { %> = <%- defaultValue %><% } %>;
65
84
  <% } -%>
85
+ <% for (const mf of (mixinFeatures || [])) {
86
+ const featureType = typeMapper.mapFeature(mf.feature);
87
+ const defaultValue = typeMapper.getDefaultValue(mf.feature);
88
+ const featureIsMany = isMany(mf.feature);
89
+ -%>
90
+ private _<%- mf.name %><% if (!featureIsMany && defaultValue === null) { %>?<% } %>: <%- featureType %><% if (defaultValue !== null) { %> = <%- defaultValue %><% } %>;
91
+ <% } -%>
66
92
 
67
93
  /**
68
94
  * Returns the EClass of this object
@@ -109,6 +135,19 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
109
135
  }
110
136
 
111
137
  <% } -%>
138
+ <% } -%>
139
+ <% for (const mf of (mixinFeatures || [])) {
140
+ const featureType = typeMapper.mapFeature(mf.feature);
141
+ const featureIsMany = isMany(mf.feature);
142
+ -%>
143
+ get <%- mf.name %>(): <%- featureType %> {
144
+ return this._<%- mf.name %><% if (!featureIsMany) { %>!<% } %>;
145
+ }
146
+
147
+ set <%- mf.name %>(value: <%- featureType %>) {
148
+ this._<%- mf.name %> = value;
149
+ }
150
+
112
151
  <% } -%>
113
152
  // Reflective API
114
153
 
@@ -121,6 +160,10 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
121
160
  <% for (const fid of featureIds) { -%>
122
161
  case <%- className %>.<%- fid.name %>:
123
162
  return this.<%- getName(fid.feature.ecoreFeature) %>;
163
+ <% } -%>
164
+ <% for (const mf of (mixinFeatures || [])) { -%>
165
+ case <%- className %>.<%- mf.upperName %>:
166
+ return this.<%- mf.name %>;
124
167
  <% } -%>
125
168
  default:
126
169
  return super.eGet(feature);
@@ -140,6 +183,14 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
140
183
  this.<%- getName(fid.feature.ecoreFeature) %> = newValue as <%- featureType %>;
141
184
  super.eSet(feature, newValue);
142
185
  break;
186
+ <% } -%>
187
+ <% for (const mf of (mixinFeatures || [])) {
188
+ const featureType = typeMapper.mapFeature(mf.feature);
189
+ -%>
190
+ case <%- className %>.<%- mf.upperName %>:
191
+ this.<%- mf.name %> = newValue as <%- featureType %>;
192
+ super.eSet(feature, newValue);
193
+ break;
143
194
  <% } -%>
144
195
  default:
145
196
  super.eSet(feature, newValue);
@@ -166,6 +217,19 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
166
217
  <% } else { -%>
167
218
  return this._<%- featureName %> !== undefined;
168
219
  <% } -%>
220
+ <% } -%>
221
+ <% for (const mf of (mixinFeatures || [])) {
222
+ const featureIsMany = isMany(mf.feature);
223
+ const defaultValue = typeMapper.getDefaultValue(mf.feature);
224
+ -%>
225
+ case <%- className %>.<%- mf.upperName %>:
226
+ <% if (featureIsMany) { -%>
227
+ return this._<%- mf.name %> !== undefined && this._<%- mf.name %>.length > 0;
228
+ <% } else if (defaultValue !== null) { -%>
229
+ return this._<%- mf.name %> !== <%- defaultValue %>;
230
+ <% } else { -%>
231
+ return this._<%- mf.name %> !== undefined;
232
+ <% } -%>
169
233
  <% } -%>
170
234
  default:
171
235
  return super.eIsSet(feature);
@@ -193,6 +257,20 @@ export <% if (isAbstract) { %>abstract <% } %>class <%- className %> extends <%-
193
257
  this._<%- featureName %> = undefined;
194
258
  <% } -%>
195
259
  return;
260
+ <% } -%>
261
+ <% for (const mf of (mixinFeatures || [])) {
262
+ const featureIsMany = isMany(mf.feature);
263
+ const defaultValue = typeMapper.getDefaultValue(mf.feature);
264
+ -%>
265
+ case <%- className %>.<%- mf.upperName %>:
266
+ <% if (featureIsMany) { -%>
267
+ this._<%- mf.name %> = [];
268
+ <% } else if (defaultValue !== null) { -%>
269
+ this._<%- mf.name %> = <%- defaultValue %>;
270
+ <% } else { -%>
271
+ this._<%- mf.name %> = undefined;
272
+ <% } -%>
273
+ return;
196
274
  <% } -%>
197
275
  default:
198
276
  super.eUnset(feature);
@@ -11,9 +11,9 @@ export { <%- packageName %>Factory } from './<%- packageName %>Factory';
11
11
  export type { <%- name %> } from './<%- name %>';
12
12
  <% } -%>
13
13
 
14
- // Implementations
14
+ // Implementations (including abstract classes, as they're extended by subclasses)
15
15
  <% for (const genClass of genClasses) {
16
- if (!checkIsAbstract(genClass.ecoreClass) && !checkIsInterface(genClass.ecoreClass)) {
16
+ if (!checkIsInterface(genClass.ecoreClass)) {
17
17
  const implName = genClass.implClassName || (getName(genClass.ecoreClass) + 'Impl');
18
18
  -%>
19
19
  export { <%- implName %> } from './<%- implName %>';
@@ -1,6 +1,74 @@
1
1
  <%- header %>
2
2
 
3
+ <%
4
+ const ECORE_NS_URI = 'http://www.eclipse.org/emf/2002/Ecore';
5
+
6
+ // Helper: check if a classifier belongs to the current package
7
+ function isLocalClassifier(classifier) {
8
+ const pkg = getEPackage(classifier);
9
+ if (pkg) {
10
+ const pkgNsURI = pkg.getNsURI?.() ?? null;
11
+ return pkgNsURI === nsURI;
12
+ }
13
+ // For proxies, check the proxy URI
14
+ if (typeof classifier.eIsProxy === 'function' && classifier.eIsProxy() && typeof classifier.eProxyURI === 'function') {
15
+ const proxyURI = classifier.eProxyURI()?.toString() ?? '';
16
+ return !proxyURI.startsWith('http://') && !proxyURI.startsWith('https://');
17
+ }
18
+ return true; // assume local if unknown
19
+ }
20
+
21
+ // Helper: check if a classifier is from the Ecore metamodel
22
+ function isEcoreClassifier(classifier) {
23
+ const pkg = getEPackage(classifier);
24
+ if (pkg) {
25
+ const pkgNsURI = pkg.getNsURI?.() ?? null;
26
+ return pkgNsURI === ECORE_NS_URI;
27
+ }
28
+ // For proxies, check the proxy URI
29
+ if (typeof classifier.eIsProxy === 'function' && classifier.eIsProxy() && typeof classifier.eProxyURI === 'function') {
30
+ const proxyURI = classifier.eProxyURI()?.toString() ?? '';
31
+ return proxyURI.startsWith(ECORE_NS_URI);
32
+ }
33
+ return false;
34
+ }
35
+
36
+ // Helper: generate the right expression for a type reference
37
+ function typeRefExpr(classifier) {
38
+ const typeName = getName(classifier);
39
+ if (isLocalClassifier(classifier)) {
40
+ const typeUpperName = typeName.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');
41
+ return packageName + 'Package.Literals.' + typeUpperName;
42
+ }
43
+ if (isEcoreClassifier(classifier)) {
44
+ return "getEcorePackage().getEClassifier('" + typeName + "')!";
45
+ }
46
+ // Fallback for other external packages
47
+ return "getEcorePackage().getEClassifier('" + typeName + "')!";
48
+ }
49
+
50
+ // Pre-scan: check if any cross-package Ecore references exist
51
+ let needsEcoreImport = false;
52
+ for (const genClass of genClasses) {
53
+ const eClass = genClass.ecoreClass;
54
+ for (const superType of getESuperTypes(eClass)) {
55
+ if (!isLocalClassifier(superType)) { needsEcoreImport = true; break; }
56
+ }
57
+ if (needsEcoreImport) break;
58
+ for (const genFeature of genClass.genFeatures) {
59
+ const eType = getEType(genFeature.ecoreFeature);
60
+ if (eType && typeMapper.isReference(genFeature.ecoreFeature) && !isLocalClassifier(eType)) {
61
+ needsEcoreImport = true; break;
62
+ }
63
+ }
64
+ if (needsEcoreImport) break;
65
+ }
66
+ -%>
67
+ <% if (needsEcoreImport) { -%>
68
+ import { BasicEPackage, BasicEClass, BasicEAttribute, BasicEReference, getEcorePackage } from '@emfts/core';
69
+ <% } else { -%>
3
70
  import { BasicEPackage, BasicEClass, BasicEAttribute, BasicEReference } from '@emfts/core';
71
+ <% } -%>
4
72
  import type { EClass, EAttribute, EReference, EEnum } from '@emfts/core';
5
73
 
6
74
  /**
@@ -96,9 +164,8 @@ export class <%- packageName %>Package extends BasicEPackage {
96
164
  for (const superType of superTypes) {
97
165
  const superTypeName = getName(superType);
98
166
  if (superTypeName) {
99
- const superTypeUpperName = superTypeName.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');
100
167
  -%>
101
- (<%- packageName %>Package.Literals.<%- upperName %> as BasicEClass).getESuperTypes().push(<%- packageName %>Package.Literals.<%- superTypeUpperName %>);
168
+ (<%- packageName %>Package.Literals.<%- upperName %> as BasicEClass).getESuperTypes().push(<%- typeRefExpr(superType) %>);
102
169
  <% }
103
170
  }
104
171
  } -%>
@@ -118,10 +185,8 @@ export class <%- packageName %>Package extends BasicEPackage {
118
185
  if (isRef) {
119
186
  const eType = getEType(feature);
120
187
  if (eType) {
121
- const typeName = getName(eType);
122
- const typeUpperName = typeName.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');
123
188
  -%>
124
- (<%- packageName %>Package.Literals.<%- upperName %>__<%- featureUpperName %> as BasicEReference).setEType(<%- packageName %>Package.Literals.<%- typeUpperName %>);
189
+ (<%- packageName %>Package.Literals.<%- upperName %>__<%- featureUpperName %> as BasicEReference).setEType(<%- typeRefExpr(eType) %>);
125
190
  <% }
126
191
  }
127
192
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emfts/codegen",
3
- "version": "0.0.1-next.4",
3
+ "version": "0.0.1-next.6",
4
4
  "description": "TypeScript code generator for Ecore models using emfts",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",