@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,488 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { writeFile, mkdir } from 'fs/promises';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { getFeatureValue, getName } from '../util/EObjectHelper.js';
|
|
5
|
+
/**
|
|
6
|
+
* Generates TypeScript fetch clients from rest-api.ecore + XMI instance
|
|
7
|
+
*/
|
|
8
|
+
export class RestClientGenerator {
|
|
9
|
+
options;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Load the REST API metamodel and instance, then generate client code
|
|
15
|
+
*/
|
|
16
|
+
async generate(metamodelPath, instancePath) {
|
|
17
|
+
const model = await this.loadModel(metamodelPath, instancePath);
|
|
18
|
+
return this.generateFiles(model);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load and parse the XMI model into ApiModel
|
|
22
|
+
*/
|
|
23
|
+
async loadModel(metamodelPath, instancePath) {
|
|
24
|
+
const { BasicResourceSet, XMIResource, URI, getEcorePackage, ECORE_NS_URI } = await import('@emfts/core');
|
|
25
|
+
// Initialize
|
|
26
|
+
getEcorePackage();
|
|
27
|
+
// Create resource set
|
|
28
|
+
const resourceSet = new BasicResourceSet();
|
|
29
|
+
resourceSet.getPackageRegistry().set(ECORE_NS_URI, getEcorePackage());
|
|
30
|
+
// Load rest-api.ecore metamodel
|
|
31
|
+
const metamodelContent = await readFile(metamodelPath, 'utf-8');
|
|
32
|
+
const metamodelUri = URI.createURI(metamodelPath);
|
|
33
|
+
const metamodelResource = new XMIResource(metamodelUri);
|
|
34
|
+
metamodelResource.setResourceSet(resourceSet);
|
|
35
|
+
metamodelResource.loadFromString(metamodelContent);
|
|
36
|
+
const metamodelContents = metamodelResource.getContents();
|
|
37
|
+
if (metamodelContents.length === 0) {
|
|
38
|
+
throw new Error(`No content found in metamodel ${metamodelPath}`);
|
|
39
|
+
}
|
|
40
|
+
const restApiPackage = metamodelContents[0];
|
|
41
|
+
const nsURI = restApiPackage.getNsURI();
|
|
42
|
+
if (nsURI) {
|
|
43
|
+
resourceSet.getPackageRegistry().set(nsURI, restApiPackage);
|
|
44
|
+
}
|
|
45
|
+
if (this.options.verbose) {
|
|
46
|
+
console.log('Loaded REST API metamodel:', getName(restApiPackage), 'nsURI:', nsURI);
|
|
47
|
+
}
|
|
48
|
+
// Load nsc-api.xmi instance
|
|
49
|
+
const instanceContent = await readFile(instancePath, 'utf-8');
|
|
50
|
+
const instanceUri = URI.createURI(instancePath);
|
|
51
|
+
const instanceResource = new XMIResource(instanceUri);
|
|
52
|
+
instanceResource.setResourceSet(resourceSet);
|
|
53
|
+
instanceResource.loadFromString(instanceContent);
|
|
54
|
+
const instanceErrors = instanceResource.getErrors();
|
|
55
|
+
if (instanceErrors.length > 0) {
|
|
56
|
+
console.error('Errors loading API instance:', instanceErrors.map(e => e.message).join(', '));
|
|
57
|
+
}
|
|
58
|
+
const instanceContents = instanceResource.getContents();
|
|
59
|
+
if (instanceContents.length === 0) {
|
|
60
|
+
throw new Error(`No content found in instance ${instancePath}`);
|
|
61
|
+
}
|
|
62
|
+
const restApi = instanceContents[0];
|
|
63
|
+
if (this.options.verbose) {
|
|
64
|
+
const eClassName = getName(restApi.eClass());
|
|
65
|
+
console.log('Loaded API instance, root type:', eClassName);
|
|
66
|
+
}
|
|
67
|
+
// Extract model data from dynamic EObjects
|
|
68
|
+
return this.extractModel(restApi);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Extract ApiModel from dynamic EObject tree
|
|
72
|
+
*/
|
|
73
|
+
extractModel(restApi) {
|
|
74
|
+
const baseUrl = getFeatureValue(restApi, 'baseUrl') || '';
|
|
75
|
+
const resources = getFeatureValue(restApi, 'resources') || [];
|
|
76
|
+
const resourceModels = [];
|
|
77
|
+
for (const resource of resources) {
|
|
78
|
+
resourceModels.push(this.extractResource(resource));
|
|
79
|
+
}
|
|
80
|
+
return { baseUrl, resources: resourceModels };
|
|
81
|
+
}
|
|
82
|
+
extractResource(resource) {
|
|
83
|
+
const name = getFeatureValue(resource, 'name') || 'UnknownResource';
|
|
84
|
+
const path = getFeatureValue(resource, 'path') || '';
|
|
85
|
+
const endpoints = getFeatureValue(resource, 'endpoints') || [];
|
|
86
|
+
const endpointModels = [];
|
|
87
|
+
for (const endpoint of endpoints) {
|
|
88
|
+
endpointModels.push(this.extractEndpoint(endpoint));
|
|
89
|
+
}
|
|
90
|
+
return { name, path, endpoints: endpointModels };
|
|
91
|
+
}
|
|
92
|
+
extractEndpoint(endpoint) {
|
|
93
|
+
const method = getFeatureValue(endpoint, 'method');
|
|
94
|
+
// Enum value: could be the literal name or an object with getName()
|
|
95
|
+
let methodStr = 'GET';
|
|
96
|
+
if (method !== null && method !== undefined) {
|
|
97
|
+
if (typeof method === 'string') {
|
|
98
|
+
methodStr = method;
|
|
99
|
+
}
|
|
100
|
+
else if (typeof method === 'object' && method !== null) {
|
|
101
|
+
methodStr = getName(method) || String(method);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// Numeric enum value
|
|
105
|
+
const methodMap = { 0: 'GET', 1: 'POST', 2: 'PUT', 3: 'DELETE' };
|
|
106
|
+
methodStr = methodMap[Number(method)] || 'GET';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const parameters = getFeatureValue(endpoint, 'parameters') || [];
|
|
110
|
+
const paramModels = [];
|
|
111
|
+
for (const param of parameters) {
|
|
112
|
+
paramModels.push(this.extractParameter(param));
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
name: getFeatureValue(endpoint, 'name') || 'unknown',
|
|
116
|
+
path: getFeatureValue(endpoint, 'path') || '',
|
|
117
|
+
method: methodStr,
|
|
118
|
+
produces: getFeatureValue(endpoint, 'produces') || undefined,
|
|
119
|
+
consumes: getFeatureValue(endpoint, 'consumes') || undefined,
|
|
120
|
+
description: getFeatureValue(endpoint, 'description') || undefined,
|
|
121
|
+
responseType: getFeatureValue(endpoint, 'responseType') || undefined,
|
|
122
|
+
responseWrapper: getFeatureValue(endpoint, 'responseWrapper') || undefined,
|
|
123
|
+
parameters: paramModels,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
extractParameter(param) {
|
|
127
|
+
const paramType = getFeatureValue(param, 'paramType');
|
|
128
|
+
let paramTypeStr = 'PATH';
|
|
129
|
+
if (paramType !== null && paramType !== undefined) {
|
|
130
|
+
if (typeof paramType === 'string') {
|
|
131
|
+
paramTypeStr = paramType;
|
|
132
|
+
}
|
|
133
|
+
else if (typeof paramType === 'object' && paramType !== null) {
|
|
134
|
+
paramTypeStr = getName(paramType) || String(paramType);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const typeMap = { 0: 'PATH', 1: 'QUERY', 2: 'BODY' };
|
|
138
|
+
paramTypeStr = typeMap[Number(paramType)] || 'PATH';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
name: getFeatureValue(param, 'name') || 'unknown',
|
|
143
|
+
paramType: paramTypeStr,
|
|
144
|
+
dataType: getFeatureValue(param, 'dataType') || 'string',
|
|
145
|
+
required: getFeatureValue(param, 'required') === true,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Generate all TypeScript files
|
|
150
|
+
*/
|
|
151
|
+
async generateFiles(model) {
|
|
152
|
+
const files = [];
|
|
153
|
+
// Generate api-base.ts
|
|
154
|
+
files.push({
|
|
155
|
+
path: 'api-base.ts',
|
|
156
|
+
content: this.generateApiBase(),
|
|
157
|
+
});
|
|
158
|
+
// Generate per-resource API classes
|
|
159
|
+
for (const resource of model.resources) {
|
|
160
|
+
files.push({
|
|
161
|
+
path: `${resource.name}Api.ts`,
|
|
162
|
+
content: this.generateResourceApi(resource),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Generate index.ts barrel export
|
|
166
|
+
files.push({
|
|
167
|
+
path: 'index.ts',
|
|
168
|
+
content: this.generateIndex(model),
|
|
169
|
+
});
|
|
170
|
+
// Write files to disk
|
|
171
|
+
const writtenFiles = [];
|
|
172
|
+
for (const file of files) {
|
|
173
|
+
const fullPath = join(this.options.outputDir, file.path);
|
|
174
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
175
|
+
await writeFile(fullPath, file.content, 'utf-8');
|
|
176
|
+
writtenFiles.push(fullPath);
|
|
177
|
+
if (this.options.verbose) {
|
|
178
|
+
console.log(' Generated:', fullPath);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return writtenFiles;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Generate api-base.ts with shared utilities
|
|
185
|
+
*/
|
|
186
|
+
generateApiBase() {
|
|
187
|
+
return `/*
|
|
188
|
+
* This file was generated by emfts-codegen REST client generator.
|
|
189
|
+
* DO NOT EDIT - changes will be overwritten.
|
|
190
|
+
*
|
|
191
|
+
* @generated
|
|
192
|
+
*/
|
|
193
|
+
import { XMIResource, URI, BasicResourceSet, type EPackage, type EObject } from '@emfts/core'
|
|
194
|
+
|
|
195
|
+
export const BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:8080'
|
|
196
|
+
|
|
197
|
+
export class ApiError extends Error {
|
|
198
|
+
status: number
|
|
199
|
+
|
|
200
|
+
constructor(status: number, message: string) {
|
|
201
|
+
super(message)
|
|
202
|
+
this.name = 'ApiError'
|
|
203
|
+
this.status = status
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const registeredPackages: Map<string, EPackage> = new Map()
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Register an EPackage for XML deserialization.
|
|
211
|
+
* Call this once per model package before using the API clients.
|
|
212
|
+
*/
|
|
213
|
+
export function registerPackage(pkg: EPackage): void {
|
|
214
|
+
const nsURI = pkg.getNsURI()
|
|
215
|
+
if (nsURI) {
|
|
216
|
+
registeredPackages.set(nsURI, pkg)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function createResourceSet(): BasicResourceSet {
|
|
221
|
+
const rs = new BasicResourceSet()
|
|
222
|
+
for (const [nsURI, pkg] of registeredPackages) {
|
|
223
|
+
rs.getPackageRegistry().set(nsURI, pkg)
|
|
224
|
+
}
|
|
225
|
+
return rs
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Deserialize an XML/XMI string into a single EObject.
|
|
230
|
+
*/
|
|
231
|
+
export function deserializeXml(xml: string): EObject {
|
|
232
|
+
const rs = createResourceSet()
|
|
233
|
+
const resource = new XMIResource(URI.createURI('response.xml'))
|
|
234
|
+
resource.setResourceSet(rs)
|
|
235
|
+
resource.loadFromString(xml)
|
|
236
|
+
const contents = resource.getContents()
|
|
237
|
+
if (contents.size() === 0) {
|
|
238
|
+
throw new Error('Empty XML response')
|
|
239
|
+
}
|
|
240
|
+
return contents.get(0)
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Deserialize an XML/XMI string that contains a Response wrapper.
|
|
245
|
+
* Extracts the 'data' list from the wrapper.
|
|
246
|
+
*/
|
|
247
|
+
export function deserializeXmlList(xml: string): EObject[] {
|
|
248
|
+
const root = deserializeXml(xml)
|
|
249
|
+
const eClass = root.eClass()
|
|
250
|
+
const dataFeature = eClass.getEStructuralFeature('data')
|
|
251
|
+
if (dataFeature) {
|
|
252
|
+
const data = root.eGet(dataFeature)
|
|
253
|
+
return Array.isArray(data) ? data : data ? [data] : []
|
|
254
|
+
}
|
|
255
|
+
// If no 'data' feature, return root as single-element list
|
|
256
|
+
return [root]
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Serialize an EObject to XML/XMI string.
|
|
261
|
+
*/
|
|
262
|
+
export function serializeXml(eObject: EObject): string {
|
|
263
|
+
const resource = new XMIResource(URI.createURI('request.xml'))
|
|
264
|
+
resource.getContents().push(eObject)
|
|
265
|
+
return resource.saveToString()
|
|
266
|
+
}
|
|
267
|
+
`;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Generate a TypeScript API class for a REST resource
|
|
271
|
+
*/
|
|
272
|
+
generateResourceApi(resource) {
|
|
273
|
+
const lines = [];
|
|
274
|
+
// Header
|
|
275
|
+
lines.push(`/*`);
|
|
276
|
+
lines.push(` * This file was generated by emfts-codegen REST client generator.`);
|
|
277
|
+
lines.push(` * DO NOT EDIT - changes will be overwritten.`);
|
|
278
|
+
lines.push(` *`);
|
|
279
|
+
lines.push(` * @generated`);
|
|
280
|
+
lines.push(` */`);
|
|
281
|
+
lines.push(`import type { EObject } from '@emfts/core'`);
|
|
282
|
+
lines.push(`import { BASE_URL, ApiError, deserializeXml, deserializeXmlList, serializeXml } from './api-base.js'`);
|
|
283
|
+
lines.push(``);
|
|
284
|
+
// Class
|
|
285
|
+
lines.push(`export class ${resource.name}Api {`);
|
|
286
|
+
for (const endpoint of resource.endpoints) {
|
|
287
|
+
lines.push(``);
|
|
288
|
+
this.generateEndpointMethod(lines, resource, endpoint);
|
|
289
|
+
}
|
|
290
|
+
lines.push(`}`);
|
|
291
|
+
lines.push(``);
|
|
292
|
+
return lines.join('\n');
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Generate a single endpoint method
|
|
296
|
+
*/
|
|
297
|
+
generateEndpointMethod(lines, resource, endpoint) {
|
|
298
|
+
const pathParams = endpoint.parameters.filter(p => p.paramType === 'PATH');
|
|
299
|
+
const queryParams = endpoint.parameters.filter(p => p.paramType === 'QUERY');
|
|
300
|
+
const bodyParam = endpoint.parameters.find(p => p.paramType === 'BODY');
|
|
301
|
+
// Determine return type
|
|
302
|
+
const returnType = this.getReturnType(endpoint);
|
|
303
|
+
// Build method signature
|
|
304
|
+
const methodParams = this.buildMethodParams(pathParams, queryParams, bodyParam);
|
|
305
|
+
// JSDoc
|
|
306
|
+
if (endpoint.description) {
|
|
307
|
+
lines.push(` /**`);
|
|
308
|
+
lines.push(` * ${endpoint.description}`);
|
|
309
|
+
lines.push(` */`);
|
|
310
|
+
}
|
|
311
|
+
lines.push(` async ${endpoint.name}(${methodParams}): Promise<${returnType}> {`);
|
|
312
|
+
// Build URL
|
|
313
|
+
this.generateUrlConstruction(lines, resource, endpoint, pathParams, queryParams);
|
|
314
|
+
// Build fetch options
|
|
315
|
+
const needsOptions = endpoint.method !== 'GET' || bodyParam;
|
|
316
|
+
if (needsOptions) {
|
|
317
|
+
lines.push(` const options: RequestInit = {`);
|
|
318
|
+
lines.push(` method: '${endpoint.method}',`);
|
|
319
|
+
if (bodyParam || endpoint.consumes) {
|
|
320
|
+
const contentType = endpoint.consumes || 'application/json';
|
|
321
|
+
if (bodyParam && bodyParam.dataType === 'xml') {
|
|
322
|
+
lines.push(` headers: { 'Content-Type': '${contentType}' },`);
|
|
323
|
+
lines.push(` body: serializeXml(${bodyParam.name}),`);
|
|
324
|
+
}
|
|
325
|
+
else if (bodyParam && (bodyParam.dataType === 'Blob' || contentType === 'application/pdf')) {
|
|
326
|
+
lines.push(` headers: { 'Content-Type': '${contentType}' },`);
|
|
327
|
+
lines.push(` body: ${bodyParam.name},`);
|
|
328
|
+
}
|
|
329
|
+
else if (bodyParam) {
|
|
330
|
+
lines.push(` headers: { 'Content-Type': '${contentType}' },`);
|
|
331
|
+
lines.push(` body: ${bodyParam.name},`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
lines.push(` }`);
|
|
335
|
+
lines.push(` const response = await fetch(url, options)`);
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
lines.push(` const response = await fetch(url)`);
|
|
339
|
+
}
|
|
340
|
+
// Error handling
|
|
341
|
+
lines.push(` if (!response.ok) {`);
|
|
342
|
+
lines.push(` throw new ApiError(response.status, await response.text())`);
|
|
343
|
+
lines.push(` }`);
|
|
344
|
+
// Response handling
|
|
345
|
+
this.generateResponseHandling(lines, endpoint);
|
|
346
|
+
lines.push(` }`);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Generate URL construction code
|
|
350
|
+
*/
|
|
351
|
+
generateUrlConstruction(lines, resource, endpoint, pathParams, queryParams) {
|
|
352
|
+
// Build path with template literals
|
|
353
|
+
let fullPath = resource.path + endpoint.path;
|
|
354
|
+
// Replace {param} with ${encodeURIComponent(param)}
|
|
355
|
+
for (const param of pathParams) {
|
|
356
|
+
fullPath = fullPath.replace(`{${param.name}}`, `\${encodeURIComponent(${param.name})}`);
|
|
357
|
+
}
|
|
358
|
+
if (queryParams.length === 0) {
|
|
359
|
+
lines.push(` const url = \`\${BASE_URL}${fullPath}\``);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
lines.push(` const params = new URLSearchParams()`);
|
|
363
|
+
for (const param of queryParams) {
|
|
364
|
+
if (param.dataType === 'string[]') {
|
|
365
|
+
if (param.required) {
|
|
366
|
+
lines.push(` for (const v of ${param.name}) { params.append('${param.name}', v) }`);
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
lines.push(` if (${param.name}) { for (const v of ${param.name}) { params.append('${param.name}', v) } }`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
if (param.required) {
|
|
374
|
+
lines.push(` params.set('${param.name}', ${param.name})`);
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
lines.push(` if (${param.name} !== undefined) { params.set('${param.name}', ${param.name}) }`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
lines.push(` const query = params.toString()`);
|
|
382
|
+
lines.push(` const url = \`\${BASE_URL}${fullPath}\${query ? '?' + query : ''}\``);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Generate response handling code based on endpoint config
|
|
387
|
+
*/
|
|
388
|
+
generateResponseHandling(lines, endpoint) {
|
|
389
|
+
if (endpoint.produces === 'application/pdf') {
|
|
390
|
+
// Binary response
|
|
391
|
+
lines.push(` return response.blob()`);
|
|
392
|
+
}
|
|
393
|
+
else if (endpoint.responseWrapper) {
|
|
394
|
+
// Wrapped XML response (list)
|
|
395
|
+
lines.push(` if (response.status === 204) return []`);
|
|
396
|
+
lines.push(` const xml = await response.text()`);
|
|
397
|
+
lines.push(` return deserializeXmlList(xml)`);
|
|
398
|
+
}
|
|
399
|
+
else if (endpoint.responseType && endpoint.produces === 'application/xml') {
|
|
400
|
+
// Direct XML response
|
|
401
|
+
lines.push(` const xml = await response.text()`);
|
|
402
|
+
lines.push(` return deserializeXml(xml)`);
|
|
403
|
+
}
|
|
404
|
+
// else: void return, no body handling needed
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Build method parameter string
|
|
408
|
+
*/
|
|
409
|
+
buildMethodParams(pathParams, queryParams, bodyParam) {
|
|
410
|
+
const params = [];
|
|
411
|
+
for (const p of pathParams) {
|
|
412
|
+
params.push(`${p.name}: ${this.mapDataType(p.dataType)}`);
|
|
413
|
+
}
|
|
414
|
+
for (const p of queryParams) {
|
|
415
|
+
const tsType = this.mapDataType(p.dataType);
|
|
416
|
+
if (p.required) {
|
|
417
|
+
params.push(`${p.name}: ${tsType}`);
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
params.push(`${p.name}?: ${tsType}`);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if (bodyParam) {
|
|
424
|
+
const tsType = this.mapBodyType(bodyParam, undefined);
|
|
425
|
+
params.push(`${bodyParam.name}: ${tsType}`);
|
|
426
|
+
}
|
|
427
|
+
return params.join(', ');
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Determine the TypeScript return type for an endpoint
|
|
431
|
+
*/
|
|
432
|
+
getReturnType(endpoint) {
|
|
433
|
+
if (endpoint.produces === 'application/pdf') {
|
|
434
|
+
return 'Blob';
|
|
435
|
+
}
|
|
436
|
+
if (endpoint.responseWrapper) {
|
|
437
|
+
return 'EObject[]';
|
|
438
|
+
}
|
|
439
|
+
if (endpoint.responseType && endpoint.produces === 'application/xml') {
|
|
440
|
+
return 'EObject';
|
|
441
|
+
}
|
|
442
|
+
return 'void';
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Map data type string to TypeScript type
|
|
446
|
+
*/
|
|
447
|
+
mapDataType(dataType) {
|
|
448
|
+
switch (dataType) {
|
|
449
|
+
case 'string': return 'string';
|
|
450
|
+
case 'string[]': return 'string[]';
|
|
451
|
+
case 'number': return 'number';
|
|
452
|
+
case 'boolean': return 'boolean';
|
|
453
|
+
case 'Blob': return 'Blob';
|
|
454
|
+
default: return 'string';
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Map body parameter type
|
|
459
|
+
*/
|
|
460
|
+
mapBodyType(param, consumes) {
|
|
461
|
+
if (param.dataType === 'Blob' || param.dataType === 'File') {
|
|
462
|
+
return 'Blob';
|
|
463
|
+
}
|
|
464
|
+
if (param.dataType === 'xml') {
|
|
465
|
+
return 'EObject';
|
|
466
|
+
}
|
|
467
|
+
return 'unknown';
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Generate barrel export index.ts
|
|
471
|
+
*/
|
|
472
|
+
generateIndex(model) {
|
|
473
|
+
const lines = [];
|
|
474
|
+
lines.push(`/*`);
|
|
475
|
+
lines.push(` * This file was generated by emfts-codegen REST client generator.`);
|
|
476
|
+
lines.push(` * DO NOT EDIT - changes will be overwritten.`);
|
|
477
|
+
lines.push(` *`);
|
|
478
|
+
lines.push(` * @generated`);
|
|
479
|
+
lines.push(` */`);
|
|
480
|
+
lines.push(`export { BASE_URL, ApiError, registerPackage, deserializeXml, deserializeXmlList, serializeXml } from './api-base.js'`);
|
|
481
|
+
for (const resource of model.resources) {
|
|
482
|
+
lines.push(`export { ${resource.name}Api } from './${resource.name}Api.js'`);
|
|
483
|
+
}
|
|
484
|
+
lines.push(``);
|
|
485
|
+
return lines.join('\n');
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=RestClientGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RestClientGenerator.js","sourceRoot":"","sources":["../../src/generator/RestClientGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { EClassifier, EStructuralFeature, EAttribute, EReference, EGenericType } from '@emfts/core';
|
|
2
|
+
/**
|
|
3
|
+
* Maps Ecore types to TypeScript types
|
|
4
|
+
*/
|
|
5
|
+
export declare class TypeMapper {
|
|
6
|
+
private customMappings;
|
|
7
|
+
constructor();
|
|
8
|
+
private initDefaultMappings;
|
|
9
|
+
/**
|
|
10
|
+
* Add a custom type mapping
|
|
11
|
+
*/
|
|
12
|
+
addMapping(ecoreName: string, tsType: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Map an EClassifier to TypeScript type
|
|
15
|
+
*/
|
|
16
|
+
mapClassifier(classifier: EClassifier | null): string;
|
|
17
|
+
/**
|
|
18
|
+
* Map an EStructuralFeature to TypeScript type string
|
|
19
|
+
*/
|
|
20
|
+
mapFeature(feature: EStructuralFeature): string;
|
|
21
|
+
/**
|
|
22
|
+
* Map the base type of a feature (without array wrapper)
|
|
23
|
+
*/
|
|
24
|
+
mapFeatureBaseType(feature: EStructuralFeature): string;
|
|
25
|
+
/**
|
|
26
|
+
* Map an EGenericType to TypeScript type string
|
|
27
|
+
*/
|
|
28
|
+
mapGenericType(genericType: EGenericType): string;
|
|
29
|
+
/**
|
|
30
|
+
* Get the default value for a type
|
|
31
|
+
*/
|
|
32
|
+
getDefaultValue(feature: EStructuralFeature): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Convert a default value literal to TypeScript
|
|
35
|
+
*/
|
|
36
|
+
private convertDefaultValue;
|
|
37
|
+
/**
|
|
38
|
+
* Get default value for a TypeScript type
|
|
39
|
+
*/
|
|
40
|
+
private getTypeDefault;
|
|
41
|
+
/**
|
|
42
|
+
* Check if a classifier is an EEnum
|
|
43
|
+
*/
|
|
44
|
+
isEEnum(classifier: EClassifier): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Check if a classifier is an EClass
|
|
47
|
+
*/
|
|
48
|
+
isEClass(classifier: EClassifier): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Check if a classifier is an EDataType
|
|
51
|
+
*/
|
|
52
|
+
isEDataType(classifier: EClassifier): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Check if a feature is an attribute
|
|
55
|
+
*/
|
|
56
|
+
isAttribute(feature: EStructuralFeature): feature is EAttribute;
|
|
57
|
+
/**
|
|
58
|
+
* Check if a feature is a reference
|
|
59
|
+
*/
|
|
60
|
+
isReference(feature: EStructuralFeature): feature is EReference;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=TypeMapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeMapper.d.ts","sourceRoot":"","sources":["../../src/generator/TypeMapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA4B,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnI;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAkC;;IAMxD,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAInD;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM;IAmBrD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM;IAU/C;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM;IAMvD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,YAAY,GAAG,MAAM;IAuBjD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAqB3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO;IAUzC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO;IAU1C;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO;IAU7C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,IAAI,UAAU;IAI/D;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,IAAI,UAAU;CAGhE"}
|