@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,61 @@
1
+ <%- header %>
2
+
3
+ <%# Generate imports for referenced types -%>
4
+ <%
5
+ const imports = importResolver.resolveImportsForClass(eClass, genPackage, 'plain');
6
+ for (const imp of imports) {
7
+ if (imp.typeName !== interfaceName) {
8
+ -%>
9
+ import type { <%- imp.typeName %> } from '<%- imp.importPath %>';
10
+ <%
11
+ }
12
+ }
13
+ -%>
14
+
15
+ /**
16
+ * <%- genClass.documentation || eClass.getName() %>
17
+ */
18
+ export interface <%- interfaceName %><%
19
+ if (typeParameters && typeParameters.length > 0) {
20
+ const params = [];
21
+ for (const tp of typeParameters) {
22
+ params.push(tp.getName());
23
+ }
24
+ %><<%- params.join(', ') %>><%
25
+ }
26
+ if (superTypes && superTypes.length > 0) {
27
+ const superNames = [];
28
+ for (const st of superTypes) {
29
+ if (st.getName) {
30
+ superNames.push(st.getName());
31
+ }
32
+ }
33
+ if (superNames.length > 0) {
34
+ %> extends <%- superNames.join(', ') %><%
35
+ }
36
+ }
37
+ %> {
38
+ <% for (const genFeature of features) {
39
+ const feature = genFeature.ecoreFeature;
40
+ const featureName = feature.getName();
41
+ const featureType = typeMapper.mapFeature(feature);
42
+ const isMany = feature.isMany();
43
+ const lowerBound = feature.getLowerBound();
44
+ -%>
45
+ <%- featureName %><% if (lowerBound === 0 && !isMany) { %>?<% } %>: <%- featureType %>;
46
+ <% } -%>
47
+
48
+ <% for (const genOp of operations) {
49
+ const op = genOp.ecoreOperation;
50
+ const opName = op.getName();
51
+ const returnType = op.getEType() ? typeMapper.mapClassifier(op.getEType()) : 'void';
52
+ const params = [];
53
+ for (const param of op.getEParameters()) {
54
+ const paramName = param.getName();
55
+ const paramType = typeMapper.mapClassifier(param.getEType());
56
+ params.push(`${paramName}: ${paramType}`);
57
+ }
58
+ -%>
59
+ <%- opName %>(<%- params.join(', ') %>): <%- returnType %>;
60
+ <% } -%>
61
+ }
@@ -0,0 +1,6 @@
1
+ <%- header %>
2
+
3
+ // Re-export all types from this package
4
+ <% for (const exp of exports) { -%>
5
+ export * from './<%- exp %>';
6
+ <% } -%>
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Helper functions for accessing EObject properties
3
+ * Works with both static and dynamic EObjects from emfts
4
+ */
5
+ /**
6
+ * Get name from ENamedElement (works with both static and dynamic EObjects)
7
+ */
8
+ export declare function getName(obj: any): string | null;
9
+ /**
10
+ * Get any feature value from an EObject
11
+ */
12
+ export declare function getFeatureValue(obj: any, featureName: string): any;
13
+ /**
14
+ * Get literal from EEnumLiteral
15
+ */
16
+ export declare function getLiteral(obj: any): string | null;
17
+ /**
18
+ * Get value from EEnumLiteral
19
+ */
20
+ export declare function getValue(obj: any): number;
21
+ /**
22
+ * Check if a feature is many (multiplicity > 1)
23
+ */
24
+ export declare function isMany(feature: any): boolean;
25
+ /**
26
+ * Check if an EClass is abstract
27
+ */
28
+ export declare function isAbstract(eClass: any): boolean;
29
+ /**
30
+ * Check if an EClass is an interface
31
+ */
32
+ export declare function isInterface(eClass: any): boolean;
33
+ /**
34
+ * Get the type of a structural feature
35
+ */
36
+ export declare function getEType(feature: any): any;
37
+ /**
38
+ * Get super types of an EClass
39
+ */
40
+ export declare function getESuperTypes(eClass: any): any[];
41
+ /**
42
+ * Get structural features of an EClass
43
+ */
44
+ export declare function getEStructuralFeatures(eClass: any): any[];
45
+ /**
46
+ * Get operations of an EClass
47
+ */
48
+ export declare function getEOperations(eClass: any): any[];
49
+ /**
50
+ * Get type parameters of an EClassifier
51
+ */
52
+ export declare function getETypeParameters(classifier: any): any[];
53
+ /**
54
+ * Get parameters of an EOperation
55
+ */
56
+ export declare function getEParameters(operation: any): any[];
57
+ /**
58
+ * Get literals of an EEnum
59
+ */
60
+ export declare function getELiterals(eEnum: any): any[];
61
+ /**
62
+ * Get the package of a classifier
63
+ */
64
+ export declare function getEPackage(classifier: any): any;
65
+ /**
66
+ * Get default value literal of a feature
67
+ */
68
+ export declare function getDefaultValueLiteral(feature: any): string | null;
69
+ /**
70
+ * Get lower bound of a feature
71
+ */
72
+ export declare function getLowerBound(feature: any): number;
73
+ /**
74
+ * Get upper bound of a feature
75
+ */
76
+ export declare function getUpperBound(feature: any): number;
77
+ /**
78
+ * Check if feature is containment
79
+ */
80
+ export declare function isContainment(feature: any): boolean;
81
+ /**
82
+ * Get the opposite reference
83
+ */
84
+ export declare function getEOpposite(feature: any): any;
85
+ /**
86
+ * Get the ExtendedMetaData "name" annotation value for a model element.
87
+ * Returns the XML serialization name if different from the model name, or null.
88
+ */
89
+ export declare function getExtendedMetaDataName(element: any): string | null;
90
+ //# sourceMappingURL=EObjectHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EObjectHelper.d.ts","sourceRoot":"","sources":["../../src/util/EObjectHelper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAgD/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG,CA4BlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAQlD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CASzC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAS5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAqB/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAqBhD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAQ1C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAQjD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAQzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAQjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE,CAQzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,CAQpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,CAQ9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,CAuBhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAQlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CASlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CASlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAQnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAQ9C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAiBnE"}
@@ -0,0 +1,381 @@
1
+ /**
2
+ * Helper functions for accessing EObject properties
3
+ * Works with both static and dynamic EObjects from emfts
4
+ */
5
+ /**
6
+ * Get name from ENamedElement (works with both static and dynamic EObjects)
7
+ */
8
+ export function getName(obj) {
9
+ if (!obj)
10
+ return null;
11
+ // Check if it's an unresolved proxy first
12
+ if (typeof obj.eIsProxy === 'function' && obj.eIsProxy()) {
13
+ // For proxies, extract name from the proxy URI
14
+ if (typeof obj.eProxyURI === 'function') {
15
+ const proxyURI = obj.eProxyURI();
16
+ if (proxyURI) {
17
+ const uriStr = proxyURI.toString();
18
+ // Parse URI like "library.ecore#//Book" to extract "Book"
19
+ const hashIdx = uriStr.indexOf('#//');
20
+ if (hashIdx >= 0) {
21
+ const fragment = uriStr.substring(hashIdx + 3);
22
+ const segments = fragment.split('/');
23
+ return segments[segments.length - 1] || null;
24
+ }
25
+ }
26
+ }
27
+ return null;
28
+ }
29
+ // Try direct method first
30
+ if (typeof obj.getName === 'function') {
31
+ try {
32
+ return obj.getName();
33
+ }
34
+ catch (e) {
35
+ // getName might throw if proxy isn't resolved
36
+ }
37
+ }
38
+ // Try eGet for dynamic objects
39
+ if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
40
+ try {
41
+ const eClass = obj.eClass();
42
+ if (eClass) {
43
+ const nameFeature = eClass.getEStructuralFeature?.('name');
44
+ if (nameFeature) {
45
+ return obj.eGet(nameFeature);
46
+ }
47
+ }
48
+ }
49
+ catch (e) {
50
+ // eGet might throw if proxy isn't resolved
51
+ }
52
+ }
53
+ // Fallback to property access
54
+ return obj.name ?? null;
55
+ }
56
+ /**
57
+ * Get any feature value from an EObject
58
+ */
59
+ export function getFeatureValue(obj, featureName) {
60
+ if (!obj)
61
+ return undefined;
62
+ // Try getter method first (getXxx format)
63
+ const getterName = `get${capitalize(featureName)}`;
64
+ if (typeof obj[getterName] === 'function') {
65
+ return obj[getterName]();
66
+ }
67
+ // Try isXxx for booleans
68
+ const isName = `is${capitalize(featureName)}`;
69
+ if (typeof obj[isName] === 'function') {
70
+ return obj[isName]();
71
+ }
72
+ // Try eGet for dynamic objects
73
+ if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
74
+ const eClass = obj.eClass();
75
+ if (eClass) {
76
+ const feature = eClass.getEStructuralFeature?.(featureName);
77
+ if (feature) {
78
+ return obj.eGet(feature);
79
+ }
80
+ }
81
+ }
82
+ // Fallback to direct property access
83
+ return obj[featureName];
84
+ }
85
+ /**
86
+ * Get literal from EEnumLiteral
87
+ */
88
+ export function getLiteral(obj) {
89
+ if (!obj)
90
+ return null;
91
+ if (typeof obj.getLiteral === 'function') {
92
+ return obj.getLiteral();
93
+ }
94
+ return getFeatureValue(obj, 'literal') ?? getName(obj);
95
+ }
96
+ /**
97
+ * Get value from EEnumLiteral
98
+ */
99
+ export function getValue(obj) {
100
+ if (!obj)
101
+ return 0;
102
+ if (typeof obj.getValue === 'function') {
103
+ return obj.getValue();
104
+ }
105
+ const value = getFeatureValue(obj, 'value');
106
+ return typeof value === 'number' ? value : 0;
107
+ }
108
+ /**
109
+ * Check if a feature is many (multiplicity > 1)
110
+ */
111
+ export function isMany(feature) {
112
+ if (!feature)
113
+ return false;
114
+ if (typeof feature.isMany === 'function') {
115
+ return feature.isMany();
116
+ }
117
+ const upperBound = getFeatureValue(feature, 'upperBound');
118
+ return upperBound === -1 || upperBound > 1;
119
+ }
120
+ /**
121
+ * Check if an EClass is abstract
122
+ */
123
+ export function isAbstract(eClass) {
124
+ if (!eClass)
125
+ return false;
126
+ // Check if it's a proxy - proxies don't have the abstract info
127
+ if (typeof eClass.eIsProxy === 'function' && eClass.eIsProxy()) {
128
+ // For proxies, we can't determine if abstract, return false
129
+ return false;
130
+ }
131
+ // Try direct method first
132
+ if (typeof eClass.isAbstract === 'function') {
133
+ try {
134
+ return eClass.isAbstract();
135
+ }
136
+ catch (e) {
137
+ // Method might throw
138
+ }
139
+ }
140
+ // Try eGet for dynamic objects
141
+ const abstractValue = getFeatureValue(eClass, 'abstract');
142
+ return abstractValue === true || abstractValue === 'true';
143
+ }
144
+ /**
145
+ * Check if an EClass is an interface
146
+ */
147
+ export function isInterface(eClass) {
148
+ if (!eClass)
149
+ return false;
150
+ // Check if it's a proxy - proxies don't have the interface info
151
+ if (typeof eClass.eIsProxy === 'function' && eClass.eIsProxy()) {
152
+ // For proxies, we can't determine if interface, return false
153
+ return false;
154
+ }
155
+ // Try direct method first
156
+ if (typeof eClass.isInterface === 'function') {
157
+ try {
158
+ return eClass.isInterface();
159
+ }
160
+ catch (e) {
161
+ // Method might throw
162
+ }
163
+ }
164
+ // Try eGet for dynamic objects
165
+ const interfaceValue = getFeatureValue(eClass, 'interface');
166
+ return interfaceValue === true || interfaceValue === 'true';
167
+ }
168
+ /**
169
+ * Get the type of a structural feature
170
+ */
171
+ export function getEType(feature) {
172
+ if (!feature)
173
+ return null;
174
+ if (typeof feature.getEType === 'function') {
175
+ return feature.getEType();
176
+ }
177
+ return getFeatureValue(feature, 'eType');
178
+ }
179
+ /**
180
+ * Get super types of an EClass
181
+ */
182
+ export function getESuperTypes(eClass) {
183
+ if (!eClass)
184
+ return [];
185
+ if (typeof eClass.getESuperTypes === 'function') {
186
+ return toArray(eClass.getESuperTypes());
187
+ }
188
+ return toArray(getFeatureValue(eClass, 'eSuperTypes'));
189
+ }
190
+ /**
191
+ * Get structural features of an EClass
192
+ */
193
+ export function getEStructuralFeatures(eClass) {
194
+ if (!eClass)
195
+ return [];
196
+ if (typeof eClass.getEStructuralFeatures === 'function') {
197
+ return toArray(eClass.getEStructuralFeatures());
198
+ }
199
+ return toArray(getFeatureValue(eClass, 'eStructuralFeatures'));
200
+ }
201
+ /**
202
+ * Get operations of an EClass
203
+ */
204
+ export function getEOperations(eClass) {
205
+ if (!eClass)
206
+ return [];
207
+ if (typeof eClass.getEOperations === 'function') {
208
+ return toArray(eClass.getEOperations());
209
+ }
210
+ return toArray(getFeatureValue(eClass, 'eOperations'));
211
+ }
212
+ /**
213
+ * Get type parameters of an EClassifier
214
+ */
215
+ export function getETypeParameters(classifier) {
216
+ if (!classifier)
217
+ return [];
218
+ if (typeof classifier.getETypeParameters === 'function') {
219
+ return toArray(classifier.getETypeParameters());
220
+ }
221
+ return toArray(getFeatureValue(classifier, 'eTypeParameters'));
222
+ }
223
+ /**
224
+ * Get parameters of an EOperation
225
+ */
226
+ export function getEParameters(operation) {
227
+ if (!operation)
228
+ return [];
229
+ if (typeof operation.getEParameters === 'function') {
230
+ return toArray(operation.getEParameters());
231
+ }
232
+ return toArray(getFeatureValue(operation, 'eParameters'));
233
+ }
234
+ /**
235
+ * Get literals of an EEnum
236
+ */
237
+ export function getELiterals(eEnum) {
238
+ if (!eEnum)
239
+ return [];
240
+ if (typeof eEnum.getELiterals === 'function') {
241
+ return toArray(eEnum.getELiterals());
242
+ }
243
+ return toArray(getFeatureValue(eEnum, 'eLiterals'));
244
+ }
245
+ /**
246
+ * Get the package of a classifier
247
+ */
248
+ export function getEPackage(classifier) {
249
+ if (!classifier)
250
+ return null;
251
+ // Try direct method first
252
+ if (typeof classifier.getEPackage === 'function') {
253
+ return classifier.getEPackage();
254
+ }
255
+ // Try eGet for dynamic objects
256
+ const pkg = getFeatureValue(classifier, 'ePackage');
257
+ if (pkg)
258
+ return pkg;
259
+ // Try eContainer - classifiers are contained in their package
260
+ if (typeof classifier.eContainer === 'function') {
261
+ const container = classifier.eContainer();
262
+ // Check if container is an EPackage (has getEClassifiers or getNsURI)
263
+ if (container && (typeof container.getEClassifiers === 'function' ||
264
+ typeof container.getNsURI === 'function')) {
265
+ return container;
266
+ }
267
+ }
268
+ return null;
269
+ }
270
+ /**
271
+ * Get default value literal of a feature
272
+ */
273
+ export function getDefaultValueLiteral(feature) {
274
+ if (!feature)
275
+ return null;
276
+ if (typeof feature.getDefaultValueLiteral === 'function') {
277
+ return feature.getDefaultValueLiteral();
278
+ }
279
+ return getFeatureValue(feature, 'defaultValueLiteral');
280
+ }
281
+ /**
282
+ * Get lower bound of a feature
283
+ */
284
+ export function getLowerBound(feature) {
285
+ if (!feature)
286
+ return 0;
287
+ if (typeof feature.getLowerBound === 'function') {
288
+ return feature.getLowerBound();
289
+ }
290
+ const value = getFeatureValue(feature, 'lowerBound');
291
+ return typeof value === 'number' ? value : 0;
292
+ }
293
+ /**
294
+ * Get upper bound of a feature
295
+ */
296
+ export function getUpperBound(feature) {
297
+ if (!feature)
298
+ return 1;
299
+ if (typeof feature.getUpperBound === 'function') {
300
+ return feature.getUpperBound();
301
+ }
302
+ const value = getFeatureValue(feature, 'upperBound');
303
+ return typeof value === 'number' ? value : 1;
304
+ }
305
+ /**
306
+ * Check if feature is containment
307
+ */
308
+ export function isContainment(feature) {
309
+ if (!feature)
310
+ return false;
311
+ if (typeof feature.isContainment === 'function') {
312
+ return feature.isContainment();
313
+ }
314
+ return getFeatureValue(feature, 'containment') === true;
315
+ }
316
+ /**
317
+ * Get the opposite reference
318
+ */
319
+ export function getEOpposite(feature) {
320
+ if (!feature)
321
+ return null;
322
+ if (typeof feature.getEOpposite === 'function') {
323
+ return feature.getEOpposite();
324
+ }
325
+ return getFeatureValue(feature, 'eOpposite');
326
+ }
327
+ /**
328
+ * Get the ExtendedMetaData "name" annotation value for a model element.
329
+ * Returns the XML serialization name if different from the model name, or null.
330
+ */
331
+ export function getExtendedMetaDataName(element) {
332
+ if (!element)
333
+ return null;
334
+ const annotations = toArray(getFeatureValue(element, 'eAnnotations'));
335
+ for (const ann of annotations) {
336
+ const source = getFeatureValue(ann, 'source');
337
+ if (source === 'http:///org/eclipse/emf/ecore/util/ExtendedMetaData') {
338
+ const details = toArray(getFeatureValue(ann, 'details'));
339
+ for (const detail of details) {
340
+ const key = getFeatureValue(detail, 'key');
341
+ if (key === 'name') {
342
+ return getFeatureValue(detail, 'value');
343
+ }
344
+ }
345
+ }
346
+ }
347
+ return null;
348
+ }
349
+ // Helper functions
350
+ function capitalize(str) {
351
+ if (!str)
352
+ return '';
353
+ return str.charAt(0).toUpperCase() + str.slice(1);
354
+ }
355
+ /**
356
+ * Convert any list-like value (Array, EList, Iterable) to a plain JS array
357
+ */
358
+ function toArray(value) {
359
+ if (!value)
360
+ return [];
361
+ if (Array.isArray(value))
362
+ return value;
363
+ // EList with size()/get()
364
+ if (typeof value.size === 'function' && typeof value.get === 'function') {
365
+ const arr = [];
366
+ for (let i = 0; i < value.size(); i++) {
367
+ arr.push(value.get(i));
368
+ }
369
+ return arr;
370
+ }
371
+ // EList with toArray()
372
+ if (typeof value.toArray === 'function') {
373
+ return value.toArray();
374
+ }
375
+ // Any iterable (but not string)
376
+ if (typeof value !== 'string' && typeof value[Symbol.iterator] === 'function') {
377
+ return Array.from(value);
378
+ }
379
+ return [];
380
+ }
381
+ //# sourceMappingURL=EObjectHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EObjectHelper.js","sourceRoot":"","sources":["../../src/util/EObjectHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * String utility functions for code generation
3
+ */
4
+ /**
5
+ * Capitalize the first letter of a string
6
+ */
7
+ export declare function capitalize(str: string): string;
8
+ /**
9
+ * Uncapitalize the first letter of a string
10
+ */
11
+ export declare function uncapitalize(str: string): string;
12
+ /**
13
+ * Convert camelCase to UPPER_SNAKE_CASE
14
+ */
15
+ export declare function toUpperSnake(str: string): string;
16
+ /**
17
+ * Convert camelCase to lower_snake_case
18
+ */
19
+ export declare function toLowerSnake(str: string): string;
20
+ /**
21
+ * Convert to camelCase
22
+ */
23
+ export declare function toCamelCase(str: string): string;
24
+ /**
25
+ * Convert to PascalCase
26
+ */
27
+ export declare function toPascalCase(str: string): string;
28
+ /**
29
+ * Escape a string for use in generated code
30
+ */
31
+ export declare function escapeString(str: string): string;
32
+ /**
33
+ * Create a safe identifier from a string
34
+ */
35
+ export declare function toSafeIdentifier(str: string): string;
36
+ /**
37
+ * Check if a string is a TypeScript reserved word
38
+ */
39
+ export declare function isReservedWord(str: string): boolean;
40
+ /**
41
+ * Make an identifier safe by prefixing if it's a reserved word
42
+ */
43
+ export declare function makeSafeIdentifier(str: string): string;
44
+ //# sourceMappingURL=StringUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../src/util/StringUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAenD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtD"}