@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.
- package/README.md +39 -0
- package/dist/cli/commands/generate-rest-client.d.ts +3 -0
- package/dist/cli/commands/generate-rest-client.d.ts.map +1 -0
- package/dist/cli/commands/generate-rest-client.js +38 -0
- package/dist/cli/commands/generate-rest-client.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +3 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +108 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +57 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +15 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/debug-abstract.d.ts +2 -0
- package/dist/debug-abstract.d.ts.map +1 -0
- package/dist/debug-abstract.js +25 -0
- package/dist/debug-abstract.js.map +1 -0
- package/dist/debug-genmodel.d.ts +2 -0
- package/dist/debug-genmodel.d.ts.map +1 -0
- package/dist/debug-genmodel.js +41 -0
- package/dist/debug-genmodel.js.map +1 -0
- package/dist/genconfig/GenConfig.d.ts +125 -0
- package/dist/genconfig/GenConfig.d.ts.map +1 -0
- package/dist/genconfig/GenConfig.js +46 -0
- package/dist/genconfig/GenConfig.js.map +1 -0
- package/dist/genconfig/GenConfigConverter.d.ts +64 -0
- package/dist/genconfig/GenConfigConverter.d.ts.map +1 -0
- package/dist/genconfig/GenConfigConverter.js +293 -0
- package/dist/genconfig/GenConfigConverter.js.map +1 -0
- package/dist/genconfig/GenConfigLoader.d.ts +83 -0
- package/dist/genconfig/GenConfigLoader.d.ts.map +1 -0
- package/dist/genconfig/GenConfigLoader.js +455 -0
- package/dist/genconfig/GenConfigLoader.js.map +1 -0
- package/dist/genconfig/index.d.ts +4 -0
- package/dist/genconfig/index.d.ts.map +1 -0
- package/dist/genconfig/index.js +4 -0
- package/dist/genconfig/index.js.map +1 -0
- package/dist/generator/CodeGenerator.d.ts +45 -0
- package/dist/generator/CodeGenerator.d.ts.map +1 -0
- package/dist/generator/CodeGenerator.js +142 -0
- package/dist/generator/CodeGenerator.js.map +1 -0
- package/dist/generator/GeneratedFile.d.ts +23 -0
- package/dist/generator/GeneratedFile.d.ts.map +1 -0
- package/dist/generator/GeneratedFile.js +42 -0
- package/dist/generator/GeneratedFile.js.map +1 -0
- package/dist/generator/GeneratorContext.d.ts +73 -0
- package/dist/generator/GeneratorContext.d.ts.map +1 -0
- package/dist/generator/GeneratorContext.js +99 -0
- package/dist/generator/GeneratorContext.js.map +1 -0
- package/dist/generator/GeneratorOptions.d.ts +26 -0
- package/dist/generator/GeneratorOptions.d.ts.map +1 -0
- package/dist/generator/GeneratorOptions.js +16 -0
- package/dist/generator/GeneratorOptions.js.map +1 -0
- package/dist/generator/ImportResolver.d.ts +85 -0
- package/dist/generator/ImportResolver.d.ts.map +1 -0
- package/dist/generator/ImportResolver.js +381 -0
- package/dist/generator/ImportResolver.js.map +1 -0
- package/dist/generator/RestClientGenerator.d.ts +72 -0
- package/dist/generator/RestClientGenerator.d.ts.map +1 -0
- package/dist/generator/RestClientGenerator.js +488 -0
- package/dist/generator/RestClientGenerator.js.map +1 -0
- package/dist/generator/TypeMapper.d.ts +62 -0
- package/dist/generator/TypeMapper.d.ts.map +1 -0
- package/dist/generator/TypeMapper.js +224 -0
- package/dist/generator/TypeMapper.js.map +1 -0
- package/dist/generator/index.d.ts +9 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +9 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/modes/BaseGenerator.d.ts +67 -0
- package/dist/generator/modes/BaseGenerator.d.ts.map +1 -0
- package/dist/generator/modes/BaseGenerator.js +128 -0
- package/dist/generator/modes/BaseGenerator.js.map +1 -0
- package/dist/generator/modes/DecoratorGenerator.d.ts +28 -0
- package/dist/generator/modes/DecoratorGenerator.d.ts.map +1 -0
- package/dist/generator/modes/DecoratorGenerator.js +147 -0
- package/dist/generator/modes/DecoratorGenerator.js.map +1 -0
- package/dist/generator/modes/EmfGenerator.d.ts +22 -0
- package/dist/generator/modes/EmfGenerator.d.ts.map +1 -0
- package/dist/generator/modes/EmfGenerator.js +202 -0
- package/dist/generator/modes/EmfGenerator.js.map +1 -0
- package/dist/generator/modes/PlainGenerator.d.ts +16 -0
- package/dist/generator/modes/PlainGenerator.d.ts.map +1 -0
- package/dist/generator/modes/PlainGenerator.js +95 -0
- package/dist/generator/modes/PlainGenerator.js.map +1 -0
- package/dist/generator/modes/index.d.ts +5 -0
- package/dist/generator/modes/index.d.ts.map +1 -0
- package/dist/generator/modes/index.js +5 -0
- package/dist/generator/modes/index.js.map +1 -0
- package/dist/genmodel/GenClass.d.ts +37 -0
- package/dist/genmodel/GenClass.d.ts.map +1 -0
- package/dist/genmodel/GenClass.js +14 -0
- package/dist/genmodel/GenClass.js.map +1 -0
- package/dist/genmodel/GenDataType.d.ts +19 -0
- package/dist/genmodel/GenDataType.d.ts.map +1 -0
- package/dist/genmodel/GenDataType.js +46 -0
- package/dist/genmodel/GenDataType.js.map +1 -0
- package/dist/genmodel/GenEnum.d.ts +30 -0
- package/dist/genmodel/GenEnum.d.ts.map +1 -0
- package/dist/genmodel/GenEnum.js +11 -0
- package/dist/genmodel/GenEnum.js.map +1 -0
- package/dist/genmodel/GenFeature.d.ts +30 -0
- package/dist/genmodel/GenFeature.d.ts.map +1 -0
- package/dist/genmodel/GenFeature.js +15 -0
- package/dist/genmodel/GenFeature.js.map +1 -0
- package/dist/genmodel/GenModel.d.ts +54 -0
- package/dist/genmodel/GenModel.d.ts.map +1 -0
- package/dist/genmodel/GenModel.js +24 -0
- package/dist/genmodel/GenModel.js.map +1 -0
- package/dist/genmodel/GenOperation.d.ts +19 -0
- package/dist/genmodel/GenOperation.d.ts.map +1 -0
- package/dist/genmodel/GenOperation.js +10 -0
- package/dist/genmodel/GenOperation.js.map +1 -0
- package/dist/genmodel/GenPackage.d.ts +42 -0
- package/dist/genmodel/GenPackage.d.ts.map +1 -0
- package/dist/genmodel/GenPackage.js +25 -0
- package/dist/genmodel/GenPackage.js.map +1 -0
- package/dist/genmodel/GenerationMode.d.ts +23 -0
- package/dist/genmodel/GenerationMode.d.ts.map +1 -0
- package/dist/genmodel/GenerationMode.js +25 -0
- package/dist/genmodel/GenerationMode.js.map +1 -0
- package/dist/genmodel/index.d.ts +9 -0
- package/dist/genmodel/index.d.ts.map +1 -0
- package/dist/genmodel/index.js +10 -0
- package/dist/genmodel/index.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -0
- package/dist/loader/EcoreLoader.d.ts +33 -0
- package/dist/loader/EcoreLoader.d.ts.map +1 -0
- package/dist/loader/EcoreLoader.js +91 -0
- package/dist/loader/EcoreLoader.js.map +1 -0
- package/dist/loader/index.d.ts +2 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +2 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/templates/partials/decorator/class-file.ejs +98 -0
- package/dist/templates/partials/decorator/enum-file.ejs +35 -0
- package/dist/templates/partials/decorator/interface-file.ejs +61 -0
- package/dist/templates/partials/decorator/model-annotations.ejs +91 -0
- package/dist/templates/partials/decorator/package-file.ejs +7 -0
- package/dist/templates/partials/emf/class-file.ejs +226 -0
- package/dist/templates/partials/emf/enum-file.ejs +36 -0
- package/dist/templates/partials/emf/factory-file.ejs +54 -0
- package/dist/templates/partials/emf/index-file.ejs +29 -0
- package/dist/templates/partials/emf/interface-file.ejs +72 -0
- package/dist/templates/partials/emf/package-file.ejs +149 -0
- package/dist/templates/partials/plain/class-file.ejs +75 -0
- package/dist/templates/partials/plain/enum-file.ejs +28 -0
- package/dist/templates/partials/plain/interface-file.ejs +61 -0
- package/dist/templates/partials/plain/package-file.ejs +6 -0
- package/dist/templates/templates/partials/decorator/class-file.ejs +98 -0
- package/dist/templates/templates/partials/decorator/enum-file.ejs +35 -0
- package/dist/templates/templates/partials/decorator/interface-file.ejs +61 -0
- package/dist/templates/templates/partials/decorator/model-annotations.ejs +91 -0
- package/dist/templates/templates/partials/decorator/package-file.ejs +7 -0
- package/dist/templates/templates/partials/emf/class-file.ejs +226 -0
- package/dist/templates/templates/partials/emf/enum-file.ejs +36 -0
- package/dist/templates/templates/partials/emf/factory-file.ejs +54 -0
- package/dist/templates/templates/partials/emf/index-file.ejs +29 -0
- package/dist/templates/templates/partials/emf/interface-file.ejs +72 -0
- package/dist/templates/templates/partials/emf/package-file.ejs +149 -0
- package/dist/templates/templates/partials/plain/class-file.ejs +75 -0
- package/dist/templates/templates/partials/plain/enum-file.ejs +28 -0
- package/dist/templates/templates/partials/plain/interface-file.ejs +61 -0
- package/dist/templates/templates/partials/plain/package-file.ejs +6 -0
- package/dist/util/EObjectHelper.d.ts +90 -0
- package/dist/util/EObjectHelper.d.ts.map +1 -0
- package/dist/util/EObjectHelper.js +381 -0
- package/dist/util/EObjectHelper.js.map +1 -0
- package/dist/util/StringUtils.d.ts +44 -0
- package/dist/util/StringUtils.d.ts.map +1 -0
- package/dist/util/StringUtils.js +115 -0
- package/dist/util/StringUtils.js.map +1 -0
- package/dist/util/index.d.ts +3 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +3 -0
- package/dist/util/index.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { dirname, resolve } from 'path';
|
|
3
|
+
import { createDefaultGenerationSettings, createDefaultClassDefaults, createDefaultFeatureDefaults } from './GenConfig.js';
|
|
4
|
+
/**
|
|
5
|
+
* Loads GenConfig from XMI files
|
|
6
|
+
*/
|
|
7
|
+
export class GenConfigLoader {
|
|
8
|
+
resourceSet = null;
|
|
9
|
+
genconfigPackage = null;
|
|
10
|
+
ecorePackages = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the loader
|
|
13
|
+
*/
|
|
14
|
+
async init() {
|
|
15
|
+
const { BasicResourceSet, getEcorePackage, ECORE_NS_URI, XMIResource, URI } = await import('@emfts/core');
|
|
16
|
+
// Initialize Ecore
|
|
17
|
+
getEcorePackage();
|
|
18
|
+
// Create resource set
|
|
19
|
+
this.resourceSet = new BasicResourceSet();
|
|
20
|
+
this.resourceSet.getPackageRegistry().set(ECORE_NS_URI, getEcorePackage());
|
|
21
|
+
// Load genconfig.ecore metamodel
|
|
22
|
+
const genconfigEcorePath = resolve(dirname(import.meta.url.replace('file://', '')), '../../model/genconfig.ecore');
|
|
23
|
+
await this.loadGenConfigMetamodel(genconfigEcorePath);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load the genconfig.ecore metamodel
|
|
27
|
+
*/
|
|
28
|
+
async loadGenConfigMetamodel(path) {
|
|
29
|
+
const { XMIResource, URI } = await import('@emfts/core');
|
|
30
|
+
const content = await readFile(path, 'utf-8');
|
|
31
|
+
const uri = URI.createURI(path);
|
|
32
|
+
const resource = new XMIResource(uri);
|
|
33
|
+
resource.setResourceSet(this.resourceSet);
|
|
34
|
+
resource.loadFromString(content);
|
|
35
|
+
const contents = resource.getContents();
|
|
36
|
+
if (contents.length > 0) {
|
|
37
|
+
this.genconfigPackage = contents[0];
|
|
38
|
+
const nsURI = this.genconfigPackage.getNsURI();
|
|
39
|
+
if (nsURI) {
|
|
40
|
+
this.resourceSet.getPackageRegistry().set(nsURI, this.genconfigPackage);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Register an EPackage for reference resolution
|
|
46
|
+
*/
|
|
47
|
+
registerPackage(ePackage) {
|
|
48
|
+
const nsURI = ePackage.getNsURI();
|
|
49
|
+
if (nsURI) {
|
|
50
|
+
this.ecorePackages.set(nsURI, ePackage);
|
|
51
|
+
if (this.resourceSet) {
|
|
52
|
+
this.resourceSet.getPackageRegistry().set(nsURI, ePackage);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Load a GenConfig from XMI file
|
|
58
|
+
*/
|
|
59
|
+
async load(configPath) {
|
|
60
|
+
if (!this.resourceSet) {
|
|
61
|
+
await this.init();
|
|
62
|
+
}
|
|
63
|
+
const { XMIResource, URI } = await import('@emfts/core');
|
|
64
|
+
// Load the .genconfig.xmi file
|
|
65
|
+
const content = await readFile(configPath, 'utf-8');
|
|
66
|
+
const uri = URI.createURI(configPath);
|
|
67
|
+
const resource = new XMIResource(uri);
|
|
68
|
+
resource.setResourceSet(this.resourceSet);
|
|
69
|
+
resource.loadFromString(content);
|
|
70
|
+
const contents = resource.getContents();
|
|
71
|
+
if (contents.length === 0) {
|
|
72
|
+
throw new Error(`No content found in ${configPath}`);
|
|
73
|
+
}
|
|
74
|
+
const root = contents[0];
|
|
75
|
+
return this.convertToGenConfig(root);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Convert dynamic EObject to GenConfig
|
|
79
|
+
*/
|
|
80
|
+
convertToGenConfig(obj) {
|
|
81
|
+
// Resolve ecorePackage reference
|
|
82
|
+
const ecorePackageRef = this.getFeatureValue(obj, 'ecorePackage');
|
|
83
|
+
let ecorePackage = this.resolvePackageReference(ecorePackageRef);
|
|
84
|
+
// Fallback: if ecorePackage not specified in XMI, use the first registered package
|
|
85
|
+
// (typical when the CLI provides the model via -m flag)
|
|
86
|
+
if (!ecorePackage && this.ecorePackages.size > 0) {
|
|
87
|
+
ecorePackage = this.ecorePackages.values().next().value ?? null;
|
|
88
|
+
}
|
|
89
|
+
if (!ecorePackage) {
|
|
90
|
+
throw new Error('Could not resolve ecorePackage reference. Either specify ecorePackage in the GenConfig XMI or register a package via registerPackage() before loading.');
|
|
91
|
+
}
|
|
92
|
+
// Get generation settings
|
|
93
|
+
const generationObj = this.getFeatureValue(obj, 'generation');
|
|
94
|
+
const generation = this.convertGenerationSettings(generationObj);
|
|
95
|
+
// Get package settings
|
|
96
|
+
const packageObj = this.getFeatureValue(obj, 'package');
|
|
97
|
+
const packageSettings = this.convertPackageSettings(packageObj);
|
|
98
|
+
// Get class defaults (optional)
|
|
99
|
+
const classDefaultsObj = this.getFeatureValue(obj, 'classDefaults');
|
|
100
|
+
const classDefaults = classDefaultsObj
|
|
101
|
+
? this.convertClassDefaults(classDefaultsObj)
|
|
102
|
+
: createDefaultClassDefaults();
|
|
103
|
+
// Get feature defaults (optional)
|
|
104
|
+
const featureDefaultsObj = this.getFeatureValue(obj, 'featureDefaults');
|
|
105
|
+
const featureDefaults = featureDefaultsObj
|
|
106
|
+
? this.convertFeatureDefaults(featureDefaultsObj)
|
|
107
|
+
: createDefaultFeatureDefaults(generation.mode);
|
|
108
|
+
// Get class overrides (optional)
|
|
109
|
+
const classOverridesObj = this.getFeatureValue(obj, 'classOverrides') || [];
|
|
110
|
+
const classOverrides = this.convertClassOverrides(classOverridesObj, ecorePackage);
|
|
111
|
+
return {
|
|
112
|
+
ecorePackage,
|
|
113
|
+
generation,
|
|
114
|
+
package: packageSettings,
|
|
115
|
+
classDefaults,
|
|
116
|
+
featureDefaults,
|
|
117
|
+
classOverrides
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Convert GenerationSettings
|
|
122
|
+
*/
|
|
123
|
+
convertGenerationSettings(obj) {
|
|
124
|
+
if (!obj) {
|
|
125
|
+
return createDefaultGenerationSettings();
|
|
126
|
+
}
|
|
127
|
+
const modeValue = this.getFeatureValue(obj, 'mode');
|
|
128
|
+
const mode = this.convertMode(modeValue);
|
|
129
|
+
return {
|
|
130
|
+
mode,
|
|
131
|
+
outputDir: this.getFeatureValue(obj, 'outputDir') || './generated',
|
|
132
|
+
fileExtension: this.getFeatureValue(obj, 'fileExtension') || '.ts',
|
|
133
|
+
headerComment: this.getFeatureValue(obj, 'headerComment')
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Convert mode value (can be enum literal or string)
|
|
138
|
+
*/
|
|
139
|
+
convertMode(value) {
|
|
140
|
+
if (!value)
|
|
141
|
+
return 'emf';
|
|
142
|
+
// Handle enum literal object
|
|
143
|
+
if (typeof value === 'object' && value !== null) {
|
|
144
|
+
const literal = value.getLiteral?.() || value.literal || value.name;
|
|
145
|
+
if (literal)
|
|
146
|
+
return literal;
|
|
147
|
+
}
|
|
148
|
+
// Handle string
|
|
149
|
+
if (typeof value === 'string') {
|
|
150
|
+
return value;
|
|
151
|
+
}
|
|
152
|
+
// Handle number (enum ordinal)
|
|
153
|
+
if (typeof value === 'number') {
|
|
154
|
+
const modes = ['emf', 'decorator', 'plain'];
|
|
155
|
+
return modes[value] || 'emf';
|
|
156
|
+
}
|
|
157
|
+
return 'emf';
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Convert PackageSettings
|
|
161
|
+
*/
|
|
162
|
+
convertPackageSettings(obj) {
|
|
163
|
+
if (!obj) {
|
|
164
|
+
throw new Error('Package settings are required');
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
prefix: this.getFeatureValue(obj, 'prefix') || '',
|
|
168
|
+
basePackage: this.getFeatureValue(obj, 'basePackage'),
|
|
169
|
+
generateFactory: this.getFeatureValue(obj, 'generateFactory') ?? true,
|
|
170
|
+
generatePackage: this.getFeatureValue(obj, 'generatePackage') ?? true,
|
|
171
|
+
generateIndex: this.getFeatureValue(obj, 'generateIndex') ?? true
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Convert ClassDefaults
|
|
176
|
+
*/
|
|
177
|
+
convertClassDefaults(obj) {
|
|
178
|
+
return {
|
|
179
|
+
generateInterface: this.getFeatureValue(obj, 'generateInterface') ?? true,
|
|
180
|
+
generateImpl: this.getFeatureValue(obj, 'generateImpl') ?? true,
|
|
181
|
+
rootExtendsClass: this.getFeatureValue(obj, 'rootExtendsClass') || 'BasicEObject',
|
|
182
|
+
rootExtendsInterface: this.getFeatureValue(obj, 'rootExtendsInterface') || 'EObject'
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Convert FeatureDefaults
|
|
187
|
+
*/
|
|
188
|
+
convertFeatureDefaults(obj) {
|
|
189
|
+
const propertyValue = this.getFeatureValue(obj, 'property');
|
|
190
|
+
return {
|
|
191
|
+
notify: this.getFeatureValue(obj, 'notify') ?? true,
|
|
192
|
+
property: this.convertPropertyMode(propertyValue)
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Convert property mode value
|
|
197
|
+
*/
|
|
198
|
+
convertPropertyMode(value) {
|
|
199
|
+
if (!value)
|
|
200
|
+
return 'editable';
|
|
201
|
+
if (typeof value === 'object' && value !== null) {
|
|
202
|
+
const literal = value.getLiteral?.() || value.literal || value.name;
|
|
203
|
+
if (literal)
|
|
204
|
+
return literal;
|
|
205
|
+
}
|
|
206
|
+
if (typeof value === 'string') {
|
|
207
|
+
return value;
|
|
208
|
+
}
|
|
209
|
+
if (typeof value === 'number') {
|
|
210
|
+
const modes = ['editable', 'readonly', 'none'];
|
|
211
|
+
return modes[value] || 'editable';
|
|
212
|
+
}
|
|
213
|
+
return 'editable';
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Convert ClassOverrides array
|
|
217
|
+
*/
|
|
218
|
+
convertClassOverrides(objs, ecorePackage) {
|
|
219
|
+
const overrides = [];
|
|
220
|
+
for (const obj of objs) {
|
|
221
|
+
const ecoreClassRef = this.getFeatureValue(obj, 'ecoreClass');
|
|
222
|
+
const ecoreClass = this.resolveClassReference(ecoreClassRef, ecorePackage);
|
|
223
|
+
if (!ecoreClass) {
|
|
224
|
+
console.warn(`Could not resolve ecoreClass reference: ${ecoreClassRef}`);
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
const featureOverridesObj = this.getFeatureValue(obj, 'featureOverrides') || [];
|
|
228
|
+
const featureOverrides = this.convertFeatureOverrides(featureOverridesObj, ecoreClass);
|
|
229
|
+
overrides.push({
|
|
230
|
+
ecoreClass,
|
|
231
|
+
generateInterface: this.getFeatureValue(obj, 'generateInterface'),
|
|
232
|
+
generateImpl: this.getFeatureValue(obj, 'generateImpl'),
|
|
233
|
+
extendsClass: this.getFeatureValue(obj, 'extendsClass'),
|
|
234
|
+
implementsInterfaces: this.getFeatureValue(obj, 'implementsInterfaces'),
|
|
235
|
+
featureOverrides
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
return overrides;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Convert FeatureOverrides array
|
|
242
|
+
*/
|
|
243
|
+
convertFeatureOverrides(objs, ecoreClass) {
|
|
244
|
+
const overrides = [];
|
|
245
|
+
for (const obj of objs) {
|
|
246
|
+
const ecoreFeatureRef = this.getFeatureValue(obj, 'ecoreFeature');
|
|
247
|
+
const ecoreFeature = this.resolveFeatureReference(ecoreFeatureRef, ecoreClass);
|
|
248
|
+
if (!ecoreFeature) {
|
|
249
|
+
console.warn(`Could not resolve ecoreFeature reference: ${ecoreFeatureRef}`);
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const propertyValue = this.getFeatureValue(obj, 'property');
|
|
253
|
+
overrides.push({
|
|
254
|
+
ecoreFeature,
|
|
255
|
+
notify: this.getFeatureValue(obj, 'notify'),
|
|
256
|
+
property: propertyValue !== undefined ? this.convertPropertyMode(propertyValue) : undefined,
|
|
257
|
+
customGetter: this.getFeatureValue(obj, 'customGetter'),
|
|
258
|
+
customSetter: this.getFeatureValue(obj, 'customSetter')
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return overrides;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Resolve EPackage reference from URI
|
|
265
|
+
*/
|
|
266
|
+
resolvePackageReference(ref) {
|
|
267
|
+
if (!ref)
|
|
268
|
+
return null;
|
|
269
|
+
// If it's already an EPackage
|
|
270
|
+
if (typeof ref === 'object' && 'getNsURI' in ref) {
|
|
271
|
+
return ref;
|
|
272
|
+
}
|
|
273
|
+
// If it's a proxy, get the URI
|
|
274
|
+
if (typeof ref === 'object' && ref.eIsProxy?.()) {
|
|
275
|
+
const proxyURI = ref.eProxyURI?.()?.toString?.();
|
|
276
|
+
if (proxyURI) {
|
|
277
|
+
return this.resolvePackageFromURI(proxyURI);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// If it's a string URI
|
|
281
|
+
if (typeof ref === 'string') {
|
|
282
|
+
return this.resolvePackageFromURI(ref);
|
|
283
|
+
}
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Resolve EPackage from URI string
|
|
288
|
+
*/
|
|
289
|
+
resolvePackageFromURI(uri) {
|
|
290
|
+
// Remove fragment (#/ or #//)
|
|
291
|
+
const nsURI = uri.replace(/#\/?.*$/, '');
|
|
292
|
+
// Look up in registered packages
|
|
293
|
+
return this.ecorePackages.get(nsURI) || null;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Resolve EClass reference from URI
|
|
297
|
+
*/
|
|
298
|
+
resolveClassReference(ref, defaultPackage) {
|
|
299
|
+
if (!ref)
|
|
300
|
+
return null;
|
|
301
|
+
// If it's already an EClass
|
|
302
|
+
if (typeof ref === 'object' && 'getEStructuralFeatures' in ref) {
|
|
303
|
+
return ref;
|
|
304
|
+
}
|
|
305
|
+
// Get URI string
|
|
306
|
+
let uri = null;
|
|
307
|
+
if (typeof ref === 'object' && ref.eIsProxy?.()) {
|
|
308
|
+
uri = ref.eProxyURI?.()?.toString?.();
|
|
309
|
+
}
|
|
310
|
+
else if (typeof ref === 'string') {
|
|
311
|
+
uri = ref;
|
|
312
|
+
}
|
|
313
|
+
if (!uri)
|
|
314
|
+
return null;
|
|
315
|
+
// Parse URI: nsURI#//ClassName
|
|
316
|
+
const match = uri.match(/^(.+)#\/\/(.+)$/);
|
|
317
|
+
if (!match)
|
|
318
|
+
return null;
|
|
319
|
+
const [, nsURI, className] = match;
|
|
320
|
+
const ePackage = this.ecorePackages.get(nsURI) || defaultPackage;
|
|
321
|
+
// Find classifier by name
|
|
322
|
+
const classifiers = ePackage.getEClassifiers?.() || [];
|
|
323
|
+
for (const classifier of classifiers) {
|
|
324
|
+
if (classifier.getName?.() === className) {
|
|
325
|
+
return classifier;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Resolve EStructuralFeature reference from URI
|
|
332
|
+
*/
|
|
333
|
+
resolveFeatureReference(ref, defaultClass) {
|
|
334
|
+
if (!ref)
|
|
335
|
+
return null;
|
|
336
|
+
// If it's already an EStructuralFeature
|
|
337
|
+
if (typeof ref === 'object' && 'getEContainingClass' in ref) {
|
|
338
|
+
return ref;
|
|
339
|
+
}
|
|
340
|
+
// Get URI string
|
|
341
|
+
let uri = null;
|
|
342
|
+
if (typeof ref === 'object' && ref.eIsProxy?.()) {
|
|
343
|
+
uri = ref.eProxyURI?.()?.toString?.();
|
|
344
|
+
}
|
|
345
|
+
else if (typeof ref === 'string') {
|
|
346
|
+
uri = ref;
|
|
347
|
+
}
|
|
348
|
+
if (!uri)
|
|
349
|
+
return null;
|
|
350
|
+
// Parse URI: nsURI#//ClassName/featureName
|
|
351
|
+
const match = uri.match(/^(.+)#\/\/(.+)\/(.+)$/);
|
|
352
|
+
if (!match)
|
|
353
|
+
return null;
|
|
354
|
+
const [, nsURI, className, featureName] = match;
|
|
355
|
+
// Find the class first
|
|
356
|
+
const ePackage = this.ecorePackages.get(nsURI);
|
|
357
|
+
let eClass = null;
|
|
358
|
+
if (ePackage) {
|
|
359
|
+
const classifiers = ePackage.getEClassifiers?.() || [];
|
|
360
|
+
for (const classifier of classifiers) {
|
|
361
|
+
if (classifier.getName?.() === className) {
|
|
362
|
+
eClass = classifier;
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
if (!eClass) {
|
|
368
|
+
eClass = defaultClass;
|
|
369
|
+
}
|
|
370
|
+
// Find feature by name
|
|
371
|
+
const features = eClass.getEStructuralFeatures?.() || [];
|
|
372
|
+
for (const feature of features) {
|
|
373
|
+
if (feature.getName?.() === featureName) {
|
|
374
|
+
return feature;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// Also check inherited features
|
|
378
|
+
const allFeatures = eClass.getEAllStructuralFeatures?.() || [];
|
|
379
|
+
for (const feature of allFeatures) {
|
|
380
|
+
if (feature.getName?.() === featureName) {
|
|
381
|
+
return feature;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Get feature value from dynamic EObject
|
|
388
|
+
*/
|
|
389
|
+
getFeatureValue(obj, featureName) {
|
|
390
|
+
if (!obj)
|
|
391
|
+
return undefined;
|
|
392
|
+
let value = undefined;
|
|
393
|
+
// Try direct getter
|
|
394
|
+
const getterName = `get${featureName.charAt(0).toUpperCase()}${featureName.slice(1)}`;
|
|
395
|
+
if (typeof obj[getterName] === 'function') {
|
|
396
|
+
value = obj[getterName]();
|
|
397
|
+
}
|
|
398
|
+
// Try isXxx for booleans
|
|
399
|
+
else {
|
|
400
|
+
const isGetterName = `is${featureName.charAt(0).toUpperCase()}${featureName.slice(1)}`;
|
|
401
|
+
if (typeof obj[isGetterName] === 'function') {
|
|
402
|
+
value = obj[isGetterName]();
|
|
403
|
+
}
|
|
404
|
+
// Try eGet
|
|
405
|
+
else if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
|
|
406
|
+
const eClass = obj.eClass();
|
|
407
|
+
if (eClass) {
|
|
408
|
+
const feature = eClass.getEStructuralFeature?.(featureName);
|
|
409
|
+
if (feature) {
|
|
410
|
+
value = obj.eGet(feature);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
// Try direct property access
|
|
415
|
+
else if (featureName in obj) {
|
|
416
|
+
value = obj[featureName];
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// Handle value conversion
|
|
420
|
+
if (value === undefined || value === null) {
|
|
421
|
+
return value;
|
|
422
|
+
}
|
|
423
|
+
// Check if it's an EList or iterable (but not string)
|
|
424
|
+
if (typeof value === 'object' && typeof value[Symbol.iterator] === 'function') {
|
|
425
|
+
// Check if it's meant to be a multi-valued feature
|
|
426
|
+
const eClass = obj.eClass?.();
|
|
427
|
+
const feature = eClass?.getEStructuralFeature?.(featureName);
|
|
428
|
+
const upperBound = feature?.getUpperBound?.() ?? 1;
|
|
429
|
+
if (upperBound === -1 || upperBound > 1) {
|
|
430
|
+
// Multi-valued - return as array
|
|
431
|
+
return Array.from(value);
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
// Single-valued but came as iterable - might be a string that got split
|
|
435
|
+
// Check if all elements are single characters
|
|
436
|
+
const arr = Array.from(value);
|
|
437
|
+
if (arr.length > 0 && arr.every((c) => typeof c === 'string' && c.length === 1)) {
|
|
438
|
+
// It's a string that got split into characters - join it back
|
|
439
|
+
return arr.join('');
|
|
440
|
+
}
|
|
441
|
+
// Return first element for single-valued
|
|
442
|
+
return arr[0];
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
// Convert string "true"/"false" to boolean
|
|
446
|
+
if (typeof value === 'string') {
|
|
447
|
+
if (value === 'true')
|
|
448
|
+
return true;
|
|
449
|
+
if (value === 'false')
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
452
|
+
return value;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
//# sourceMappingURL=GenConfigLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenConfigLoader.js","sourceRoot":"","sources":["../../src/genconfig/GenConfigLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/genconfig/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/genconfig/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { GenModel } from '../genmodel/GenModel.js';
|
|
2
|
+
import type { GeneratorOptions } from './GeneratorOptions.js';
|
|
3
|
+
import { type Diagnostic } from './GeneratorContext.js';
|
|
4
|
+
import { GeneratedFile } from './GeneratedFile.js';
|
|
5
|
+
/**
|
|
6
|
+
* Result of code generation
|
|
7
|
+
*/
|
|
8
|
+
export interface GenerationResult {
|
|
9
|
+
/** Generated files */
|
|
10
|
+
files: GeneratedFile[];
|
|
11
|
+
/** Diagnostics (warnings, errors) */
|
|
12
|
+
diagnostics: Diagnostic[];
|
|
13
|
+
/** Whether generation succeeded */
|
|
14
|
+
success: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Main code generator that orchestrates generation based on mode
|
|
18
|
+
*/
|
|
19
|
+
export declare class CodeGenerator {
|
|
20
|
+
private genModel;
|
|
21
|
+
private context;
|
|
22
|
+
private generator;
|
|
23
|
+
constructor(genModel: GenModel, options?: Partial<GeneratorOptions>);
|
|
24
|
+
/**
|
|
25
|
+
* Create the appropriate generator for the mode
|
|
26
|
+
*/
|
|
27
|
+
private createModeGenerator;
|
|
28
|
+
/**
|
|
29
|
+
* Generate all code for the model
|
|
30
|
+
*/
|
|
31
|
+
generate(): Promise<GenerationResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Generate files for a package
|
|
34
|
+
*/
|
|
35
|
+
private generatePackage;
|
|
36
|
+
/**
|
|
37
|
+
* Write all generated files to disk
|
|
38
|
+
*/
|
|
39
|
+
writeFiles(files: GeneratedFile[]): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Generate and write all files
|
|
42
|
+
*/
|
|
43
|
+
run(): Promise<GenerationResult>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=CodeGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../src/generator/CodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,KAAK,EAAE,aAAa,EAAE,CAAC;IAEvB,qCAAqC;IACrC,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAgB;gBAErB,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAMnE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyB3C;;OAEG;YACW,eAAe;IAqE7B;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;CASvC"}
|