@skmtc/core 0.0.799 → 0.0.802
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/esm/context/CoreContext.d.ts +0 -3
- package/esm/context/CoreContext.d.ts.map +1 -1
- package/esm/context/CoreContext.js +12 -17
- package/esm/context/GenerateContext.d.ts +35 -3
- package/esm/context/GenerateContext.d.ts.map +1 -1
- package/esm/context/GenerateContext.js +21 -1
- package/esm/context/ParseContext.d.ts +64 -3
- package/esm/context/ParseContext.d.ts.map +1 -1
- package/esm/context/ParseContext.js +61 -0
- package/esm/context/RenderContext.d.ts +151 -2
- package/esm/context/RenderContext.d.ts.map +1 -1
- package/esm/context/RenderContext.js +185 -11
- package/esm/context/ResultsHandler.d.ts +10 -3
- package/esm/context/ResultsHandler.d.ts.map +1 -1
- package/esm/context/types.d.ts +30 -0
- package/esm/context/types.d.ts.map +1 -1
- package/esm/dsl/model/ModelBase.d.ts +1 -1
- package/esm/dsl/model/ModelBase.d.ts.map +1 -1
- package/esm/dsl/model/ModelDriver.d.ts +62 -0
- package/esm/dsl/model/ModelDriver.d.ts.map +1 -1
- package/esm/dsl/model/ModelDriver.js +63 -1
- package/esm/dsl/model/toModelBase.d.ts +66 -0
- package/esm/dsl/model/toModelBase.d.ts.map +1 -1
- package/esm/dsl/model/toModelBase.js +46 -0
- package/esm/dsl/model/toModelEntry.d.ts +63 -0
- package/esm/dsl/model/toModelEntry.d.ts.map +1 -1
- package/esm/dsl/model/toModelEntry.js +63 -0
- package/esm/dsl/model/types.d.ts +51 -4
- package/esm/dsl/model/types.d.ts.map +1 -1
- package/esm/dsl/operation/OperationBase.d.ts +3 -3
- package/esm/dsl/operation/OperationBase.d.ts.map +1 -1
- package/esm/dsl/operation/OperationDriver.d.ts +48 -0
- package/esm/dsl/operation/OperationDriver.d.ts.map +1 -1
- package/esm/dsl/operation/OperationDriver.js +49 -1
- package/esm/dsl/operation/types.d.ts +61 -3
- package/esm/dsl/operation/types.d.ts.map +1 -1
- package/esm/helpers/isEmpty.d.ts +1 -1
- package/esm/helpers/isEmpty.d.ts.map +1 -1
- package/esm/helpers/tracer.d.ts +1 -1
- package/esm/helpers/tracer.d.ts.map +1 -1
- package/esm/helpers/tracer.js +1 -1
- package/esm/mod.d.ts +51 -0
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +51 -0
- package/esm/oas/array/array-types.d.ts +20 -11
- package/esm/oas/array/array-types.d.ts.map +1 -1
- package/esm/oas/array/array-types.js +10 -0
- package/esm/oas/array/toArray.d.ts +111 -0
- package/esm/oas/array/toArray.d.ts.map +1 -1
- package/esm/oas/array/toArray.js +115 -3
- package/esm/oas/boolean/boolean-types.d.ts +1 -7
- package/esm/oas/boolean/boolean-types.d.ts.map +1 -1
- package/esm/oas/components/components-types.d.ts +19 -0
- package/esm/oas/components/components-types.d.ts.map +1 -0
- package/esm/oas/components/components-types.js +21 -0
- package/esm/oas/contact/contact-types.d.ts +9 -0
- package/esm/oas/contact/contact-types.d.ts.map +1 -0
- package/esm/oas/contact/contact-types.js +7 -0
- package/esm/oas/discriminator/discriminator-types.d.ts +1 -5
- package/esm/oas/discriminator/discriminator-types.d.ts.map +1 -1
- package/esm/oas/document/document-types.d.ts +16 -0
- package/esm/oas/document/document-types.d.ts.map +1 -0
- package/esm/oas/document/document-types.js +18 -0
- package/esm/oas/example/example-types.d.ts +1 -6
- package/esm/oas/example/example-types.d.ts.map +1 -1
- package/esm/oas/header/header-types.d.ts +50 -0
- package/esm/oas/header/header-types.d.ts.map +1 -0
- package/esm/oas/header/header-types.js +30 -0
- package/esm/oas/info/info-types.d.ts +14 -0
- package/esm/oas/info/info-types.d.ts.map +1 -0
- package/esm/oas/info/info-types.js +13 -0
- package/esm/oas/integer/integer-types.d.ts +3 -17
- package/esm/oas/integer/integer-types.d.ts.map +1 -1
- package/esm/oas/license/license-types.d.ts +9 -0
- package/esm/oas/license/license-types.d.ts.map +1 -0
- package/esm/oas/license/license-types.js +7 -0
- package/esm/oas/mediaType/mediaType-types.d.ts +1 -11
- package/esm/oas/mediaType/mediaType-types.d.ts.map +1 -1
- package/esm/oas/number/number-types.d.ts +2 -16
- package/esm/oas/number/number-types.d.ts.map +1 -1
- package/esm/oas/operation/Operation.d.ts +47 -2
- package/esm/oas/operation/Operation.d.ts.map +1 -1
- package/esm/oas/operation/Operation.js +43 -0
- package/esm/oas/operation/operation-types.d.ts +22 -0
- package/esm/oas/operation/operation-types.d.ts.map +1 -0
- package/esm/oas/operation/operation-types.js +35 -0
- package/esm/oas/parameter/parameter-types.d.ts +3 -58
- package/esm/oas/parameter/parameter-types.d.ts.map +1 -1
- package/esm/oas/pathItem/pathItem-types.d.ts +12 -0
- package/esm/oas/pathItem/pathItem-types.d.ts.map +1 -0
- package/esm/oas/pathItem/pathItem-types.js +12 -0
- package/esm/oas/ref/Ref.d.ts +49 -2
- package/esm/oas/ref/Ref.d.ts.map +1 -1
- package/esm/oas/ref/Ref.js +28 -0
- package/esm/oas/requestBody/requestBody-types.d.ts +10 -0
- package/esm/oas/requestBody/requestBody-types.d.ts.map +1 -0
- package/esm/oas/requestBody/requestBody-types.js +9 -0
- package/esm/oas/response/response-types.d.ts +12 -0
- package/esm/oas/response/response-types.d.ts.map +1 -0
- package/esm/oas/response/response-types.js +11 -0
- package/esm/oas/schema/toSchemasV3.js +2 -2
- package/esm/oas/server/toServerV3.d.ts.map +1 -1
- package/esm/oas/string/string-types.d.ts +2 -29
- package/esm/oas/string/string-types.d.ts.map +1 -1
- package/esm/oas/string/toString.d.ts +125 -1
- package/esm/oas/string/toString.d.ts.map +1 -1
- package/esm/oas/string/toString.js +119 -0
- package/esm/oas/tag/tag-types.d.ts +8 -0
- package/esm/oas/tag/tag-types.d.ts.map +1 -0
- package/esm/oas/tag/tag-types.js +8 -0
- package/esm/oas/union/union-types.d.ts +1 -12
- package/esm/oas/union/union-types.d.ts.map +1 -1
- package/esm/oas/unknown/unknown-types.d.ts +1 -7
- package/esm/oas/unknown/unknown-types.d.ts.map +1 -1
- package/esm/types/Preview.d.ts +37 -0
- package/esm/types/Preview.d.ts.map +1 -1
- package/esm/types/Preview.js +37 -0
- package/esm/types/Settings.d.ts +35 -0
- package/esm/types/Settings.d.ts.map +1 -1
- package/esm/types/Settings.js +27 -0
- package/esm/typescript/FunctionParameter.d.ts +4 -4
- package/esm/typescript/FunctionParameter.d.ts.map +1 -1
- package/esm/typescript/List.d.ts +104 -5
- package/esm/typescript/List.d.ts.map +1 -1
- package/esm/typescript/List.js +75 -0
- package/package.json +1 -1
- package/script/context/CoreContext.d.ts +0 -3
- package/script/context/CoreContext.d.ts.map +1 -1
- package/script/context/CoreContext.js +12 -17
- package/script/context/GenerateContext.d.ts +35 -3
- package/script/context/GenerateContext.d.ts.map +1 -1
- package/script/context/GenerateContext.js +21 -1
- package/script/context/ParseContext.d.ts +64 -3
- package/script/context/ParseContext.d.ts.map +1 -1
- package/script/context/ParseContext.js +61 -0
- package/script/context/RenderContext.d.ts +151 -2
- package/script/context/RenderContext.d.ts.map +1 -1
- package/script/context/RenderContext.js +185 -11
- package/script/context/ResultsHandler.d.ts +10 -3
- package/script/context/ResultsHandler.d.ts.map +1 -1
- package/script/context/types.d.ts +30 -0
- package/script/context/types.d.ts.map +1 -1
- package/script/dsl/model/ModelBase.d.ts +1 -1
- package/script/dsl/model/ModelBase.d.ts.map +1 -1
- package/script/dsl/model/ModelDriver.d.ts +62 -0
- package/script/dsl/model/ModelDriver.d.ts.map +1 -1
- package/script/dsl/model/ModelDriver.js +63 -1
- package/script/dsl/model/toModelBase.d.ts +66 -0
- package/script/dsl/model/toModelBase.d.ts.map +1 -1
- package/script/dsl/model/toModelBase.js +46 -0
- package/script/dsl/model/toModelEntry.d.ts +63 -0
- package/script/dsl/model/toModelEntry.d.ts.map +1 -1
- package/script/dsl/model/toModelEntry.js +63 -0
- package/script/dsl/model/types.d.ts +51 -4
- package/script/dsl/model/types.d.ts.map +1 -1
- package/script/dsl/operation/OperationBase.d.ts +3 -3
- package/script/dsl/operation/OperationBase.d.ts.map +1 -1
- package/script/dsl/operation/OperationDriver.d.ts +48 -0
- package/script/dsl/operation/OperationDriver.d.ts.map +1 -1
- package/script/dsl/operation/OperationDriver.js +49 -1
- package/script/dsl/operation/types.d.ts +61 -3
- package/script/dsl/operation/types.d.ts.map +1 -1
- package/script/helpers/isEmpty.d.ts +1 -1
- package/script/helpers/isEmpty.d.ts.map +1 -1
- package/script/helpers/tracer.d.ts +1 -1
- package/script/helpers/tracer.d.ts.map +1 -1
- package/script/helpers/tracer.js +1 -1
- package/script/mod.d.ts +51 -0
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +51 -0
- package/script/oas/array/array-types.d.ts +20 -11
- package/script/oas/array/array-types.d.ts.map +1 -1
- package/script/oas/array/array-types.js +11 -1
- package/script/oas/array/toArray.d.ts +111 -0
- package/script/oas/array/toArray.d.ts.map +1 -1
- package/script/oas/array/toArray.js +114 -2
- package/script/oas/boolean/boolean-types.d.ts +1 -7
- package/script/oas/boolean/boolean-types.d.ts.map +1 -1
- package/script/oas/components/components-types.d.ts +19 -0
- package/script/oas/components/components-types.d.ts.map +1 -0
- package/script/oas/components/components-types.js +57 -0
- package/script/oas/contact/contact-types.d.ts +9 -0
- package/script/oas/contact/contact-types.d.ts.map +1 -0
- package/script/oas/contact/contact-types.js +43 -0
- package/script/oas/discriminator/discriminator-types.d.ts +1 -5
- package/script/oas/discriminator/discriminator-types.d.ts.map +1 -1
- package/script/oas/document/document-types.d.ts +16 -0
- package/script/oas/document/document-types.d.ts.map +1 -0
- package/script/oas/document/document-types.js +54 -0
- package/script/oas/example/example-types.d.ts +1 -6
- package/script/oas/example/example-types.d.ts.map +1 -1
- package/script/oas/header/header-types.d.ts +50 -0
- package/script/oas/header/header-types.d.ts.map +1 -0
- package/script/oas/header/header-types.js +66 -0
- package/script/oas/info/info-types.d.ts +14 -0
- package/script/oas/info/info-types.d.ts.map +1 -0
- package/script/oas/info/info-types.js +49 -0
- package/script/oas/integer/integer-types.d.ts +3 -17
- package/script/oas/integer/integer-types.d.ts.map +1 -1
- package/script/oas/license/license-types.d.ts +9 -0
- package/script/oas/license/license-types.d.ts.map +1 -0
- package/script/oas/license/license-types.js +43 -0
- package/script/oas/mediaType/mediaType-types.d.ts +1 -11
- package/script/oas/mediaType/mediaType-types.d.ts.map +1 -1
- package/script/oas/number/number-types.d.ts +2 -16
- package/script/oas/number/number-types.d.ts.map +1 -1
- package/script/oas/operation/Operation.d.ts +47 -2
- package/script/oas/operation/Operation.d.ts.map +1 -1
- package/script/oas/operation/Operation.js +43 -0
- package/script/oas/operation/operation-types.d.ts +22 -0
- package/script/oas/operation/operation-types.d.ts.map +1 -0
- package/script/oas/operation/operation-types.js +71 -0
- package/script/oas/parameter/parameter-types.d.ts +3 -58
- package/script/oas/parameter/parameter-types.d.ts.map +1 -1
- package/script/oas/pathItem/pathItem-types.d.ts +12 -0
- package/script/oas/pathItem/pathItem-types.d.ts.map +1 -0
- package/script/oas/pathItem/pathItem-types.js +48 -0
- package/script/oas/ref/Ref.d.ts +49 -2
- package/script/oas/ref/Ref.d.ts.map +1 -1
- package/script/oas/ref/Ref.js +28 -0
- package/script/oas/requestBody/requestBody-types.d.ts +10 -0
- package/script/oas/requestBody/requestBody-types.d.ts.map +1 -0
- package/script/oas/requestBody/requestBody-types.js +45 -0
- package/script/oas/response/response-types.d.ts +12 -0
- package/script/oas/response/response-types.d.ts.map +1 -0
- package/script/oas/response/response-types.js +47 -0
- package/script/oas/schema/toSchemasV3.js +2 -2
- package/script/oas/server/toServerV3.d.ts.map +1 -1
- package/script/oas/string/string-types.d.ts +2 -29
- package/script/oas/string/string-types.d.ts.map +1 -1
- package/script/oas/string/toString.d.ts +125 -1
- package/script/oas/string/toString.d.ts.map +1 -1
- package/script/oas/string/toString.js +119 -0
- package/script/oas/tag/tag-types.d.ts +8 -0
- package/script/oas/tag/tag-types.d.ts.map +1 -0
- package/script/oas/tag/tag-types.js +44 -0
- package/script/oas/union/union-types.d.ts +1 -12
- package/script/oas/union/union-types.d.ts.map +1 -1
- package/script/oas/unknown/unknown-types.d.ts +1 -7
- package/script/oas/unknown/unknown-types.d.ts.map +1 -1
- package/script/types/Preview.d.ts +37 -0
- package/script/types/Preview.d.ts.map +1 -1
- package/script/types/Preview.js +37 -0
- package/script/types/Settings.d.ts +35 -0
- package/script/types/Settings.d.ts.map +1 -1
- package/script/types/Settings.js +27 -0
- package/script/typescript/FunctionParameter.d.ts +4 -4
- package/script/typescript/FunctionParameter.d.ts.map +1 -1
- package/script/typescript/List.d.ts +104 -5
- package/script/typescript/List.d.ts.map +1 -1
- package/script/typescript/List.js +75 -0
|
@@ -4,16 +4,82 @@ import type { ContentSettings } from '../ContentSettings.js';
|
|
|
4
4
|
import { ModelBase } from './ModelBase.js';
|
|
5
5
|
import type { Identifier } from '../Identifier.js';
|
|
6
6
|
import * as v from 'valibot';
|
|
7
|
+
/**
|
|
8
|
+
* Arguments for creating a model insertable instance.
|
|
9
|
+
*
|
|
10
|
+
* @template EnrichmentType - Type of enrichments to apply to the model
|
|
11
|
+
*/
|
|
7
12
|
export type ModelInsertableArgs<EnrichmentType = undefined> = {
|
|
13
|
+
/** The generation context providing access to OAS objects and utilities */
|
|
8
14
|
context: GenerateContext;
|
|
15
|
+
/** Content settings for customizing model generation behavior */
|
|
9
16
|
settings: ContentSettings<EnrichmentType>;
|
|
17
|
+
/** Reference name identifying the model schema */
|
|
10
18
|
refName: RefName;
|
|
11
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Configuration for creating a base model class.
|
|
22
|
+
*
|
|
23
|
+
* Defines the structure and behavior for model generators, including
|
|
24
|
+
* identifier generation, export path resolution, and enrichment schemas.
|
|
25
|
+
*
|
|
26
|
+
* @template EnrichmentType - Type of enrichments to apply to generated models
|
|
27
|
+
*/
|
|
12
28
|
export type BaseModelConfig<EnrichmentType = undefined> = {
|
|
29
|
+
/** Unique identifier for the model generator */
|
|
13
30
|
id: string;
|
|
31
|
+
/** Function to generate identifiers from reference names */
|
|
14
32
|
toIdentifier: (refName: RefName) => Identifier;
|
|
33
|
+
/** Function to generate export paths from reference names */
|
|
15
34
|
toExportPath: (refName: RefName) => string;
|
|
35
|
+
/** Optional function to provide enrichment validation schema */
|
|
16
36
|
toEnrichmentSchema?: () => v.BaseSchema<EnrichmentType, EnrichmentType, v.BaseIssue<unknown>>;
|
|
17
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* Creates a base model class constructor for generating type-safe model artifacts.
|
|
40
|
+
*
|
|
41
|
+
* This factory function creates a specialized ModelBase class that implements
|
|
42
|
+
* the provided configuration for identifier generation, export paths, and
|
|
43
|
+
* enrichment handling. The resulting class can be instantiated to generate
|
|
44
|
+
* model artifacts from OpenAPI schemas.
|
|
45
|
+
*
|
|
46
|
+
* @template EnrichmentType - Type of enrichments to apply to generated models
|
|
47
|
+
* @param config - Configuration defining the model generation behavior
|
|
48
|
+
* @returns Constructor function for creating model instances
|
|
49
|
+
*
|
|
50
|
+
* @example Creating a TypeScript interface generator
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { toModelBase } from '@skmtc/core';
|
|
53
|
+
*
|
|
54
|
+
* const TypeScriptModelBase = toModelBase({
|
|
55
|
+
* id: 'typescript-interfaces',
|
|
56
|
+
* toIdentifier: (refName) => new Identifier(pascalCase(refName)),
|
|
57
|
+
* toExportPath: (refName) => `./models/${kebabCase(refName)}.ts`,
|
|
58
|
+
* toEnrichmentSchema: () => v.object({
|
|
59
|
+
* includeValidation: v.optional(v.boolean()),
|
|
60
|
+
* readonly: v.optional(v.boolean())
|
|
61
|
+
* })
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* class TypeScriptModelGenerator extends TypeScriptModelBase {
|
|
65
|
+
* generate() {
|
|
66
|
+
* const enrichments = this.enrichments;
|
|
67
|
+
* const interface = generateInterface(this.schema, {
|
|
68
|
+
* readonly: enrichments?.readonly ?? false
|
|
69
|
+
* });
|
|
70
|
+
* this.register({ file: this.createFile(interface) });
|
|
71
|
+
* }
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @example Creating a validation schema generator
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const ValidationModelBase = toModelBase({
|
|
78
|
+
* id: 'zod-schemas',
|
|
79
|
+
* toIdentifier: (refName) => new Identifier(`${pascalCase(refName)}Schema`),
|
|
80
|
+
* toExportPath: (refName) => `./schemas/${kebabCase(refName)}.schema.ts`
|
|
81
|
+
* });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
18
84
|
export declare const toModelBase: <EnrichmentType = undefined>(config: BaseModelConfig<EnrichmentType>) => new (args: ModelInsertableArgs<EnrichmentType>) => ModelBase<EnrichmentType>;
|
|
19
85
|
//# sourceMappingURL=toModelBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toModelBase.d.ts","sourceRoot":"","sources":["../../../src/dsl/model/toModelBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAEvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAI5B,MAAM,MAAM,mBAAmB,CAAC,cAAc,GAAG,SAAS,IAAI;IAC5D,OAAO,EAAE,eAAe,CAAA;IACxB,QAAQ,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAOD,MAAM,MAAM,eAAe,CAAC,cAAc,GAAG,SAAS,IAAI;IACxD,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAA;IAC9C,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAA;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC9F,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,cAAc,GAAG,SAAS,EACpD,QAAQ,eAAe,CAAC,cAAc,CAAC,KACtC,KAAK,IAAI,EAAE,mBAAmB,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,cAAc,CA0B7E,CAAA"}
|
|
1
|
+
{"version":3,"file":"toModelBase.d.ts","sourceRoot":"","sources":["../../../src/dsl/model/toModelBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAEvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAI5B;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,cAAc,GAAG,SAAS,IAAI;IAC5D,2EAA2E;IAC3E,OAAO,EAAE,eAAe,CAAA;IACxB,iEAAiE;IACjE,QAAQ,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;IACzC,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAOD;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,CAAC,cAAc,GAAG,SAAS,IAAI;IACxD,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAA;IACV,4DAA4D;IAC5D,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAA;IAC9C,6DAA6D;IAC7D,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAA;IAC1C,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAC9F,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,WAAW,GAAI,cAAc,GAAG,SAAS,EACpD,QAAQ,eAAe,CAAC,cAAc,CAAC,KACtC,KAAK,IAAI,EAAE,mBAAmB,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,cAAc,CA0B7E,CAAA"}
|
|
@@ -38,6 +38,52 @@ const GeneratorKeys_js_1 = require("../../types/GeneratorKeys.js");
|
|
|
38
38
|
const ModelBase_js_1 = require("./ModelBase.js");
|
|
39
39
|
const v = __importStar(require("valibot"));
|
|
40
40
|
const lodash_es_1 = require("lodash-es");
|
|
41
|
+
/**
|
|
42
|
+
* Creates a base model class constructor for generating type-safe model artifacts.
|
|
43
|
+
*
|
|
44
|
+
* This factory function creates a specialized ModelBase class that implements
|
|
45
|
+
* the provided configuration for identifier generation, export paths, and
|
|
46
|
+
* enrichment handling. The resulting class can be instantiated to generate
|
|
47
|
+
* model artifacts from OpenAPI schemas.
|
|
48
|
+
*
|
|
49
|
+
* @template EnrichmentType - Type of enrichments to apply to generated models
|
|
50
|
+
* @param config - Configuration defining the model generation behavior
|
|
51
|
+
* @returns Constructor function for creating model instances
|
|
52
|
+
*
|
|
53
|
+
* @example Creating a TypeScript interface generator
|
|
54
|
+
* ```typescript
|
|
55
|
+
* import { toModelBase } from '@skmtc/core';
|
|
56
|
+
*
|
|
57
|
+
* const TypeScriptModelBase = toModelBase({
|
|
58
|
+
* id: 'typescript-interfaces',
|
|
59
|
+
* toIdentifier: (refName) => new Identifier(pascalCase(refName)),
|
|
60
|
+
* toExportPath: (refName) => `./models/${kebabCase(refName)}.ts`,
|
|
61
|
+
* toEnrichmentSchema: () => v.object({
|
|
62
|
+
* includeValidation: v.optional(v.boolean()),
|
|
63
|
+
* readonly: v.optional(v.boolean())
|
|
64
|
+
* })
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* class TypeScriptModelGenerator extends TypeScriptModelBase {
|
|
68
|
+
* generate() {
|
|
69
|
+
* const enrichments = this.enrichments;
|
|
70
|
+
* const interface = generateInterface(this.schema, {
|
|
71
|
+
* readonly: enrichments?.readonly ?? false
|
|
72
|
+
* });
|
|
73
|
+
* this.register({ file: this.createFile(interface) });
|
|
74
|
+
* }
|
|
75
|
+
* }
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* @example Creating a validation schema generator
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const ValidationModelBase = toModelBase({
|
|
81
|
+
* id: 'zod-schemas',
|
|
82
|
+
* toIdentifier: (refName) => new Identifier(`${pascalCase(refName)}Schema`),
|
|
83
|
+
* toExportPath: (refName) => `./schemas/${kebabCase(refName)}.schema.ts`
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
41
87
|
const toModelBase = (config) => {
|
|
42
88
|
var _a;
|
|
43
89
|
return _a = class extends ModelBase_js_1.ModelBase {
|
|
@@ -11,6 +11,69 @@ type ToModelEntryArgs<EnrichmentType = undefined, Acc = void> = {
|
|
|
11
11
|
toMappingModule?: ({ context, refName }: ToModelMappingArgs) => MappingModule;
|
|
12
12
|
toEnrichmentRequest?: <RequestedEnrichment extends EnrichmentType>(refName: RefName) => EnrichmentRequest<RequestedEnrichment> | undefined;
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Creates a model transformation entry for the SKMTC pipeline.
|
|
16
|
+
*
|
|
17
|
+
* This function creates a standardized model entry that defines how to transform
|
|
18
|
+
* OpenAPI schema objects into model artifacts. Model entries are used by the
|
|
19
|
+
* generation pipeline to process schemas and create output files.
|
|
20
|
+
*
|
|
21
|
+
* The resulting entry includes transformation logic, preview generation,
|
|
22
|
+
* mapping generation, enrichment handling, and schema validation.
|
|
23
|
+
*
|
|
24
|
+
* @template EnrichmentType - Type of enrichments that can be applied to models
|
|
25
|
+
* @template Acc - Accumulator type for the transformation process
|
|
26
|
+
* @param args - Configuration for the model entry
|
|
27
|
+
* @param args.id - Unique identifier for this model entry
|
|
28
|
+
* @param args.transform - Function to transform schemas into artifacts
|
|
29
|
+
* @param args.toPreviewModule - Optional function to generate preview modules
|
|
30
|
+
* @param args.toMappingModule - Optional function to generate mapping modules
|
|
31
|
+
* @param args.toEnrichmentSchema - Optional function to provide enrichment validation
|
|
32
|
+
* @param args.toEnrichmentRequest - Optional function to request enrichments
|
|
33
|
+
* @returns Model entry object for use in the generation pipeline
|
|
34
|
+
*
|
|
35
|
+
* @example Basic model entry
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { toModelEntry } from '@skmtc/core';
|
|
38
|
+
*
|
|
39
|
+
* const typeScriptModelEntry = toModelEntry({
|
|
40
|
+
* id: 'typescript-models',
|
|
41
|
+
* transform: ({ context, refName, acc }) => {
|
|
42
|
+
* const schema = context.getSchemaByRefName(refName);
|
|
43
|
+
* const tsInterface = generateTypeScriptInterface(schema);
|
|
44
|
+
* return { ...acc, [refName]: tsInterface };
|
|
45
|
+
* },
|
|
46
|
+
* toPreviewModule: ({ context, refName }) => ({
|
|
47
|
+
* group: 'forms',
|
|
48
|
+
* title: `${refName} Model`,
|
|
49
|
+
* description: 'Generated TypeScript interface'
|
|
50
|
+
* })
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @example Model entry with enrichments
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const validationModelEntry = toModelEntry({
|
|
57
|
+
* id: 'validation-schemas',
|
|
58
|
+
* transform: ({ context, refName, acc }) => {
|
|
59
|
+
* const enrichments = context.getEnrichments(refName);
|
|
60
|
+
* const schema = context.getSchemaByRefName(refName);
|
|
61
|
+
* const validationSchema = generateValidationSchema(schema, {
|
|
62
|
+
* strict: enrichments?.strict ?? false
|
|
63
|
+
* });
|
|
64
|
+
* return { ...acc, [refName]: validationSchema };
|
|
65
|
+
* },
|
|
66
|
+
* toEnrichmentSchema: () => v.object({
|
|
67
|
+
* strict: v.optional(v.boolean()),
|
|
68
|
+
* nullable: v.optional(v.boolean())
|
|
69
|
+
* }),
|
|
70
|
+
* toEnrichmentRequest: (refName) => ({
|
|
71
|
+
* path: `models.${refName}`,
|
|
72
|
+
* schema: enrichmentSchema
|
|
73
|
+
* })
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
14
77
|
export declare const toModelEntry: <EnrichmentType = undefined, Acc = void>({ id, transform, toPreviewModule, toMappingModule, toEnrichmentSchema, toEnrichmentRequest }: ToModelEntryArgs<EnrichmentType, Acc>) => {
|
|
15
78
|
id: string;
|
|
16
79
|
type: "model";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toModelEntry.d.ts","sourceRoot":"","sources":["../../../src/dsl/model/toModelEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAClG,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE1E,KAAK,gBAAgB,CAAC,cAAc,GAAG,SAAS,EAAE,GAAG,GAAG,IAAI,IAAI;IAC9D,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,GAAG,CAAA;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAC1D,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,wBAAwB,KAAK,aAAa,CAAA;IACnF,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,KAAK,aAAa,CAAA;IAC7E,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,SAAS,cAAc,EAC/D,OAAO,EAAE,OAAO,KACb,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAA;CACxD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,cAAc,GAAG,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,8FAOlE,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC,KAAG;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,wBAAwB,KAAK,aAAa,CAAC;IACpF,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,KAAK,aAAa,CAAC;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAC3D,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,SAAS,cAAc,EAC/D,OAAO,EAAE,OAAO,KACb,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;CAWzD,CAAA"}
|
|
1
|
+
{"version":3,"file":"toModelEntry.d.ts","sourceRoot":"","sources":["../../../src/dsl/model/toModelEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAClG,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE1E,KAAK,gBAAgB,CAAC,cAAc,GAAG,SAAS,EAAE,GAAG,GAAG,IAAI,IAAI;IAC9D,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,GAAG,CAAA;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAC1D,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,wBAAwB,KAAK,aAAa,CAAA;IACnF,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,KAAK,aAAa,CAAA;IAC7E,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,SAAS,cAAc,EAC/D,OAAO,EAAE,OAAO,KACb,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAA;CACxD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,eAAO,MAAM,YAAY,GAAI,cAAc,GAAG,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,8FAOlE,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC,KAAG;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,wBAAwB,KAAK,aAAa,CAAC;IACpF,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,KAAK,aAAa,CAAC;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAC3D,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,SAAS,cAAc,EAC/D,OAAO,EAAE,OAAO,KACb,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;CAWzD,CAAA"}
|
|
@@ -1,6 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toModelEntry = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a model transformation entry for the SKMTC pipeline.
|
|
6
|
+
*
|
|
7
|
+
* This function creates a standardized model entry that defines how to transform
|
|
8
|
+
* OpenAPI schema objects into model artifacts. Model entries are used by the
|
|
9
|
+
* generation pipeline to process schemas and create output files.
|
|
10
|
+
*
|
|
11
|
+
* The resulting entry includes transformation logic, preview generation,
|
|
12
|
+
* mapping generation, enrichment handling, and schema validation.
|
|
13
|
+
*
|
|
14
|
+
* @template EnrichmentType - Type of enrichments that can be applied to models
|
|
15
|
+
* @template Acc - Accumulator type for the transformation process
|
|
16
|
+
* @param args - Configuration for the model entry
|
|
17
|
+
* @param args.id - Unique identifier for this model entry
|
|
18
|
+
* @param args.transform - Function to transform schemas into artifacts
|
|
19
|
+
* @param args.toPreviewModule - Optional function to generate preview modules
|
|
20
|
+
* @param args.toMappingModule - Optional function to generate mapping modules
|
|
21
|
+
* @param args.toEnrichmentSchema - Optional function to provide enrichment validation
|
|
22
|
+
* @param args.toEnrichmentRequest - Optional function to request enrichments
|
|
23
|
+
* @returns Model entry object for use in the generation pipeline
|
|
24
|
+
*
|
|
25
|
+
* @example Basic model entry
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { toModelEntry } from '@skmtc/core';
|
|
28
|
+
*
|
|
29
|
+
* const typeScriptModelEntry = toModelEntry({
|
|
30
|
+
* id: 'typescript-models',
|
|
31
|
+
* transform: ({ context, refName, acc }) => {
|
|
32
|
+
* const schema = context.getSchemaByRefName(refName);
|
|
33
|
+
* const tsInterface = generateTypeScriptInterface(schema);
|
|
34
|
+
* return { ...acc, [refName]: tsInterface };
|
|
35
|
+
* },
|
|
36
|
+
* toPreviewModule: ({ context, refName }) => ({
|
|
37
|
+
* group: 'forms',
|
|
38
|
+
* title: `${refName} Model`,
|
|
39
|
+
* description: 'Generated TypeScript interface'
|
|
40
|
+
* })
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example Model entry with enrichments
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const validationModelEntry = toModelEntry({
|
|
47
|
+
* id: 'validation-schemas',
|
|
48
|
+
* transform: ({ context, refName, acc }) => {
|
|
49
|
+
* const enrichments = context.getEnrichments(refName);
|
|
50
|
+
* const schema = context.getSchemaByRefName(refName);
|
|
51
|
+
* const validationSchema = generateValidationSchema(schema, {
|
|
52
|
+
* strict: enrichments?.strict ?? false
|
|
53
|
+
* });
|
|
54
|
+
* return { ...acc, [refName]: validationSchema };
|
|
55
|
+
* },
|
|
56
|
+
* toEnrichmentSchema: () => v.object({
|
|
57
|
+
* strict: v.optional(v.boolean()),
|
|
58
|
+
* nullable: v.optional(v.boolean())
|
|
59
|
+
* }),
|
|
60
|
+
* toEnrichmentRequest: (refName) => ({
|
|
61
|
+
* path: `models.${refName}`,
|
|
62
|
+
* schema: enrichmentSchema
|
|
63
|
+
* })
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
4
67
|
const toModelEntry = ({ id, transform, toPreviewModule, toMappingModule, toEnrichmentSchema, toEnrichmentRequest }) => {
|
|
5
68
|
return {
|
|
6
69
|
id,
|
|
@@ -6,33 +6,73 @@ import type { EnrichmentRequest } from '../../types/EnrichmentRequest.js';
|
|
|
6
6
|
import type * as v from 'valibot';
|
|
7
7
|
import type { MappingModule, PreviewModule } from '../../types/Preview.js';
|
|
8
8
|
import type { SchemaToValueFn } from '../../types/TypeSystem.js';
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Constructor arguments for model insertable instances.
|
|
11
|
+
*
|
|
12
|
+
* @template EnrichmentType - Optional enrichment data type for additional metadata
|
|
13
|
+
*/
|
|
14
|
+
export type ModelInsertableConstructorArgs<EnrichmentType = undefined> = {
|
|
10
15
|
context: GenerateContext;
|
|
11
16
|
refName: RefName;
|
|
12
17
|
settings: ContentSettings<EnrichmentType>;
|
|
13
18
|
destinationPath: string;
|
|
14
19
|
rootRef?: RefName;
|
|
15
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Interface for objects that provide model transformation capabilities.
|
|
23
|
+
*
|
|
24
|
+
* Used by generator configurations to transform model definitions
|
|
25
|
+
* during the code generation process.
|
|
26
|
+
*/
|
|
16
27
|
export type WithTransformModel = {
|
|
17
28
|
transformModel: (refName: RefName) => void;
|
|
18
29
|
};
|
|
19
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Arguments for generating enrichment data for models.
|
|
32
|
+
*/
|
|
33
|
+
export type ModelToEnrichmentsArgs = {
|
|
20
34
|
refName: RefName;
|
|
21
35
|
context: GenerateContext;
|
|
22
36
|
};
|
|
37
|
+
/**
|
|
38
|
+
* Arguments passed to model transformation functions.
|
|
39
|
+
*
|
|
40
|
+
* @template Acc - Accumulator type for collecting transformation results
|
|
41
|
+
*/
|
|
23
42
|
export type TransformModelArgs<Acc> = {
|
|
24
43
|
context: GenerateContext;
|
|
25
44
|
refName: RefName;
|
|
26
45
|
acc: Acc | undefined;
|
|
27
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* Arguments for generating model preview modules.
|
|
49
|
+
*
|
|
50
|
+
* Preview modules provide quick insights into generated models
|
|
51
|
+
* without full code generation.
|
|
52
|
+
*/
|
|
28
53
|
export type ToModelPreviewModuleArgs = {
|
|
29
54
|
context: GenerateContext;
|
|
30
55
|
refName: RefName;
|
|
31
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Arguments for generating model mapping information.
|
|
59
|
+
*
|
|
60
|
+
* Mappings track relationships between OAS schemas and generated models,
|
|
61
|
+
* enabling cross-references and dependency analysis.
|
|
62
|
+
*/
|
|
32
63
|
export type ToModelMappingArgs = {
|
|
33
64
|
context: GenerateContext;
|
|
34
65
|
refName: RefName;
|
|
35
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Configuration object for insertable model generators.
|
|
69
|
+
*
|
|
70
|
+
* Defines the contract for model generator classes that can be inserted
|
|
71
|
+
* into the generation context to produce type-safe model definitions.
|
|
72
|
+
*
|
|
73
|
+
* @template V - Generated value type produced by the model generator
|
|
74
|
+
* @template EnrichmentType - Optional enrichment data type for additional metadata
|
|
75
|
+
*/
|
|
36
76
|
export type ModelInsertable<V, EnrichmentType = undefined> = {
|
|
37
77
|
prototype: V;
|
|
38
78
|
} & {
|
|
@@ -41,10 +81,18 @@ export type ModelInsertable<V, EnrichmentType = undefined> = {
|
|
|
41
81
|
type: 'model';
|
|
42
82
|
toIdentifier: (refName: RefName) => Identifier;
|
|
43
83
|
toExportPath: (refName: RefName) => string;
|
|
44
|
-
toEnrichments: ({ refName, context }:
|
|
84
|
+
toEnrichments: ({ refName, context }: ModelToEnrichmentsArgs) => EnrichmentType;
|
|
45
85
|
schemaToValueFn: SchemaToValueFn;
|
|
46
86
|
createIdentifier: (name: string) => Identifier;
|
|
47
87
|
} & Function;
|
|
88
|
+
/**
|
|
89
|
+
* Configuration object for model generators.
|
|
90
|
+
*
|
|
91
|
+
* Defines the behavior and capabilities of model generators including
|
|
92
|
+
* transformation logic, preview generation, and enrichment handling.
|
|
93
|
+
*
|
|
94
|
+
* @template EnrichmentType - Optional enrichment data type for additional metadata
|
|
95
|
+
*/
|
|
48
96
|
export type ModelConfig<EnrichmentType = undefined> = {
|
|
49
97
|
id: string;
|
|
50
98
|
type: 'model';
|
|
@@ -54,5 +102,4 @@ export type ModelConfig<EnrichmentType = undefined> = {
|
|
|
54
102
|
toEnrichmentSchema?: () => v.BaseSchema<EnrichmentType, EnrichmentType, v.BaseIssue<unknown>>;
|
|
55
103
|
toEnrichmentRequest?: <RequestedEnrichment extends EnrichmentType>(refName: RefName) => EnrichmentRequest<RequestedEnrichment> | undefined;
|
|
56
104
|
};
|
|
57
|
-
export {};
|
|
58
105
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dsl/model/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEhE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dsl/model/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@ import type { Definition } from '../Definition.js';
|
|
|
9
9
|
import type { Inserted } from '../Inserted.js';
|
|
10
10
|
import type { ModelInsertable } from '../model/types.js';
|
|
11
11
|
import type { RefName } from '../../types/RefName.js';
|
|
12
|
-
import { OasSchema } from '../../oas/schema/Schema.js';
|
|
13
|
-
import { OasRef } from '../../oas/ref/Ref.js';
|
|
14
|
-
import { OasVoid } from '../../oas/void/Void.js';
|
|
12
|
+
import type { OasSchema } from '../../oas/schema/Schema.js';
|
|
13
|
+
import type { OasRef } from '../../oas/ref/Ref.js';
|
|
14
|
+
import type { OasVoid } from '../../oas/void/Void.js';
|
|
15
15
|
/**
|
|
16
16
|
* Constructor arguments for {@link OperationBase}.
|
|
17
17
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationBase.d.ts","sourceRoot":"","sources":["../../../src/dsl/operation/OperationBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"OperationBase.d.ts","sourceRoot":"","sources":["../../../src/dsl/operation/OperationBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,14 +12,62 @@ type CreateOperationArgs<V extends GeneratedValue, T extends GenerationType, Enr
|
|
|
12
12
|
destinationPath?: string;
|
|
13
13
|
noExport?: boolean;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Driver class for generating operation-based artifacts from OpenAPI operations.
|
|
17
|
+
*
|
|
18
|
+
* The `OperationDriver` manages the transformation of OpenAPI operation objects
|
|
19
|
+
* into code artifacts, handling path generation, identifier resolution, and
|
|
20
|
+
* definition management. It serves as the core orchestrator for operation-based
|
|
21
|
+
* code generation in the SKMTC pipeline.
|
|
22
|
+
*
|
|
23
|
+
* @template V - Type of generated values produced by this driver
|
|
24
|
+
* @template T - Type of generation strategy (e.g., 'function', 'class', 'hook')
|
|
25
|
+
* @template EnrichmentType - Type of enrichments that can be applied
|
|
26
|
+
*
|
|
27
|
+
* @example Basic usage in an operation generator
|
|
28
|
+
* ```typescript
|
|
29
|
+
* class APIClientGenerator extends OperationBase {
|
|
30
|
+
* generate() {
|
|
31
|
+
* const driver = new OperationDriver({
|
|
32
|
+
* context: this.context,
|
|
33
|
+
* insertable: this,
|
|
34
|
+
* operation: this.operation,
|
|
35
|
+
* generation: 'function'
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* const functionCode = driver.definition.toValueString();
|
|
39
|
+
* const file = this.createFile(functionCode);
|
|
40
|
+
* this.register({ file });
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
15
45
|
export declare class OperationDriver<V extends GeneratedValue, T extends GenerationType, EnrichmentType = undefined> {
|
|
46
|
+
/** The generation context providing access to OAS objects and utilities */
|
|
16
47
|
context: GenerateContext;
|
|
48
|
+
/** The insertable object that provides generation configuration */
|
|
17
49
|
insertable: OperationInsertable<V, EnrichmentType>;
|
|
50
|
+
/** The OpenAPI operation object being processed */
|
|
18
51
|
operation: OasOperation;
|
|
52
|
+
/** Content settings for customizing generation behavior */
|
|
19
53
|
settings: ContentSettings<EnrichmentType>;
|
|
54
|
+
/** Optional custom destination path for generated files */
|
|
20
55
|
destinationPath?: string;
|
|
56
|
+
/** The generated definition containing the transformed operation */
|
|
21
57
|
definition: GeneratedDefinition<V, T>;
|
|
58
|
+
/** Whether to exclude this operation from exports */
|
|
22
59
|
noExport?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new OperationDriver instance.
|
|
62
|
+
*
|
|
63
|
+
* @param args - Configuration for the operation driver
|
|
64
|
+
* @param args.context - Generation context
|
|
65
|
+
* @param args.insertable - Insertable providing generation configuration
|
|
66
|
+
* @param args.operation - OpenAPI operation to process
|
|
67
|
+
* @param args.generation - Optional generation type
|
|
68
|
+
* @param args.destinationPath - Optional custom destination path
|
|
69
|
+
* @param args.noExport - Whether to exclude from exports
|
|
70
|
+
*/
|
|
23
71
|
constructor({ context, insertable, operation, generation, destinationPath, noExport }: CreateOperationArgs<V, T, EnrichmentType>);
|
|
24
72
|
private apply;
|
|
25
73
|
private getDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationDriver.d.ts","sourceRoot":"","sources":["../../../src/dsl/operation/OperationDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAEvE,KAAK,mBAAmB,CACtB,CAAC,SAAS,cAAc,EACxB,CAAC,SAAS,cAAc,EACxB,cAAc,GAAG,SAAS,IACxB;IACF,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAClD,SAAS,EAAE,YAAY,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAYD,qBAAa,eAAe,CAC1B,CAAC,SAAS,cAAc,EACxB,CAAC,SAAS,cAAc,EACxB,cAAc,GAAG,SAAS;IAE1B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAClD,SAAS,EAAE,YAAY,CAAA;IACvB,QAAQ,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"OperationDriver.d.ts","sourceRoot":"","sources":["../../../src/dsl/operation/OperationDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAEvE,KAAK,mBAAmB,CACtB,CAAC,SAAS,cAAc,EACxB,CAAC,SAAS,cAAc,EACxB,cAAc,GAAG,SAAS,IACxB;IACF,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAClD,SAAS,EAAE,YAAY,CAAA;IACvB,UAAU,CAAC,EAAE,CAAC,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,eAAe,CAC1B,CAAC,SAAS,cAAc,EACxB,CAAC,SAAS,cAAc,EACxB,cAAc,GAAG,SAAS;IAE1B,2EAA2E;IAC3E,OAAO,EAAE,eAAe,CAAA;IACxB,mEAAmE;IACnE,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAClD,mDAAmD;IACnD,SAAS,EAAE,YAAY,CAAA;IACvB,2DAA2D;IAC3D,QAAQ,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;IACzC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;;;;;;;OAUG;gBACS,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,QAAQ,EACT,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC;IAc5C,OAAO,CAAC,KAAK;IAuBb,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,gBAAgB;CAqBzB"}
|
|
@@ -4,44 +4,92 @@ exports.OperationDriver = void 0;
|
|
|
4
4
|
const normalize_js_1 = require("../../deps/jsr.io/@std/path/1.1.2/normalize.js");
|
|
5
5
|
const Definition_js_1 = require("../Definition.js");
|
|
6
6
|
const GeneratorKeys_js_1 = require("../../types/GeneratorKeys.js");
|
|
7
|
+
/**
|
|
8
|
+
* Driver class for generating operation-based artifacts from OpenAPI operations.
|
|
9
|
+
*
|
|
10
|
+
* The `OperationDriver` manages the transformation of OpenAPI operation objects
|
|
11
|
+
* into code artifacts, handling path generation, identifier resolution, and
|
|
12
|
+
* definition management. It serves as the core orchestrator for operation-based
|
|
13
|
+
* code generation in the SKMTC pipeline.
|
|
14
|
+
*
|
|
15
|
+
* @template V - Type of generated values produced by this driver
|
|
16
|
+
* @template T - Type of generation strategy (e.g., 'function', 'class', 'hook')
|
|
17
|
+
* @template EnrichmentType - Type of enrichments that can be applied
|
|
18
|
+
*
|
|
19
|
+
* @example Basic usage in an operation generator
|
|
20
|
+
* ```typescript
|
|
21
|
+
* class APIClientGenerator extends OperationBase {
|
|
22
|
+
* generate() {
|
|
23
|
+
* const driver = new OperationDriver({
|
|
24
|
+
* context: this.context,
|
|
25
|
+
* insertable: this,
|
|
26
|
+
* operation: this.operation,
|
|
27
|
+
* generation: 'function'
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* const functionCode = driver.definition.toValueString();
|
|
31
|
+
* const file = this.createFile(functionCode);
|
|
32
|
+
* this.register({ file });
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
7
37
|
class OperationDriver {
|
|
38
|
+
/**
|
|
39
|
+
* Creates a new OperationDriver instance.
|
|
40
|
+
*
|
|
41
|
+
* @param args - Configuration for the operation driver
|
|
42
|
+
* @param args.context - Generation context
|
|
43
|
+
* @param args.insertable - Insertable providing generation configuration
|
|
44
|
+
* @param args.operation - OpenAPI operation to process
|
|
45
|
+
* @param args.generation - Optional generation type
|
|
46
|
+
* @param args.destinationPath - Optional custom destination path
|
|
47
|
+
* @param args.noExport - Whether to exclude from exports
|
|
48
|
+
*/
|
|
8
49
|
constructor({ context, insertable, operation, generation, destinationPath, noExport }) {
|
|
50
|
+
/** The generation context providing access to OAS objects and utilities */
|
|
9
51
|
Object.defineProperty(this, "context", {
|
|
10
52
|
enumerable: true,
|
|
11
53
|
configurable: true,
|
|
12
54
|
writable: true,
|
|
13
55
|
value: void 0
|
|
14
56
|
});
|
|
57
|
+
/** The insertable object that provides generation configuration */
|
|
15
58
|
Object.defineProperty(this, "insertable", {
|
|
16
59
|
enumerable: true,
|
|
17
60
|
configurable: true,
|
|
18
61
|
writable: true,
|
|
19
62
|
value: void 0
|
|
20
63
|
});
|
|
64
|
+
/** The OpenAPI operation object being processed */
|
|
21
65
|
Object.defineProperty(this, "operation", {
|
|
22
66
|
enumerable: true,
|
|
23
67
|
configurable: true,
|
|
24
68
|
writable: true,
|
|
25
69
|
value: void 0
|
|
26
70
|
});
|
|
71
|
+
/** Content settings for customizing generation behavior */
|
|
27
72
|
Object.defineProperty(this, "settings", {
|
|
28
73
|
enumerable: true,
|
|
29
74
|
configurable: true,
|
|
30
75
|
writable: true,
|
|
31
76
|
value: void 0
|
|
32
77
|
});
|
|
78
|
+
/** Optional custom destination path for generated files */
|
|
33
79
|
Object.defineProperty(this, "destinationPath", {
|
|
34
80
|
enumerable: true,
|
|
35
81
|
configurable: true,
|
|
36
82
|
writable: true,
|
|
37
83
|
value: void 0
|
|
38
84
|
});
|
|
85
|
+
/** The generated definition containing the transformed operation */
|
|
39
86
|
Object.defineProperty(this, "definition", {
|
|
40
87
|
enumerable: true,
|
|
41
88
|
configurable: true,
|
|
42
89
|
writable: true,
|
|
43
90
|
value: void 0
|
|
44
91
|
});
|
|
92
|
+
/** Whether to exclude this operation from exports */
|
|
45
93
|
Object.defineProperty(this, "noExport", {
|
|
46
94
|
enumerable: true,
|
|
47
95
|
configurable: true,
|
|
@@ -59,7 +107,7 @@ class OperationDriver {
|
|
|
59
107
|
});
|
|
60
108
|
this.definition = this.apply({ generation, destinationPath });
|
|
61
109
|
}
|
|
62
|
-
apply({ generation, destinationPath } = {}) {
|
|
110
|
+
apply({ generation: _generation, destinationPath } = {}) {
|
|
63
111
|
const { identifier, exportPath } = this.settings;
|
|
64
112
|
// Everything is selected (for now)
|
|
65
113
|
// if (/*!selected && */ generation !== 'force') {
|