@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
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# emf.ts.codegen
|
|
2
|
+
|
|
3
|
+
TypeScript code generator for [Ecore](https://eclipse.dev/modeling/emf/) models using [emf.ts](https://github.com/eclipse-fennec/emf.ts).
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Generate TypeScript interfaces and classes from `.ecore` models
|
|
8
|
+
- Support for multiple generation modes (plain, decorator-based, EMF-style)
|
|
9
|
+
- REST client generation from Ecore models
|
|
10
|
+
- CLI tool for easy integration into build pipelines
|
|
11
|
+
- Configurable via `.genconfig.xmi` files
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install emfts-codegen
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### CLI
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Generate TypeScript code from an Ecore model
|
|
25
|
+
emfts-codegen generate -m model/my-model.ecore -c model/my-model.genconfig.xmi -o src/generated
|
|
26
|
+
|
|
27
|
+
# Initialize a new genconfig
|
|
28
|
+
emfts-codegen init
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Programmatic
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { CodeGenerator } from 'emfts-codegen';
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## License
|
|
38
|
+
|
|
39
|
+
[EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-rest-client.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-rest-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,yBAAyB,SAqClC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { RestClientGenerator } from '../../generator/RestClientGenerator.js';
|
|
3
|
+
export const generateRestClientCommand = new Command('generate-rest-client')
|
|
4
|
+
.description('Generate TypeScript fetch client from REST API Ecore model + XMI instance')
|
|
5
|
+
.requiredOption('-m, --metamodel <path>', 'Path to rest-api.ecore metamodel')
|
|
6
|
+
.requiredOption('-i, --instance <path>', 'Path to API instance .xmi file')
|
|
7
|
+
.requiredOption('-o, --output <path>', 'Output directory for generated client')
|
|
8
|
+
.option('-v, --verbose', 'Verbose output')
|
|
9
|
+
.action(async (options) => {
|
|
10
|
+
const verbose = options.verbose;
|
|
11
|
+
try {
|
|
12
|
+
if (verbose) {
|
|
13
|
+
console.log('REST API metamodel:', options.metamodel);
|
|
14
|
+
console.log('API instance:', options.instance);
|
|
15
|
+
console.log('Output directory:', options.output);
|
|
16
|
+
}
|
|
17
|
+
const generator = new RestClientGenerator({
|
|
18
|
+
outputDir: options.output,
|
|
19
|
+
verbose,
|
|
20
|
+
});
|
|
21
|
+
console.log('Generating REST client...');
|
|
22
|
+
const files = await generator.generate(options.metamodel, options.instance);
|
|
23
|
+
console.log(`Successfully generated ${files.length} files to ${options.output}`);
|
|
24
|
+
if (verbose) {
|
|
25
|
+
for (const file of files) {
|
|
26
|
+
console.log(' -', file);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error('Error:', error instanceof Error ? error.message : error);
|
|
32
|
+
if (verbose && error instanceof Error) {
|
|
33
|
+
console.error(error.stack);
|
|
34
|
+
}
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=generate-rest-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-rest-client.js","sourceRoot":"","sources":["../../../src/cli/commands/generate-rest-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,OAAO,CAAC,sBAAsB,CAAC;KACzE,WAAW,CAAC,2EAA2E,CAAC;KACxF,cAAc,CAAC,wBAAwB,EAAE,kCAAkC,CAAC;KAC5E,cAAc,CAAC,uBAAuB,EAAE,gCAAgC,CAAC;KACzE,cAAc,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KAC9E,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAI,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,MAAM,aAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjF,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,eAAe,SAuFxB,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { EcoreLoader } from '../../loader/EcoreLoader.js';
|
|
3
|
+
import { GenConfigLoader } from '../../genconfig/GenConfigLoader.js';
|
|
4
|
+
import { GenConfigConverter } from '../../genconfig/GenConfigConverter.js';
|
|
5
|
+
import { CodeGenerator } from '../../generator/CodeGenerator.js';
|
|
6
|
+
export const generateCommand = new Command('generate')
|
|
7
|
+
.description('Generate TypeScript code from Ecore model')
|
|
8
|
+
.requiredOption('-m, --model <path>', 'Path to .ecore model file')
|
|
9
|
+
.requiredOption('-c, --config <path>', 'Path to .genconfig.xmi file')
|
|
10
|
+
.option('-o, --output <path>', 'Output directory override')
|
|
11
|
+
.option('-v, --verbose', 'Verbose output')
|
|
12
|
+
.action(async (options) => {
|
|
13
|
+
const verbose = options.verbose;
|
|
14
|
+
try {
|
|
15
|
+
if (verbose) {
|
|
16
|
+
console.log('Loading Ecore model:', options.model);
|
|
17
|
+
}
|
|
18
|
+
// Load Ecore model
|
|
19
|
+
const ecoreLoader = new EcoreLoader();
|
|
20
|
+
const ePackage = await ecoreLoader.load(options.model);
|
|
21
|
+
if (verbose) {
|
|
22
|
+
console.log('Loaded package:', getName(ePackage), 'nsURI:', ePackage.getNsURI());
|
|
23
|
+
const classifiers = ePackage.getEClassifiers();
|
|
24
|
+
console.log('Classifiers:', classifiers.length);
|
|
25
|
+
for (const c of classifiers) {
|
|
26
|
+
console.log(' -', getName(c));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Load GenConfig
|
|
30
|
+
if (verbose) {
|
|
31
|
+
console.log('Loading GenConfig:', options.config);
|
|
32
|
+
}
|
|
33
|
+
const configLoader = new GenConfigLoader();
|
|
34
|
+
configLoader.registerPackage(ePackage);
|
|
35
|
+
const genConfig = await configLoader.load(options.config);
|
|
36
|
+
// Convert to internal GenModel
|
|
37
|
+
const converter = new GenConfigConverter();
|
|
38
|
+
const genModel = converter.convert(genConfig);
|
|
39
|
+
// Override output directory if specified on command line
|
|
40
|
+
const outputDir = options.output || genConfig.generation.outputDir;
|
|
41
|
+
if (verbose) {
|
|
42
|
+
console.log('Generation mode:', genConfig.generation.mode);
|
|
43
|
+
console.log('Output directory:', outputDir);
|
|
44
|
+
console.log('Generate interfaces:', genConfig.classDefaults?.generateInterface ?? true);
|
|
45
|
+
console.log('Generate classes:', genConfig.classDefaults?.generateImpl ?? true);
|
|
46
|
+
console.log('Generate factory:', genConfig.package.generateFactory);
|
|
47
|
+
}
|
|
48
|
+
// Generate code
|
|
49
|
+
const generator = new CodeGenerator(genModel, {
|
|
50
|
+
outputDirectory: outputDir
|
|
51
|
+
});
|
|
52
|
+
console.log('Generating code...');
|
|
53
|
+
const result = await generator.run();
|
|
54
|
+
// Print diagnostics
|
|
55
|
+
for (const diag of result.diagnostics) {
|
|
56
|
+
if (diag.level === 'error') {
|
|
57
|
+
console.error(`[ERROR] ${diag.message}`);
|
|
58
|
+
}
|
|
59
|
+
else if (diag.level === 'warning') {
|
|
60
|
+
console.warn(`[WARN] ${diag.message}`);
|
|
61
|
+
}
|
|
62
|
+
else if (verbose) {
|
|
63
|
+
console.log(`[INFO] ${diag.message}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (result.success) {
|
|
67
|
+
console.log(`Successfully generated ${result.files.length} files to ${outputDir}`);
|
|
68
|
+
if (verbose) {
|
|
69
|
+
for (const file of result.files) {
|
|
70
|
+
console.log(' -', file);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.error('Generation failed with errors');
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error('Error:', error instanceof Error ? error.message : error);
|
|
81
|
+
if (verbose && error instanceof Error) {
|
|
82
|
+
console.error(error.stack);
|
|
83
|
+
}
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* Get name from ENamedElement (works with both static and dynamic EObjects)
|
|
89
|
+
*/
|
|
90
|
+
function getName(obj) {
|
|
91
|
+
// Try direct method first
|
|
92
|
+
if (typeof obj.getName === 'function') {
|
|
93
|
+
return obj.getName() ?? '';
|
|
94
|
+
}
|
|
95
|
+
// Try eGet for dynamic objects
|
|
96
|
+
if (typeof obj.eGet === 'function' && typeof obj.eClass === 'function') {
|
|
97
|
+
const eClass = obj.eClass();
|
|
98
|
+
if (eClass) {
|
|
99
|
+
const nameFeature = eClass.getEStructuralFeature?.('name');
|
|
100
|
+
if (nameFeature) {
|
|
101
|
+
return obj.eGet(nameFeature) ?? '';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Fallback to property access
|
|
106
|
+
return obj.name ?? '';
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SA6CpB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { writeFile } from 'fs/promises';
|
|
3
|
+
import { EcoreLoader } from '../../loader/EcoreLoader.js';
|
|
4
|
+
export const initCommand = new Command('init')
|
|
5
|
+
.description('Initialize a GenConfig file from an Ecore model')
|
|
6
|
+
.requiredOption('-m, --model <path>', 'Path to .ecore model file')
|
|
7
|
+
.option('-o, --output <path>', 'Output path for .genconfig.xmi file')
|
|
8
|
+
.option('--mode <mode>', 'Generation mode: plain, decorator, or emf', 'emf')
|
|
9
|
+
.option('--base-package <package>', 'Base package path for generated code')
|
|
10
|
+
.option('--prefix <prefix>', 'Prefix for generated class names')
|
|
11
|
+
.option('--output-dir <dir>', 'Output directory for generated code', './generated')
|
|
12
|
+
.action(async (options) => {
|
|
13
|
+
try {
|
|
14
|
+
console.log('Loading Ecore model:', options.model);
|
|
15
|
+
// Load Ecore model
|
|
16
|
+
const ecoreLoader = new EcoreLoader();
|
|
17
|
+
const ePackage = await ecoreLoader.load(options.model);
|
|
18
|
+
const packageName = ePackage.getName() || 'Model';
|
|
19
|
+
const nsURI = ePackage.getNsURI() || `http://example.org/${packageName.toLowerCase()}`;
|
|
20
|
+
console.log('Loaded package:', packageName, 'nsURI:', nsURI);
|
|
21
|
+
// Generate prefix from package name (capitalize first letter)
|
|
22
|
+
const prefix = options.prefix || packageName.charAt(0).toUpperCase() + packageName.slice(1);
|
|
23
|
+
const basePackage = options.basePackage || 'org.example';
|
|
24
|
+
const mode = options.mode;
|
|
25
|
+
const outputDir = options.outputDir;
|
|
26
|
+
// Generate GenConfig XMI content
|
|
27
|
+
const xmiContent = generateGenConfigXMI(nsURI, mode, outputDir, prefix, basePackage);
|
|
28
|
+
// Determine output path
|
|
29
|
+
const outputPath = options.output ?? options.model.replace(/\.ecore$/, '.genconfig.xmi');
|
|
30
|
+
// Write file
|
|
31
|
+
await writeFile(outputPath, xmiContent, 'utf-8');
|
|
32
|
+
console.log('Created GenConfig:', outputPath);
|
|
33
|
+
console.log('Mode:', mode);
|
|
34
|
+
console.log('Prefix:', prefix);
|
|
35
|
+
console.log('Base package:', basePackage);
|
|
36
|
+
console.log('Output directory:', outputDir);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('Error:', error instanceof Error ? error.message : error);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
function generateGenConfigXMI(nsURI, mode, outputDir, prefix, basePackage) {
|
|
44
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
45
|
+
<genconfig:GenConfig
|
|
46
|
+
xmi:version="2.0"
|
|
47
|
+
xmlns:xmi="http://www.omg.org/XMI"
|
|
48
|
+
xmlns:genconfig="http://www.emfts.org/genconfig/1.0"
|
|
49
|
+
ecorePackage="${nsURI}#/">
|
|
50
|
+
<generation mode="${mode}" outputDir="${outputDir}"/>
|
|
51
|
+
<package prefix="${prefix}" basePackage="${basePackage}" generateFactory="true" generatePackage="true" generateIndex="true"/>
|
|
52
|
+
<classDefaults generateInterface="true" generateImpl="true" rootExtendsClass="BasicEObject" rootExtendsInterface="EObject"/>
|
|
53
|
+
<featureDefaults notify="true" property="editable"/>
|
|
54
|
+
</genconfig:GenConfig>
|
|
55
|
+
`;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,iDAAiD,CAAC;KAC9D,cAAc,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,2CAA2C,EAAE,KAAK,CAAC;KAC3E,MAAM,CAAC,0BAA0B,EAAE,sCAAsC,CAAC;KAC1E,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;KAC/D,MAAM,CAAC,oBAAoB,EAAE,qCAAqC,EAAE,aAAa,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnD,mBAAmB;QACnB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,sBAAsB,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAEvF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE7D,8DAA8D;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAEpC,iCAAiC;QACjC,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAErF,wBAAwB;QACxB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAEzF,aAAa;QACb,MAAM,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,oBAAoB,CAC3B,KAAa,EACb,IAAY,EACZ,SAAiB,EACjB,MAAc,EACd,WAAmB;IAEnB,OAAO;;;;;oBAKW,KAAK;sBACH,IAAI,gBAAgB,SAAS;qBAC9B,MAAM,kBAAkB,WAAW;;;;CAIvD,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { generateCommand } from './commands/generate.js';
|
|
4
|
+
import { initCommand } from './commands/init.js';
|
|
5
|
+
import { generateRestClientCommand } from './commands/generate-rest-client.js';
|
|
6
|
+
const program = new Command();
|
|
7
|
+
program
|
|
8
|
+
.name('emfts-codegen')
|
|
9
|
+
.description('TypeScript code generator for Ecore models using emfts')
|
|
10
|
+
.version('1.0.0');
|
|
11
|
+
program.addCommand(generateCommand);
|
|
12
|
+
program.addCommand(initCommand);
|
|
13
|
+
program.addCommand(generateRestClientCommand);
|
|
14
|
+
program.parse();
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;AAE9C,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-abstract.d.ts","sourceRoot":"","sources":["../src/debug-abstract.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EcoreLoader } from './loader/EcoreLoader.js';
|
|
2
|
+
import * as EObjectHelper from './util/EObjectHelper.js';
|
|
3
|
+
async function test() {
|
|
4
|
+
const loader = new EcoreLoader();
|
|
5
|
+
const pkg = await loader.load('examples/model/library.ecore');
|
|
6
|
+
console.log('Package name:', EObjectHelper.getName(pkg));
|
|
7
|
+
for (const c of pkg.getEClassifiers()) {
|
|
8
|
+
const name = EObjectHelper.getName(c);
|
|
9
|
+
const hasIsAbstract = typeof c.isAbstract === 'function';
|
|
10
|
+
let isAbstractResult = 'N/A';
|
|
11
|
+
if (hasIsAbstract) {
|
|
12
|
+
try {
|
|
13
|
+
isAbstractResult = String(c.isAbstract());
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
isAbstractResult = 'ERROR: ' + e.message;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const isProxy = typeof c.eIsProxy === 'function' && c.eIsProxy();
|
|
20
|
+
const helperResult = EObjectHelper.isAbstract(c);
|
|
21
|
+
console.log(`${name}: hasIsAbstract=${hasIsAbstract}, isAbstract()=${isAbstractResult}, isProxy=${isProxy}, helper=${helperResult}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
test().catch(console.error);
|
|
25
|
+
//# sourceMappingURL=debug-abstract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-abstract.js","sourceRoot":"","sources":["../src/debug-abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AAEzD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAE9D,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC;QACzD,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,gBAAgB,GAAG,MAAM,CAAE,CAAS,CAAC,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,OAAQ,CAAS,CAAC,QAAQ,KAAK,UAAU,IAAK,CAAS,CAAC,QAAQ,EAAE,CAAC;QACnF,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,mBAAmB,aAAa,kBAAkB,gBAAgB,aAAa,OAAO,YAAY,YAAY,EAAE,CAAC,CAAC;IACvI,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-genmodel.d.ts","sourceRoot":"","sources":["../src/debug-genmodel.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { EcoreLoader } from './loader/EcoreLoader.js';
|
|
2
|
+
import { GenModelXMILoader } from './genmodel/GenModelXMILoader.js';
|
|
3
|
+
import * as EObjectHelper from './util/EObjectHelper.js';
|
|
4
|
+
async function test() {
|
|
5
|
+
// Load ecore
|
|
6
|
+
const ecoreLoader = new EcoreLoader();
|
|
7
|
+
const pkg = await ecoreLoader.load('examples/model/library.ecore');
|
|
8
|
+
const packages = ecoreLoader.getAllPackages();
|
|
9
|
+
console.log('=== Loaded ecore classes ===');
|
|
10
|
+
for (const c of pkg.getEClassifiers()) {
|
|
11
|
+
const name = EObjectHelper.getName(c);
|
|
12
|
+
if (typeof c.isAbstract === 'function') {
|
|
13
|
+
console.log(name + ': isAbstract() = ' + c.isAbstract());
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// Load genmodel
|
|
17
|
+
const genmodelLoader = new GenModelXMILoader();
|
|
18
|
+
const genModel = await genmodelLoader.load('examples/model/library.genmodel', packages);
|
|
19
|
+
console.log('\n=== GenModel ecoreClass references ===');
|
|
20
|
+
for (const genPkg of genModel.genPackages) {
|
|
21
|
+
for (const genClass of genPkg.genClasses) {
|
|
22
|
+
const eClass = genClass.ecoreClass;
|
|
23
|
+
const name = EObjectHelper.getName(eClass);
|
|
24
|
+
const isProxy = typeof eClass.eIsProxy === 'function' && eClass.eIsProxy();
|
|
25
|
+
const hasIsAbstract = typeof eClass.isAbstract === 'function';
|
|
26
|
+
let isAbstractResult = 'N/A';
|
|
27
|
+
if (hasIsAbstract) {
|
|
28
|
+
try {
|
|
29
|
+
isAbstractResult = String(eClass.isAbstract());
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
isAbstractResult = 'ERROR';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const helperResult = EObjectHelper.isAbstract(eClass);
|
|
36
|
+
console.log(name + ': isProxy=' + isProxy + ', hasIsAbstract=' + hasIsAbstract + ', isAbstract()=' + isAbstractResult + ', helper=' + helperResult);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
test().catch(console.error);
|
|
41
|
+
//# sourceMappingURL=debug-genmodel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-genmodel.js","sourceRoot":"","sources":["../src/debug-genmodel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AAEzD,KAAK,UAAU,IAAI;IACjB,aAAa;IACb,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,OAAQ,CAAS,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,mBAAmB,GAAI,CAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,QAAQ,CAAC,CAAC;IAExF,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;YACnC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,OAAQ,MAAc,CAAC,QAAQ,KAAK,UAAU,IAAK,MAAc,CAAC,QAAQ,EAAE,CAAC;YAC7F,MAAM,aAAa,GAAG,OAAQ,MAAc,CAAC,UAAU,KAAK,UAAU,CAAC;YACvE,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,gBAAgB,GAAG,MAAM,CAAE,MAAc,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,gBAAgB,GAAG,OAAO,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,kBAAkB,GAAG,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;QACtJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { EPackage, EClass, EStructuralFeature } from '@emfts/core';
|
|
2
|
+
/**
|
|
3
|
+
* Generation mode for code output
|
|
4
|
+
*/
|
|
5
|
+
export type GenConfigMode = 'emf' | 'decorator' | 'plain';
|
|
6
|
+
/**
|
|
7
|
+
* Property access mode for generated features
|
|
8
|
+
*/
|
|
9
|
+
export type GenConfigPropertyMode = 'editable' | 'readonly' | 'none';
|
|
10
|
+
/**
|
|
11
|
+
* Root configuration for TypeScript code generation
|
|
12
|
+
*/
|
|
13
|
+
export interface GenConfig {
|
|
14
|
+
/** Reference to the EPackage to generate code for */
|
|
15
|
+
ecorePackage: EPackage;
|
|
16
|
+
/** Generation settings */
|
|
17
|
+
generation: GenerationSettings;
|
|
18
|
+
/** Package settings */
|
|
19
|
+
package: PackageSettings;
|
|
20
|
+
/** Default settings for all classes */
|
|
21
|
+
classDefaults?: ClassDefaults;
|
|
22
|
+
/** Default settings for all features */
|
|
23
|
+
featureDefaults?: FeatureDefaults;
|
|
24
|
+
/** Per-class overrides */
|
|
25
|
+
classOverrides?: ClassOverride[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Settings controlling how code is generated
|
|
29
|
+
*/
|
|
30
|
+
export interface GenerationSettings {
|
|
31
|
+
/** Generation mode: emf, decorator, or plain */
|
|
32
|
+
mode: GenConfigMode;
|
|
33
|
+
/** Output directory for generated files */
|
|
34
|
+
outputDir: string;
|
|
35
|
+
/** File extension (default: .ts) */
|
|
36
|
+
fileExtension?: string;
|
|
37
|
+
/** Custom header comment */
|
|
38
|
+
headerComment?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Settings for package structure and artifacts
|
|
42
|
+
*/
|
|
43
|
+
export interface PackageSettings {
|
|
44
|
+
/** Prefix for Package/Factory classes (e.g. 'Library' -> LibraryPackage) */
|
|
45
|
+
prefix: string;
|
|
46
|
+
/** Base package path (e.g. 'org.example' -> org/example/) */
|
|
47
|
+
basePackage?: string;
|
|
48
|
+
/** Generate factory class (default: true) */
|
|
49
|
+
generateFactory?: boolean;
|
|
50
|
+
/** Generate package class (default: true) */
|
|
51
|
+
generatePackage?: boolean;
|
|
52
|
+
/** Generate index.ts barrel file (default: true) */
|
|
53
|
+
generateIndex?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Default settings for all generated classes
|
|
57
|
+
*/
|
|
58
|
+
export interface ClassDefaults {
|
|
59
|
+
/** Generate interface for each class (default: true) */
|
|
60
|
+
generateInterface?: boolean;
|
|
61
|
+
/** Generate implementation class (default: true) */
|
|
62
|
+
generateImpl?: boolean;
|
|
63
|
+
/** Root class to extend (default: BasicEObject) */
|
|
64
|
+
rootExtendsClass?: string;
|
|
65
|
+
/** Root interface to implement (default: EObject) */
|
|
66
|
+
rootExtendsInterface?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Default settings for all generated features
|
|
70
|
+
*/
|
|
71
|
+
export interface FeatureDefaults {
|
|
72
|
+
/** Generate notification in setters (default: true for EMF mode) */
|
|
73
|
+
notify?: boolean;
|
|
74
|
+
/** Property access mode (default: editable) */
|
|
75
|
+
property?: GenConfigPropertyMode;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Override settings for a specific EClass
|
|
79
|
+
*/
|
|
80
|
+
export interface ClassOverride {
|
|
81
|
+
/** Reference to the EClass */
|
|
82
|
+
ecoreClass: EClass;
|
|
83
|
+
/** Override: generate interface */
|
|
84
|
+
generateInterface?: boolean;
|
|
85
|
+
/** Override: generate implementation */
|
|
86
|
+
generateImpl?: boolean;
|
|
87
|
+
/** Custom extends class */
|
|
88
|
+
extendsClass?: string;
|
|
89
|
+
/** Additional interfaces to implement */
|
|
90
|
+
implementsInterfaces?: string[];
|
|
91
|
+
/** Per-feature overrides */
|
|
92
|
+
featureOverrides?: FeatureOverride[];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Override settings for a specific EStructuralFeature
|
|
96
|
+
*/
|
|
97
|
+
export interface FeatureOverride {
|
|
98
|
+
/** Reference to the EStructuralFeature */
|
|
99
|
+
ecoreFeature: EStructuralFeature;
|
|
100
|
+
/** Override: generate notification */
|
|
101
|
+
notify?: boolean;
|
|
102
|
+
/** Override: property access mode */
|
|
103
|
+
property?: GenConfigPropertyMode;
|
|
104
|
+
/** Custom getter body */
|
|
105
|
+
customGetter?: string;
|
|
106
|
+
/** Custom setter body */
|
|
107
|
+
customSetter?: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Create default generation settings
|
|
111
|
+
*/
|
|
112
|
+
export declare function createDefaultGenerationSettings(partial?: Partial<GenerationSettings>): GenerationSettings;
|
|
113
|
+
/**
|
|
114
|
+
* Create default package settings
|
|
115
|
+
*/
|
|
116
|
+
export declare function createDefaultPackageSettings(prefix: string, partial?: Partial<PackageSettings>): PackageSettings;
|
|
117
|
+
/**
|
|
118
|
+
* Create default class defaults
|
|
119
|
+
*/
|
|
120
|
+
export declare function createDefaultClassDefaults(partial?: Partial<ClassDefaults>): ClassDefaults;
|
|
121
|
+
/**
|
|
122
|
+
* Create default feature defaults
|
|
123
|
+
*/
|
|
124
|
+
export declare function createDefaultFeatureDefaults(mode: GenConfigMode, partial?: Partial<FeatureDefaults>): FeatureDefaults;
|
|
125
|
+
//# sourceMappingURL=GenConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenConfig.d.ts","sourceRoot":"","sources":["../../src/genconfig/GenConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create default generation settings
|
|
3
|
+
*/
|
|
4
|
+
export function createDefaultGenerationSettings(partial) {
|
|
5
|
+
return {
|
|
6
|
+
mode: 'emf',
|
|
7
|
+
outputDir: './generated',
|
|
8
|
+
fileExtension: '.ts',
|
|
9
|
+
...partial
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create default package settings
|
|
14
|
+
*/
|
|
15
|
+
export function createDefaultPackageSettings(prefix, partial) {
|
|
16
|
+
return {
|
|
17
|
+
prefix,
|
|
18
|
+
generateFactory: true,
|
|
19
|
+
generatePackage: true,
|
|
20
|
+
generateIndex: true,
|
|
21
|
+
...partial
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create default class defaults
|
|
26
|
+
*/
|
|
27
|
+
export function createDefaultClassDefaults(partial) {
|
|
28
|
+
return {
|
|
29
|
+
generateInterface: true,
|
|
30
|
+
generateImpl: true,
|
|
31
|
+
rootExtendsClass: 'BasicEObject',
|
|
32
|
+
rootExtendsInterface: 'EObject',
|
|
33
|
+
...partial
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create default feature defaults
|
|
38
|
+
*/
|
|
39
|
+
export function createDefaultFeatureDefaults(mode, partial) {
|
|
40
|
+
return {
|
|
41
|
+
notify: mode === 'emf',
|
|
42
|
+
property: 'editable',
|
|
43
|
+
...partial
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=GenConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenConfig.js","sourceRoot":"","sources":["../../src/genconfig/GenConfig.ts"],"names":[],"mappings":"AA+IA;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAqC;IACnF,OAAO;QACL,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,aAAa;QACxB,aAAa,EAAE,KAAK;QACpB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAc,EAAE,OAAkC;IAC7F,OAAO;QACL,MAAM;QACN,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgC;IACzE,OAAO;QACL,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;QAClB,gBAAgB,EAAE,cAAc;QAChC,oBAAoB,EAAE,SAAS;QAC/B,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAmB,EAAE,OAAkC;IAClG,OAAO;QACL,MAAM,EAAE,IAAI,KAAK,KAAK;QACtB,QAAQ,EAAE,UAAU;QACpB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC"}
|