@rexeus/typeweaver-gen 0.8.0 → 0.9.0
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 +58 -29
- package/dist/index.cjs +409 -153
- package/dist/index.d.cts +196 -149
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +196 -149
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +386 -139
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,56 +1,103 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HttpBodySchema, HttpHeaderSchema, HttpMethod, HttpParamSchema, HttpQuerySchema, HttpStatusCode, SpecDefinition } from "@rexeus/typeweaver-core";
|
|
2
2
|
|
|
3
|
-
//#region src/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
//#region src/errors/DerivedResponseCycleError.d.ts
|
|
4
|
+
declare class DerivedResponseCycleError extends Error {
|
|
5
|
+
constructor(responseName: string);
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/errors/DuplicateOperationIdError.d.ts
|
|
9
|
+
declare class DuplicateOperationIdError extends Error {
|
|
10
|
+
constructor(operationId: string);
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/errors/DuplicateRouteError.d.ts
|
|
14
|
+
declare class DuplicateRouteError extends Error {
|
|
15
|
+
constructor(method: string, path: string, normalizedPath: string);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/errors/EmptyOperationResponsesError.d.ts
|
|
19
|
+
declare class EmptyOperationResponsesError extends Error {
|
|
20
|
+
constructor(operationId: string);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/errors/EmptyResourceOperationsError.d.ts
|
|
24
|
+
declare class EmptyResourceOperationsError extends Error {
|
|
25
|
+
constructor(resourceName: string);
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/errors/EmptySpecResourcesError.d.ts
|
|
29
|
+
declare class EmptySpecResourcesError extends Error {
|
|
30
|
+
constructor();
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/errors/InvalidDerivedResponseError.d.ts
|
|
34
|
+
declare class InvalidDerivedResponseError extends Error {
|
|
35
|
+
constructor(responseName: string);
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/NormalizedSpec.d.ts
|
|
39
|
+
type NormalizedSpec = {
|
|
40
|
+
readonly resources: readonly NormalizedResource[];
|
|
41
|
+
readonly responses: readonly NormalizedResponse[];
|
|
7
42
|
};
|
|
8
|
-
type
|
|
9
|
-
|
|
10
|
-
|
|
43
|
+
type NormalizedResource = {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly operations: readonly NormalizedOperation[];
|
|
11
46
|
};
|
|
12
|
-
type
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
outputDir: string;
|
|
21
|
-
entityName: EntityName;
|
|
22
|
-
outputRequestFile: string;
|
|
23
|
-
outputRequestFileName: string;
|
|
24
|
-
outputResponseFile: string;
|
|
25
|
-
outputResponseFileName: string;
|
|
26
|
-
outputRequestValidationFile: string;
|
|
27
|
-
outputRequestValidationFileName: string;
|
|
28
|
-
outputResponseValidationFile: string;
|
|
29
|
-
outputResponseValidationFileName: string;
|
|
30
|
-
outputClientFile: string;
|
|
31
|
-
outputClientFileName: string;
|
|
47
|
+
type NormalizedOperation = {
|
|
48
|
+
readonly operationId: string;
|
|
49
|
+
readonly method: HttpMethod;
|
|
50
|
+
readonly path: string;
|
|
51
|
+
readonly summary: string;
|
|
52
|
+
readonly request?: NormalizedRequest;
|
|
53
|
+
readonly responses: readonly NormalizedResponseUsage[];
|
|
32
54
|
};
|
|
33
|
-
type
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
sourceDir: string;
|
|
39
|
-
sourceFile: string;
|
|
40
|
-
sourceFileName: string;
|
|
41
|
-
outputFile: string;
|
|
42
|
-
outputFileName: string;
|
|
43
|
-
outputDir: string;
|
|
55
|
+
type NormalizedRequest = {
|
|
56
|
+
readonly header?: HttpHeaderSchema;
|
|
57
|
+
readonly param?: HttpParamSchema;
|
|
58
|
+
readonly query?: HttpQuerySchema;
|
|
59
|
+
readonly body?: HttpBodySchema;
|
|
44
60
|
};
|
|
45
|
-
type
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
type NormalizedResponse = {
|
|
62
|
+
readonly name: string;
|
|
63
|
+
readonly statusCode: HttpStatusCode;
|
|
64
|
+
readonly statusCodeName: string;
|
|
65
|
+
readonly description: string;
|
|
66
|
+
readonly header?: HttpHeaderSchema;
|
|
67
|
+
readonly body?: HttpBodySchema;
|
|
68
|
+
readonly kind: "response" | "derived-response";
|
|
69
|
+
readonly derivedFrom?: string;
|
|
70
|
+
readonly lineage?: readonly string[];
|
|
71
|
+
readonly depth?: number;
|
|
53
72
|
};
|
|
73
|
+
type NormalizedCanonicalResponseUsage = {
|
|
74
|
+
readonly responseName: string;
|
|
75
|
+
readonly source: "canonical";
|
|
76
|
+
};
|
|
77
|
+
type NormalizedInlineResponseUsage = {
|
|
78
|
+
readonly responseName: string;
|
|
79
|
+
readonly source: "inline";
|
|
80
|
+
readonly response: NormalizedResponse;
|
|
81
|
+
};
|
|
82
|
+
type NormalizedResponseUsage = NormalizedCanonicalResponseUsage | NormalizedInlineResponseUsage;
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/errors/InvalidRequestSchemaError.d.ts
|
|
85
|
+
declare class InvalidRequestSchemaError extends Error {
|
|
86
|
+
constructor(operationId: string, requestPart: keyof NormalizedRequest);
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/errors/MissingDerivedResponseParentError.d.ts
|
|
90
|
+
declare class MissingDerivedResponseParentError extends Error {
|
|
91
|
+
constructor(responseName: string, parentName: string);
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/errors/PathParameterMismatchError.d.ts
|
|
95
|
+
declare class PathParameterMismatchError extends Error {
|
|
96
|
+
constructor(operationId: string, path: string, pathParams: readonly string[], requestParams: readonly string[]);
|
|
97
|
+
}
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/normalizeSpec.d.ts
|
|
100
|
+
declare const normalizeSpec: (definition: SpecDefinition) => NormalizedSpec;
|
|
54
101
|
//#endregion
|
|
55
102
|
//#region src/plugins/types.d.ts
|
|
56
103
|
/**
|
|
@@ -61,27 +108,60 @@ type PluginConfig = Record<string, unknown>;
|
|
|
61
108
|
* Context provided to plugins during initialization and finalization
|
|
62
109
|
*/
|
|
63
110
|
type PluginContext = {
|
|
64
|
-
outputDir: string;
|
|
65
|
-
inputDir: string;
|
|
66
|
-
config: PluginConfig;
|
|
111
|
+
readonly outputDir: string;
|
|
112
|
+
readonly inputDir: string;
|
|
113
|
+
readonly config: PluginConfig;
|
|
114
|
+
};
|
|
115
|
+
type OperationOutputPaths = {
|
|
116
|
+
readonly outputDir: string;
|
|
117
|
+
readonly requestFile: string;
|
|
118
|
+
readonly requestFileName: string;
|
|
119
|
+
readonly responseFile: string;
|
|
120
|
+
readonly responseFileName: string;
|
|
121
|
+
readonly requestValidationFile: string;
|
|
122
|
+
readonly requestValidationFileName: string;
|
|
123
|
+
readonly responseValidationFile: string;
|
|
124
|
+
readonly responseValidationFileName: string;
|
|
125
|
+
readonly clientFile: string;
|
|
126
|
+
readonly clientFileName: string;
|
|
67
127
|
};
|
|
68
128
|
/**
|
|
69
129
|
* Context provided to plugins during generation
|
|
70
130
|
*/
|
|
71
131
|
type GeneratorContext = PluginContext & {
|
|
72
|
-
|
|
73
|
-
templateDir: string;
|
|
74
|
-
coreDir: string;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
132
|
+
readonly normalizedSpec: NormalizedSpec;
|
|
133
|
+
readonly templateDir: string;
|
|
134
|
+
readonly coreDir: string;
|
|
135
|
+
readonly responsesOutputDir: string;
|
|
136
|
+
readonly specOutputDir: string;
|
|
137
|
+
readonly getCanonicalResponse: (responseName: string) => NormalizedResponse;
|
|
138
|
+
readonly getCanonicalResponseOutputFile: (responseName: string) => string;
|
|
139
|
+
readonly getCanonicalResponseImportPath: (params: {
|
|
140
|
+
readonly importerDir: string;
|
|
141
|
+
readonly responseName: string;
|
|
142
|
+
}) => string;
|
|
143
|
+
readonly getSpecImportPath: (params: {
|
|
144
|
+
readonly importerDir: string;
|
|
145
|
+
}) => string;
|
|
146
|
+
readonly getOperationDefinitionAccessor: (params: {
|
|
147
|
+
readonly resourceName: string;
|
|
148
|
+
readonly operationId: string;
|
|
149
|
+
}) => string;
|
|
150
|
+
readonly getOperationOutputPaths: (params: {
|
|
151
|
+
readonly resourceName: string;
|
|
152
|
+
readonly operationId: string;
|
|
153
|
+
}) => OperationOutputPaths;
|
|
154
|
+
readonly getResourceOutputDir: (resourceName: string) => string;
|
|
155
|
+
readonly writeFile: (relativePath: string, content: string) => void;
|
|
156
|
+
readonly renderTemplate: (templatePath: string, data: unknown) => string;
|
|
157
|
+
readonly addGeneratedFile: (relativePath: string) => void;
|
|
158
|
+
readonly getGeneratedFiles: () => string[];
|
|
79
159
|
};
|
|
80
160
|
/**
|
|
81
161
|
* Plugin metadata
|
|
82
162
|
*/
|
|
83
163
|
type PluginMetadata = {
|
|
84
|
-
name: string;
|
|
164
|
+
readonly name: string;
|
|
85
165
|
};
|
|
86
166
|
/**
|
|
87
167
|
* typeweaver plugin interface
|
|
@@ -96,7 +176,7 @@ type TypeweaverPlugin = PluginMetadata & {
|
|
|
96
176
|
* Collect and transform resources
|
|
97
177
|
* Allows plugins to modify the resource collection
|
|
98
178
|
*/
|
|
99
|
-
collectResources?(
|
|
179
|
+
collectResources?(normalizedSpec: NormalizedSpec): Promise<NormalizedSpec> | NormalizedSpec;
|
|
100
180
|
/**
|
|
101
181
|
* Main generation logic
|
|
102
182
|
* Called with all resources and utilities
|
|
@@ -132,7 +212,6 @@ type PluginRegistration = {
|
|
|
132
212
|
type TypeweaverConfig = {
|
|
133
213
|
input: string;
|
|
134
214
|
output: string;
|
|
135
|
-
shared?: string;
|
|
136
215
|
plugins?: (string | [string, PluginConfig])[];
|
|
137
216
|
format?: boolean;
|
|
138
217
|
clean?: boolean;
|
|
@@ -172,7 +251,7 @@ declare abstract class BasePlugin implements TypeweaverPlugin {
|
|
|
172
251
|
/**
|
|
173
252
|
* Default implementation - override in subclasses if needed
|
|
174
253
|
*/
|
|
175
|
-
collectResources(
|
|
254
|
+
collectResources(normalizedSpec: NormalizedSpec): NormalizedSpec;
|
|
176
255
|
/**
|
|
177
256
|
* Main generation logic - must be implemented by subclasses
|
|
178
257
|
*/
|
|
@@ -184,98 +263,66 @@ declare abstract class BasePlugin implements TypeweaverPlugin {
|
|
|
184
263
|
protected copyLibFiles(context: GeneratorContext, libSourceDir: string, libNamespace: string): void;
|
|
185
264
|
}
|
|
186
265
|
//#endregion
|
|
187
|
-
//#region src/plugins/
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
protected renderTemplate(templatePath: string, data: unknown): string;
|
|
197
|
-
/**
|
|
198
|
-
* Write a file relative to the output directory
|
|
199
|
-
*/
|
|
200
|
-
protected writeFile(context: GeneratorContext, relativePath: string, content: string): void;
|
|
201
|
-
/**
|
|
202
|
-
* Ensure a directory exists
|
|
203
|
-
*/
|
|
204
|
-
protected ensureDir(context: GeneratorContext, relativePath: string): void;
|
|
205
|
-
/**
|
|
206
|
-
* Get the template path for this plugin
|
|
207
|
-
*/
|
|
208
|
-
protected getTemplatePath(context: GeneratorContext, templateName: string): string;
|
|
209
|
-
}
|
|
210
|
-
//#endregion
|
|
211
|
-
//#region src/plugins/PluginRegistry.d.ts
|
|
212
|
-
/**
|
|
213
|
-
* Registry for managing typeweaver plugins
|
|
214
|
-
*/
|
|
215
|
-
declare class PluginRegistry {
|
|
216
|
-
private plugins;
|
|
217
|
-
constructor();
|
|
218
|
-
/**
|
|
219
|
-
* Register a plugin
|
|
220
|
-
*/
|
|
221
|
-
register(plugin: TypeweaverPlugin, config?: unknown): void;
|
|
222
|
-
/**
|
|
223
|
-
* Get a registered plugin
|
|
224
|
-
*/
|
|
225
|
-
get(name: string): PluginRegistration | undefined;
|
|
226
|
-
/**
|
|
227
|
-
* Get all registered plugins
|
|
228
|
-
*/
|
|
229
|
-
getAll(): PluginRegistration[];
|
|
230
|
-
/**
|
|
231
|
-
* Check if a plugin is registered
|
|
232
|
-
*/
|
|
233
|
-
has(name: string): boolean;
|
|
234
|
-
/**
|
|
235
|
-
* Clear all registered plugins (except required ones)
|
|
236
|
-
*/
|
|
237
|
-
clear(): void;
|
|
238
|
-
}
|
|
266
|
+
//#region src/plugins/pluginRegistry.d.ts
|
|
267
|
+
type PluginRegistryApi = {
|
|
268
|
+
readonly register: (plugin: TypeweaverPlugin, config?: unknown) => void;
|
|
269
|
+
readonly get: (name: string) => PluginRegistration | undefined;
|
|
270
|
+
readonly getAll: () => PluginRegistration[];
|
|
271
|
+
readonly has: (name: string) => boolean;
|
|
272
|
+
readonly clear: () => void;
|
|
273
|
+
};
|
|
274
|
+
declare function createPluginRegistry(): PluginRegistryApi;
|
|
239
275
|
//#endregion
|
|
240
|
-
//#region src/plugins/
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
*/
|
|
244
|
-
declare class PluginContextBuilder {
|
|
245
|
-
private generatedFiles;
|
|
246
|
-
/**
|
|
247
|
-
* Create a basic plugin context
|
|
248
|
-
*/
|
|
249
|
-
createPluginContext(params: {
|
|
276
|
+
//#region src/plugins/pluginContext.d.ts
|
|
277
|
+
type PluginContextBuilderApi = {
|
|
278
|
+
readonly createPluginContext: (params: {
|
|
250
279
|
outputDir: string;
|
|
251
280
|
inputDir: string;
|
|
252
281
|
config: PluginConfig;
|
|
253
|
-
})
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
getGeneratedFiles(): string[];
|
|
269
|
-
/**
|
|
270
|
-
* Clear generated files tracking
|
|
271
|
-
*/
|
|
272
|
-
clearGeneratedFiles(): void;
|
|
273
|
-
}
|
|
282
|
+
}) => PluginContext;
|
|
283
|
+
readonly createGeneratorContext: (params: {
|
|
284
|
+
readonly outputDir: string;
|
|
285
|
+
readonly inputDir: string;
|
|
286
|
+
readonly config: PluginConfig;
|
|
287
|
+
readonly normalizedSpec: NormalizedSpec;
|
|
288
|
+
readonly templateDir: string;
|
|
289
|
+
readonly coreDir: string;
|
|
290
|
+
readonly responsesOutputDir: string;
|
|
291
|
+
readonly specOutputDir: string;
|
|
292
|
+
}) => GeneratorContext;
|
|
293
|
+
readonly getGeneratedFiles: () => string[];
|
|
294
|
+
readonly clearGeneratedFiles: () => void;
|
|
295
|
+
};
|
|
296
|
+
declare function createPluginContextBuilder(): PluginContextBuilderApi;
|
|
274
297
|
//#endregion
|
|
275
|
-
//#region src/helpers/
|
|
276
|
-
declare
|
|
277
|
-
|
|
278
|
-
|
|
298
|
+
//#region src/helpers/path.d.ts
|
|
299
|
+
declare function relative(from: string, to: string): string;
|
|
300
|
+
//#endregion
|
|
301
|
+
//#region src/helpers/routePath.d.ts
|
|
302
|
+
declare const normalizeRoutePath: (path: string) => string;
|
|
303
|
+
declare const getPathParameterNames: (path: string) => string[];
|
|
304
|
+
//#endregion
|
|
305
|
+
//#region src/helpers/routeSort.d.ts
|
|
306
|
+
/**
|
|
307
|
+
* Returns the sort priority for an HTTP method.
|
|
308
|
+
* Unrecognized methods default to priority 999.
|
|
309
|
+
*/
|
|
310
|
+
declare const getMethodPriority: (method: string) => number;
|
|
311
|
+
/**
|
|
312
|
+
* Compares two routes for ordering.
|
|
313
|
+
* Routes are sorted by:
|
|
314
|
+
* 1. Path depth (shallow to deep)
|
|
315
|
+
* 2. Static segments before parameters
|
|
316
|
+
* 3. Alphabetical within same segment type
|
|
317
|
+
* 4. HTTP method priority
|
|
318
|
+
*/
|
|
319
|
+
declare const compareRoutes: (a: {
|
|
320
|
+
method: string;
|
|
321
|
+
path: string;
|
|
322
|
+
}, b: {
|
|
323
|
+
method: string;
|
|
324
|
+
path: string;
|
|
325
|
+
}) => number;
|
|
279
326
|
//#endregion
|
|
280
|
-
export { BasePlugin,
|
|
327
|
+
export { BasePlugin, DerivedResponseCycleError, DuplicateOperationIdError, DuplicateRouteError, EmptyOperationResponsesError, EmptyResourceOperationsError, EmptySpecResourcesError, GeneratorContext, InvalidDerivedResponseError, InvalidRequestSchemaError, MissingDerivedResponseParentError, NormalizedCanonicalResponseUsage, NormalizedInlineResponseUsage, NormalizedOperation, NormalizedRequest, NormalizedResource, NormalizedResponse, NormalizedResponseUsage, NormalizedSpec, OperationOutputPaths, PathParameterMismatchError, PluginConfig, PluginConstructor, PluginContext, type PluginContextBuilderApi, PluginDependencyError, PluginLoadError, PluginMetadata, PluginModule, PluginRegistration, type PluginRegistryApi, TypeweaverConfig, TypeweaverPlugin, compareRoutes, createPluginContextBuilder, createPluginRegistry, getMethodPriority, getPathParameterNames, normalizeRoutePath, normalizeSpec, relative };
|
|
281
328
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors/DerivedResponseCycleError.ts","../src/errors/DuplicateOperationIdError.ts","../src/errors/DuplicateRouteError.ts","../src/errors/EmptyOperationResponsesError.ts","../src/errors/EmptyResourceOperationsError.ts","../src/errors/EmptySpecResourcesError.ts","../src/errors/InvalidDerivedResponseError.ts","../src/NormalizedSpec.ts","../src/errors/InvalidRequestSchemaError.ts","../src/errors/MissingDerivedResponseParentError.ts","../src/errors/PathParameterMismatchError.ts","../src/normalizeSpec.ts","../src/plugins/types.ts","../src/plugins/BasePlugin.ts","../src/plugins/pluginRegistry.ts","../src/plugins/pluginContext.ts","../src/helpers/path.ts","../src/helpers/routePath.ts","../src/helpers/routeSort.ts"],"mappings":"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"}
|