@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 @@
1
+ {"version":3,"file":"GenFeature.js","sourceRoot":"","sources":["../../src/genmodel/GenFeature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAkCnD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAA2B;IACjE,OAAO;QACL,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,KAAK;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { GenPackage } from './GenPackage.js';
2
+ import { GenerationMode } from './GenerationMode.js';
3
+ /**
4
+ * Root generation model configuration
5
+ */
6
+ export interface GenModel {
7
+ /** Output directory for generated model code */
8
+ modelDirectory: string;
9
+ /** Output directory for edit code (optional) */
10
+ editDirectory?: string;
11
+ /** Output directory for editor code (optional) */
12
+ editorDirectory?: string;
13
+ /** Plugin ID for generated code */
14
+ modelPluginID?: string;
15
+ /** Generation mode (PLAIN, DECORATOR, or EMF) */
16
+ generationMode: GenerationMode;
17
+ /** Generate interface files */
18
+ generateInterfaces: boolean;
19
+ /** Generate implementation classes */
20
+ generateClasses: boolean;
21
+ /** Generate factory classes */
22
+ generateFactory: boolean;
23
+ /** Generate package classes (EMF mode) */
24
+ generatePackage: boolean;
25
+ /** Generate resource implementation */
26
+ generateResource: boolean;
27
+ /** Use bounded wildcards in generic types */
28
+ boundedGenericTypeNames: boolean;
29
+ /** File header comment */
30
+ copyrightText?: string;
31
+ /** Packages to generate */
32
+ genPackages: GenPackage[];
33
+ /** Referenced packages (for cross-references) */
34
+ usedGenPackages: GenPackage[];
35
+ /** Custom import manager class */
36
+ importManager?: string;
37
+ /** Feature delegation mode */
38
+ featureDelegation: 'None' | 'Virtual' | 'Reflective';
39
+ /** Root extends class (EMF mode) */
40
+ rootExtendsClass: string;
41
+ /** Root extends interface (EMF mode) */
42
+ rootExtendsInterface: string;
43
+ /** Root implements interface */
44
+ rootImplementsInterface?: string;
45
+ /** Suppress EMF types in generated code */
46
+ suppressEMFTypes: boolean;
47
+ /** Suppress generation of genmodel file */
48
+ suppressGenModelAnnotations: boolean;
49
+ }
50
+ /**
51
+ * Create default GenModel
52
+ */
53
+ export declare function createDefaultGenModel(): GenModel;
54
+ //# sourceMappingURL=GenModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenModel.d.ts","sourceRoot":"","sources":["../../src/genmodel/GenModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IAEvB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iDAAiD;IACjD,cAAc,EAAE,cAAc,CAAC;IAE/B,+BAA+B;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAE5B,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAC;IAEzB,+BAA+B;IAC/B,eAAe,EAAE,OAAO,CAAC;IAEzB,0CAA0C;IAC1C,eAAe,EAAE,OAAO,CAAC;IAEzB,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAE1B,6CAA6C;IAC7C,uBAAuB,EAAE,OAAO,CAAC;IAEjC,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2BAA2B;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,iDAAiD;IACjD,eAAe,EAAE,UAAU,EAAE,CAAC;IAE9B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;IAErD,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IAEzB,wCAAwC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,2CAA2C;IAC3C,gBAAgB,EAAE,OAAO,CAAC;IAE1B,2CAA2C;IAC3C,2BAA2B,EAAE,OAAO,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAkBhD"}
@@ -0,0 +1,24 @@
1
+ import { GenerationMode } from './GenerationMode.js';
2
+ /**
3
+ * Create default GenModel
4
+ */
5
+ export function createDefaultGenModel() {
6
+ return {
7
+ modelDirectory: './generated',
8
+ generationMode: GenerationMode.DECORATOR,
9
+ generateInterfaces: true,
10
+ generateClasses: true,
11
+ generateFactory: true,
12
+ generatePackage: true,
13
+ generateResource: false,
14
+ boundedGenericTypeNames: false,
15
+ genPackages: [],
16
+ usedGenPackages: [],
17
+ featureDelegation: 'None',
18
+ rootExtendsClass: 'BasicEObject',
19
+ rootExtendsInterface: 'EObject',
20
+ suppressEMFTypes: false,
21
+ suppressGenModelAnnotations: false
22
+ };
23
+ }
24
+ //# sourceMappingURL=GenModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenModel.js","sourceRoot":"","sources":["../../src/genmodel/GenModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsErD;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,cAAc,EAAE,aAAa;QAC7B,cAAc,EAAE,cAAc,CAAC,SAAS;QACxC,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,KAAK;QACvB,uBAAuB,EAAE,KAAK;QAC9B,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,MAAM;QACzB,gBAAgB,EAAE,cAAc;QAChC,oBAAoB,EAAE,SAAS;QAC/B,gBAAgB,EAAE,KAAK;QACvB,2BAA2B,EAAE,KAAK;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { EOperation } from '@emfts/core';
2
+ /**
3
+ * Generation configuration for an EOperation
4
+ */
5
+ export interface GenOperation {
6
+ /** Reference to the Ecore operation */
7
+ ecoreOperation: EOperation;
8
+ /** Generate method body (false = abstract/stub) */
9
+ generateBody: boolean;
10
+ /** Custom method body implementation */
11
+ body?: string;
12
+ /** Documentation override */
13
+ documentation?: string;
14
+ }
15
+ /**
16
+ * Create default GenOperation from EOperation
17
+ */
18
+ export declare function createDefaultGenOperation(operation: EOperation): GenOperation;
19
+ //# sourceMappingURL=GenOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenOperation.d.ts","sourceRoot":"","sources":["../../src/genmodel/GenOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,cAAc,EAAE,UAAU,CAAC;IAE3B,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IAEtB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,GAAG,YAAY,CAK7E"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Create default GenOperation from EOperation
3
+ */
4
+ export function createDefaultGenOperation(operation) {
5
+ return {
6
+ ecoreOperation: operation,
7
+ generateBody: false
8
+ };
9
+ }
10
+ //# sourceMappingURL=GenOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenOperation.js","sourceRoot":"","sources":["../../src/genmodel/GenOperation.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAqB;IAC7D,OAAO;QACL,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { EPackage } from '@emfts/core';
2
+ import type { GenClass } from './GenClass.js';
3
+ import type { GenEnum } from './GenEnum.js';
4
+ import type { GenDataType } from './GenDataType.js';
5
+ /**
6
+ * Generation configuration for an EPackage
7
+ */
8
+ export interface GenPackage {
9
+ /** Reference to the Ecore package */
10
+ ecorePackage: EPackage;
11
+ /** Prefix for generated class names (e.g., "Person" -> "PersonImpl") */
12
+ prefix: string;
13
+ /** Base package path for imports (e.g., "com.example.model") */
14
+ basePackage: string;
15
+ /** Suffix for interface package */
16
+ interfacePackageSuffix: string;
17
+ /** Suffix for implementation package */
18
+ classPackageSuffix: string;
19
+ /** Generate adapter factory */
20
+ adapterFactory: boolean;
21
+ /** Generate resource factory */
22
+ generateResourceFactory: boolean;
23
+ /** File extension for resources */
24
+ fileExtension: string;
25
+ /** Content type identifier */
26
+ contentTypeIdentifier?: string;
27
+ /** Classes to generate */
28
+ genClasses: GenClass[];
29
+ /** Enums to generate */
30
+ genEnums: GenEnum[];
31
+ /** Data types to generate */
32
+ genDataTypes: GenDataType[];
33
+ /** Nested packages */
34
+ nestedGenPackages: GenPackage[];
35
+ /** Documentation override */
36
+ documentation?: string;
37
+ }
38
+ /**
39
+ * Create default GenPackage from EPackage
40
+ */
41
+ export declare function createDefaultGenPackage(ePackage: EPackage): GenPackage;
42
+ //# sourceMappingURL=GenPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenPackage.d.ts","sourceRoot":"","sources":["../../src/genmodel/GenPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,YAAY,EAAE,QAAQ,CAAC;IAEvB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IAEf,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,+BAA+B;IAC/B,cAAc,EAAE,OAAO,CAAC;IAExB,gCAAgC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IAEjC,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IAEtB,8BAA8B;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,0BAA0B;IAC1B,UAAU,EAAE,QAAQ,EAAE,CAAC;IAEvB,wBAAwB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,6BAA6B;IAC7B,YAAY,EAAE,WAAW,EAAE,CAAC;IAE5B,sBAAsB;IACtB,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAEhC,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAgBtE"}
@@ -0,0 +1,25 @@
1
+ import { getName } from '../util/EObjectHelper.js';
2
+ /**
3
+ * Create default GenPackage from EPackage
4
+ */
5
+ export function createDefaultGenPackage(ePackage) {
6
+ const name = getName(ePackage) ?? 'model';
7
+ return {
8
+ ecorePackage: ePackage,
9
+ prefix: capitalize(name),
10
+ basePackage: '',
11
+ interfacePackageSuffix: '',
12
+ classPackageSuffix: 'impl',
13
+ adapterFactory: false,
14
+ generateResourceFactory: false,
15
+ fileExtension: name.toLowerCase(),
16
+ genClasses: [],
17
+ genEnums: [],
18
+ genDataTypes: [],
19
+ nestedGenPackages: []
20
+ };
21
+ }
22
+ function capitalize(str) {
23
+ return str.charAt(0).toUpperCase() + str.slice(1);
24
+ }
25
+ //# sourceMappingURL=GenPackage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenPackage.js","sourceRoot":"","sources":["../../src/genmodel/GenPackage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAiDnD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;IAC1C,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,EAAE;QAC1B,kBAAkB,EAAE,MAAM;QAC1B,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,KAAK;QAC9B,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE;QACjC,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Generation mode for code output
3
+ */
4
+ export declare enum GenerationMode {
5
+ /** Pure TypeScript POJOs without dependencies */
6
+ PLAIN = "plain",
7
+ /** Classes with @Attribute, @Reference decorators and reflect-metadata */
8
+ DECORATOR = "decorator",
9
+ /** EMF-conformant classes extending BasicEObject with eLiterals */
10
+ EMF = "emf"
11
+ }
12
+ /**
13
+ * Property access mode for generated features
14
+ */
15
+ export declare enum PropertyMode {
16
+ /** No property generated */
17
+ NONE = "none",
18
+ /** Read-only property (getter only) */
19
+ READONLY = "readonly",
20
+ /** Full read/write property */
21
+ EDITABLE = "editable"
22
+ }
23
+ //# sourceMappingURL=GenerationMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerationMode.d.ts","sourceRoot":"","sources":["../../src/genmodel/GenerationMode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,cAAc;IACxB,iDAAiD;IACjD,KAAK,UAAU;IAEf,0EAA0E;IAC1E,SAAS,cAAc;IAEvB,mEAAmE;IACnE,GAAG,QAAQ;CACZ;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,4BAA4B;IAC5B,IAAI,SAAS;IAEb,uCAAuC;IACvC,QAAQ,aAAa;IAErB,+BAA+B;IAC/B,QAAQ,aAAa;CACtB"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Generation mode for code output
3
+ */
4
+ export var GenerationMode;
5
+ (function (GenerationMode) {
6
+ /** Pure TypeScript POJOs without dependencies */
7
+ GenerationMode["PLAIN"] = "plain";
8
+ /** Classes with @Attribute, @Reference decorators and reflect-metadata */
9
+ GenerationMode["DECORATOR"] = "decorator";
10
+ /** EMF-conformant classes extending BasicEObject with eLiterals */
11
+ GenerationMode["EMF"] = "emf";
12
+ })(GenerationMode || (GenerationMode = {}));
13
+ /**
14
+ * Property access mode for generated features
15
+ */
16
+ export var PropertyMode;
17
+ (function (PropertyMode) {
18
+ /** No property generated */
19
+ PropertyMode["NONE"] = "none";
20
+ /** Read-only property (getter only) */
21
+ PropertyMode["READONLY"] = "readonly";
22
+ /** Full read/write property */
23
+ PropertyMode["EDITABLE"] = "editable";
24
+ })(PropertyMode || (PropertyMode = {}));
25
+ //# sourceMappingURL=GenerationMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerationMode.js","sourceRoot":"","sources":["../../src/genmodel/GenerationMode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,iDAAiD;IACjD,iCAAe,CAAA;IAEf,0EAA0E;IAC1E,yCAAuB,CAAA;IAEvB,mEAAmE;IACnE,6BAAW,CAAA;AACb,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,YASX;AATD,WAAY,YAAY;IACtB,4BAA4B;IAC5B,6BAAa,CAAA;IAEb,uCAAuC;IACvC,qCAAqB,CAAA;IAErB,+BAA+B;IAC/B,qCAAqB,CAAA;AACvB,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB"}
@@ -0,0 +1,9 @@
1
+ export * from './GenerationMode.js';
2
+ export * from './GenFeature.js';
3
+ export * from './GenOperation.js';
4
+ export * from './GenEnum.js';
5
+ export * from './GenDataType.js';
6
+ export * from './GenClass.js';
7
+ export * from './GenPackage.js';
8
+ export * from './GenModel.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/genmodel/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ // Internal GenModel types (used by CodeGenerator)
2
+ export * from './GenerationMode.js';
3
+ export * from './GenFeature.js';
4
+ export * from './GenOperation.js';
5
+ export * from './GenEnum.js';
6
+ export * from './GenDataType.js';
7
+ export * from './GenClass.js';
8
+ export * from './GenPackage.js';
9
+ export * from './GenModel.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/genmodel/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,66 @@
1
+ export * from './genconfig/index.js';
2
+ export * from './generator/index.js';
3
+ export * from './loader/index.js';
4
+ export * from './util/index.js';
5
+ export { CodeGenerator } from './generator/CodeGenerator.js';
6
+ export { RestClientGenerator } from './generator/RestClientGenerator.js';
7
+ export { GenConfigLoader } from './genconfig/GenConfigLoader.js';
8
+ export { GenConfigConverter } from './genconfig/GenConfigConverter.js';
9
+ export { EcoreLoader } from './loader/EcoreLoader.js';
10
+ export { TypeMapper } from './generator/TypeMapper.js';
11
+ export { ImportResolver } from './generator/ImportResolver.js';
12
+ export type { GenConfig, GenerationSettings, PackageSettings, ClassDefaults, FeatureDefaults, ClassOverride, FeatureOverride, GenConfigMode, GenConfigPropertyMode } from './genconfig/GenConfig.js';
13
+ export type { GeneratorOptions } from './generator/GeneratorOptions.js';
14
+ export type { GeneratedFile } from './generator/GeneratedFile.js';
15
+ export type { GenerationResult } from './generator/CodeGenerator.js';
16
+ export { GenerationMode, PropertyMode } from './genmodel/GenerationMode.js';
17
+ import { type GenerationResult } from './generator/CodeGenerator.js';
18
+ /**
19
+ * Options for the generate function
20
+ */
21
+ export interface GenerateOptions {
22
+ /** Path to the .ecore model file */
23
+ ecorePath: string;
24
+ /** Path to the .genconfig.xmi file */
25
+ configPath: string;
26
+ /** Output directory override (optional, uses config value if not specified) */
27
+ outputDir?: string;
28
+ /** Whether to write files to disk (default: true) */
29
+ writeFiles?: boolean;
30
+ }
31
+ /**
32
+ * Generate TypeScript code from Ecore models
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * import { generate } from 'emfts-codegen';
37
+ *
38
+ * const result = await generate({
39
+ * ecorePath: 'model/library.ecore',
40
+ * configPath: 'model/library.genconfig.xmi',
41
+ * outputDir: 'src/generated' // optional override
42
+ * });
43
+ *
44
+ * console.log(`Generated ${result.files.length} files`);
45
+ * ```
46
+ */
47
+ export declare function generate(options: GenerateOptions): Promise<GenerationResult>;
48
+ /**
49
+ * Generate code without writing to disk
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { generateInMemory } from 'emfts-codegen';
54
+ *
55
+ * const result = await generateInMemory({
56
+ * ecorePath: 'model/library.ecore',
57
+ * configPath: 'model/library.genconfig.xmi'
58
+ * });
59
+ *
60
+ * for (const file of result.files) {
61
+ * console.log(`${file.path}:\n${file.content}`);
62
+ * }
63
+ * ```
64
+ */
65
+ export declare function generateInMemory(options: Omit<GenerateOptions, 'outputDir' | 'writeFiles'>): Promise<GenerationResult>;
66
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACrM,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAOpF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6BlF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmB5H"}
package/dist/index.js ADDED
@@ -0,0 +1,110 @@
1
+ // GenConfig (public API)
2
+ export * from './genconfig/index.js';
3
+ // Generator
4
+ export * from './generator/index.js';
5
+ // Loader
6
+ export * from './loader/index.js';
7
+ // Utilities
8
+ export * from './util/index.js';
9
+ // Re-export main classes
10
+ export { CodeGenerator } from './generator/CodeGenerator.js';
11
+ export { RestClientGenerator } from './generator/RestClientGenerator.js';
12
+ export { GenConfigLoader } from './genconfig/GenConfigLoader.js';
13
+ export { GenConfigConverter } from './genconfig/GenConfigConverter.js';
14
+ export { EcoreLoader } from './loader/EcoreLoader.js';
15
+ export { TypeMapper } from './generator/TypeMapper.js';
16
+ export { ImportResolver } from './generator/ImportResolver.js';
17
+ // Internal types (for advanced usage)
18
+ export { GenerationMode, PropertyMode } from './genmodel/GenerationMode.js';
19
+ import { CodeGenerator } from './generator/CodeGenerator.js';
20
+ import { GenConfigLoader } from './genconfig/GenConfigLoader.js';
21
+ import { GenConfigConverter } from './genconfig/GenConfigConverter.js';
22
+ import { EcoreLoader } from './loader/EcoreLoader.js';
23
+ import * as fs from 'fs';
24
+ import * as path from 'path';
25
+ /**
26
+ * Generate TypeScript code from Ecore models
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { generate } from 'emfts-codegen';
31
+ *
32
+ * const result = await generate({
33
+ * ecorePath: 'model/library.ecore',
34
+ * configPath: 'model/library.genconfig.xmi',
35
+ * outputDir: 'src/generated' // optional override
36
+ * });
37
+ *
38
+ * console.log(`Generated ${result.files.length} files`);
39
+ * ```
40
+ */
41
+ export async function generate(options) {
42
+ const { ecorePath, configPath, writeFiles = true } = options;
43
+ // Load ecore model
44
+ const ecoreLoader = new EcoreLoader();
45
+ const ePackage = await ecoreLoader.load(ecorePath);
46
+ // Load genconfig
47
+ const configLoader = new GenConfigLoader();
48
+ configLoader.registerPackage(ePackage);
49
+ const genConfig = await configLoader.load(configPath);
50
+ // Convert to internal GenModel
51
+ const converter = new GenConfigConverter();
52
+ const genModel = converter.convert(genConfig);
53
+ // Use outputDir from options or from config
54
+ const outputDir = options.outputDir || genConfig.generation.outputDir;
55
+ // Generate code
56
+ const generator = new CodeGenerator(genModel);
57
+ const result = await generator.generate();
58
+ // Write files if requested
59
+ if (writeFiles) {
60
+ await writeGeneratedFiles(result.files, outputDir);
61
+ }
62
+ return result;
63
+ }
64
+ /**
65
+ * Generate code without writing to disk
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * import { generateInMemory } from 'emfts-codegen';
70
+ *
71
+ * const result = await generateInMemory({
72
+ * ecorePath: 'model/library.ecore',
73
+ * configPath: 'model/library.genconfig.xmi'
74
+ * });
75
+ *
76
+ * for (const file of result.files) {
77
+ * console.log(`${file.path}:\n${file.content}`);
78
+ * }
79
+ * ```
80
+ */
81
+ export async function generateInMemory(options) {
82
+ const { ecorePath, configPath } = options;
83
+ // Load ecore model
84
+ const ecoreLoader = new EcoreLoader();
85
+ const ePackage = await ecoreLoader.load(ecorePath);
86
+ // Load genconfig
87
+ const configLoader = new GenConfigLoader();
88
+ configLoader.registerPackage(ePackage);
89
+ const genConfig = await configLoader.load(configPath);
90
+ // Convert to internal GenModel
91
+ const converter = new GenConfigConverter();
92
+ const genModel = converter.convert(genConfig);
93
+ // Generate code
94
+ const generator = new CodeGenerator(genModel);
95
+ return generator.generate();
96
+ }
97
+ /**
98
+ * Helper to write generated files to disk
99
+ */
100
+ async function writeGeneratedFiles(files, outputDir) {
101
+ for (const file of files) {
102
+ const filePath = path.join(outputDir, file.path);
103
+ const dirPath = path.dirname(filePath);
104
+ if (!fs.existsSync(dirPath)) {
105
+ fs.mkdirSync(dirPath, { recursive: true });
106
+ }
107
+ fs.writeFileSync(filePath, file.content, 'utf-8');
108
+ }
109
+ }
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { EPackage } from '@emfts/core';
2
+ /**
3
+ * Loads Ecore models using emfts
4
+ */
5
+ export declare class EcoreLoader {
6
+ private resourceSet;
7
+ private loadedPackages;
8
+ /**
9
+ * Initialize with a resource set
10
+ */
11
+ init(): Promise<void>;
12
+ /**
13
+ * Load an Ecore model from file
14
+ */
15
+ load(ecorePath: string): Promise<EPackage>;
16
+ /**
17
+ * Load multiple Ecore models
18
+ */
19
+ loadAll(ecorePaths: string[]): Promise<Map<string, EPackage>>;
20
+ /**
21
+ * Get a loaded package by nsURI
22
+ */
23
+ getPackage(nsURI: string): EPackage | undefined;
24
+ /**
25
+ * Get all loaded packages
26
+ */
27
+ getAllPackages(): Map<string, EPackage>;
28
+ /**
29
+ * Check if an object is an EPackage
30
+ */
31
+ private isEPackage;
32
+ }
33
+ //# sourceMappingURL=EcoreLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EcoreLoader.d.ts","sourceRoot":"","sources":["../../src/loader/EcoreLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAyB,MAAM,aAAa,CAAC;AAEnE;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAAoC;IAE1D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiDhD;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAOnE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI/C;;OAEG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIvC;;OAEG;IACH,OAAO,CAAC,UAAU;CAMnB"}
@@ -0,0 +1,91 @@
1
+ import { readFile } from 'fs/promises';
2
+ /**
3
+ * Loads Ecore models using emfts
4
+ */
5
+ export class EcoreLoader {
6
+ resourceSet = null;
7
+ loadedPackages = new Map();
8
+ /**
9
+ * Initialize with a resource set
10
+ */
11
+ async init() {
12
+ const { BasicResourceSet, getEcorePackage, ECORE_NS_URI } = await import('@emfts/core');
13
+ // Initialize EcorePackage
14
+ getEcorePackage();
15
+ // Create resource set
16
+ this.resourceSet = new BasicResourceSet();
17
+ // Register EcorePackage
18
+ this.resourceSet.getPackageRegistry().set(ECORE_NS_URI, getEcorePackage());
19
+ }
20
+ /**
21
+ * Load an Ecore model from file
22
+ */
23
+ async load(ecorePath) {
24
+ if (!this.resourceSet) {
25
+ await this.init();
26
+ }
27
+ const { XMIResource, URI } = await import('@emfts/core');
28
+ // Read file content
29
+ const content = await readFile(ecorePath, 'utf-8');
30
+ // Create URI and resource
31
+ const uri = URI.createURI(ecorePath);
32
+ const resource = new XMIResource(uri);
33
+ // Set resource set before loading
34
+ resource.setResourceSet(this.resourceSet);
35
+ // Load from string
36
+ resource.loadFromString(content);
37
+ // Check for errors
38
+ const errors = resource.getErrors();
39
+ if (errors.length > 0) {
40
+ console.error('Errors loading Ecore:', errors.map(e => e.message).join(', '));
41
+ }
42
+ // Get root package
43
+ const contents = resource.getContents();
44
+ if (contents.length === 0) {
45
+ throw new Error(`No content found in ${ecorePath}`);
46
+ }
47
+ const root = contents[0];
48
+ if (!this.isEPackage(root)) {
49
+ throw new Error(`Root element is not an EPackage in ${ecorePath}`);
50
+ }
51
+ const ePackage = root;
52
+ const nsURI = ePackage.getNsURI();
53
+ if (nsURI) {
54
+ this.loadedPackages.set(nsURI, ePackage);
55
+ // Register in resource set's registry
56
+ this.resourceSet.getPackageRegistry().set(nsURI, ePackage);
57
+ }
58
+ return ePackage;
59
+ }
60
+ /**
61
+ * Load multiple Ecore models
62
+ */
63
+ async loadAll(ecorePaths) {
64
+ for (const path of ecorePaths) {
65
+ await this.load(path);
66
+ }
67
+ return new Map(this.loadedPackages);
68
+ }
69
+ /**
70
+ * Get a loaded package by nsURI
71
+ */
72
+ getPackage(nsURI) {
73
+ return this.loadedPackages.get(nsURI);
74
+ }
75
+ /**
76
+ * Get all loaded packages
77
+ */
78
+ getAllPackages() {
79
+ return new Map(this.loadedPackages);
80
+ }
81
+ /**
82
+ * Check if an object is an EPackage
83
+ */
84
+ isEPackage(obj) {
85
+ return obj !== null &&
86
+ typeof obj === 'object' &&
87
+ 'getEClassifiers' in obj &&
88
+ 'getNsURI' in obj;
89
+ }
90
+ }
91
+ //# sourceMappingURL=EcoreLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EcoreLoader.js","sourceRoot":"","sources":["../../src/loader/EcoreLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './EcoreLoader.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './EcoreLoader.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}