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

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.
@@ -1 +1 @@
1
- {"version":3,"file":"GeneratorContext.d.ts","sourceRoot":"","sources":["../../src/generator/GeneratorContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAM;IAExC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,YAAY,CAAyB;gBAEjC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB;IAOzD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACH,iBAAiB,IAAI,UAAU,GAAG,IAAI;IAItC;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAIpC;;OAEG;IACH,eAAe,IAAI,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;IAiBvB;;OAEG;IACH,SAAS,CAAC,KAAK,GAAE,MAAU,GAAG,MAAM;IAKpC;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"GeneratorContext.d.ts","sourceRoot":"","sources":["../../src/generator/GeneratorContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAM;IAExC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,YAAY,CAAyB;gBAEjC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB;IAQzD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACH,iBAAiB,IAAI,UAAU,GAAG,IAAI;IAItC;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAIpC;;OAEG;IACH,eAAe,IAAI,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;IAiBvB;;OAEG;IACH,SAAS,CAAC,KAAK,GAAE,MAAU,GAAG,MAAM;IAKpC;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
@@ -1,5 +1,6 @@
1
1
  import { TypeMapper } from './TypeMapper.js';
2
2
  import { ImportResolver } from './ImportResolver.js';
3
+ const ECORE_NS_URI = 'http://www.eclipse.org/emf/2002/Ecore';
3
4
  /**
4
5
  * Context shared during code generation
5
6
  */
@@ -16,6 +17,7 @@ export class GeneratorContext {
16
17
  this.options = options;
17
18
  this.typeMapper = new TypeMapper();
18
19
  this.importResolver = new ImportResolver();
20
+ this.importResolver.registerPackage(ECORE_NS_URI, '@emfts/core');
19
21
  }
20
22
  /**
21
23
  * Set the current package being processed
@@ -1 +1 @@
1
- {"version":3,"file":"GeneratorContext.js","sourceRoot":"","sources":["../../src/generator/GeneratorContext.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAarD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAClB,QAAQ,CAAW;IACnB,OAAO,CAAmB;IAC1B,UAAU,CAAa;IACvB,cAAc,CAAiB;IAC/B,WAAW,GAAiB,EAAE,CAAC;IAEhC,cAAc,GAAsB,IAAI,CAAC;IACzC,YAAY,GAAoB,IAAI,CAAC;IAE7C,YAAY,QAAkB,EAAE,OAAyB;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAe;QAC/B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,GAAa;QAC3B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,MAAe;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,MAAe;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,MAAe;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,UAAU,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAChF,CAAC;QAED,OAAO;;;;;IAKP,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;CACF"}
1
+ {"version":3,"file":"GeneratorContext.js","sourceRoot":"","sources":["../../src/generator/GeneratorContext.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,YAAY,GAAG,uCAAuC,CAAC;AAY7D;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAClB,QAAQ,CAAW;IACnB,OAAO,CAAmB;IAC1B,UAAU,CAAa;IACvB,cAAc,CAAiB;IAC/B,WAAW,GAAiB,EAAE,CAAC;IAEhC,cAAc,GAAsB,IAAI,CAAC;IACzC,YAAY,GAAoB,IAAI,CAAC;IAE7C,YAAY,QAAkB,EAAE,OAAyB;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAe;QAC/B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,GAAa;QAC3B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,MAAe;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,MAAe;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,MAAe;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,UAAU,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAChF,CAAC;QAED,OAAO;;;;;IAKP,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;CACF"}
@@ -1,45 +1,42 @@
1
1
  <%- header %>
2
2
 
3
- <% if (!extendsImport) { -%>
4
- import { BasicEObject } from '@emfts/core';
5
- <% } -%>
6
- import type { EClass, EStructuralFeature } from '@emfts/core';
7
- <%# Generate imports for referenced types -%>
8
3
  <%
9
4
  const imports = importResolver.resolveImportsForClass(eClass, genPackage, 'emf');
10
- // Filter out types that are already hardcoded above or not needed for impl
11
- const skipTypes = ['BasicEObject', 'EClass', 'EStructuralFeature', 'EAttribute', 'EReference', 'EEnum'];
12
- // Separate into type-only and value imports
5
+ const hardcodedCoreTypes = ['BasicEObject', 'EClass', 'EStructuralFeature'];
6
+ const coreTypeImports = ['EClass', 'EStructuralFeature'];
13
7
  const typeOnlyImports = [];
14
8
  const valueImports = [];
15
9
  for (const imp of imports) {
16
- if (imp.typeName !== className && imp.typeName !== interfaceName &&
17
- imp.typeName !== extendsClass &&
18
- !skipTypes.some(t => imp.typeName.includes(t)) &&
19
- imp.importPath !== '@emfts/core') {
20
- // Check if this type is used as a runtime value (e.g., enum default values)
21
- const usedAsValue = features.some(gf => {
22
- const dv = typeMapper.getDefaultValue(gf.ecoreFeature);
23
- return dv !== null && typeof dv === 'string' && dv.startsWith(imp.typeName + '.');
24
- });
25
- if (usedAsValue) {
26
- valueImports.push(imp);
27
- } else {
28
- typeOnlyImports.push(imp);
10
+ if (imp.typeName === className || imp.typeName === interfaceName || imp.typeName === extendsClass) continue;
11
+ if (hardcodedCoreTypes.includes(imp.typeName)) continue;
12
+ if (imp.importPath === '@emfts/core') {
13
+ if (!coreTypeImports.includes(imp.typeName)) {
14
+ coreTypeImports.push(imp.typeName);
29
15
  }
16
+ continue;
17
+ }
18
+ // Check if this type is used as a runtime value (e.g., enum default values)
19
+ const usedAsValue = features.some(gf => {
20
+ const dv = typeMapper.getDefaultValue(gf.ecoreFeature);
21
+ return dv !== null && typeof dv === 'string' && dv.startsWith(imp.typeName + '.');
22
+ });
23
+ if (usedAsValue) {
24
+ valueImports.push(imp);
25
+ } else {
26
+ typeOnlyImports.push(imp);
30
27
  }
31
28
  }
32
- for (const imp of typeOnlyImports) {
33
29
  -%>
30
+ <% if (!extendsImport) { -%>
31
+ import { BasicEObject } from '@emfts/core';
32
+ <% } -%>
33
+ import type { <%- coreTypeImports.join(', ') %> } from '@emfts/core';
34
+ <% for (const imp of typeOnlyImports) { -%>
34
35
  import type { <%- imp.typeName %> } from '<%- imp.importPath %>';
35
- <%
36
- }
37
- for (const imp of valueImports) {
38
- -%>
36
+ <% } -%>
37
+ <% for (const imp of valueImports) { -%>
39
38
  import { <%- imp.typeName %> } from '<%- imp.importPath %>';
40
- <%
41
- }
42
- -%>
39
+ <% } -%>
43
40
  <% if (extendsImport) { -%>
44
41
  import { <%- extendsClass %> } from '<%- extendsImport %>';
45
42
  <% } -%>
@@ -1,18 +1,24 @@
1
1
  <%- header %>
2
2
 
3
- import type { EObject } from '@emfts/core';
4
- <%# Generate imports for referenced types -%>
5
3
  <%
6
4
  const imports = importResolver.resolveImportsForClass(eClass, genPackage, 'emf');
7
- // Skip emfts types and self-references
5
+ const coreTypeImports = ['EObject'];
6
+ const otherTypeImports = [];
8
7
  for (const imp of imports) {
9
- if (imp.typeName !== interfaceName && imp.importPath !== '@emfts/core') {
10
- -%>
11
- import type { <%- imp.typeName %> } from '<%- imp.importPath %>';
12
- <%
8
+ if (imp.typeName === interfaceName) continue;
9
+ if (imp.importPath === '@emfts/core') {
10
+ if (!coreTypeImports.includes(imp.typeName)) {
11
+ coreTypeImports.push(imp.typeName);
12
+ }
13
+ } else {
14
+ otherTypeImports.push(imp);
13
15
  }
14
16
  }
15
17
  -%>
18
+ import type { <%- coreTypeImports.join(', ') %> } from '@emfts/core';
19
+ <% for (const imp of otherTypeImports) { -%>
20
+ import type { <%- imp.typeName %> } from '<%- imp.importPath %>';
21
+ <% } -%>
16
22
 
17
23
  /**
18
24
  * <%- genClass.documentation || interfaceName %>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emfts/codegen",
3
- "version": "0.0.1-next.3",
3
+ "version": "0.0.1-next.4",
4
4
  "description": "TypeScript code generator for Ecore models using emfts",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",