@contractspec/lib.contracts-transformers 1.57.0 → 1.59.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/dist/browser/common/index.js +86 -0
- package/dist/browser/index.js +2414 -0
- package/dist/browser/openapi/index.js +2404 -0
- package/dist/common/index.d.ts +6 -3
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +87 -3
- package/dist/common/types.d.ts +119 -120
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/utils.d.ts +11 -14
- package/dist/common/utils.d.ts.map +1 -1
- package/dist/index.d.ts +18 -18
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2415 -18
- package/dist/node/common/index.js +86 -0
- package/dist/node/index.js +2414 -0
- package/dist/node/openapi/index.js +2404 -0
- package/dist/openapi/differ.d.ts +21 -21
- package/dist/openapi/differ.d.ts.map +1 -1
- package/dist/openapi/exporter/data-views.d.ts +24 -25
- package/dist/openapi/exporter/data-views.d.ts.map +1 -1
- package/dist/openapi/exporter/events.d.ts +15 -15
- package/dist/openapi/exporter/events.d.ts.map +1 -1
- package/dist/openapi/exporter/features.d.ts +23 -24
- package/dist/openapi/exporter/features.d.ts.map +1 -1
- package/dist/openapi/exporter/forms.d.ts +17 -17
- package/dist/openapi/exporter/forms.d.ts.map +1 -1
- package/dist/openapi/exporter/index.d.ts +12 -0
- package/dist/openapi/exporter/index.d.ts.map +1 -0
- package/dist/openapi/exporter/operations.d.ts +29 -29
- package/dist/openapi/exporter/operations.d.ts.map +1 -1
- package/dist/openapi/exporter/presentations.d.ts +16 -17
- package/dist/openapi/exporter/presentations.d.ts.map +1 -1
- package/dist/openapi/exporter/registries.d.ts +13 -14
- package/dist/openapi/exporter/registries.d.ts.map +1 -1
- package/dist/openapi/exporter/workflows.d.ts +23 -24
- package/dist/openapi/exporter/workflows.d.ts.map +1 -1
- package/dist/openapi/exporter.d.ts +24 -23
- package/dist/openapi/exporter.d.ts.map +1 -1
- package/dist/openapi/exporter.test.d.ts +2 -0
- package/dist/openapi/exporter.test.d.ts.map +1 -0
- package/dist/openapi/importer/analyzer.d.ts +14 -0
- package/dist/openapi/importer/analyzer.d.ts.map +1 -0
- package/dist/openapi/importer/events.d.ts +7 -0
- package/dist/openapi/importer/events.d.ts.map +1 -0
- package/dist/openapi/importer/generator.d.ts +8 -0
- package/dist/openapi/importer/generator.d.ts.map +1 -0
- package/dist/openapi/importer/grouping.d.ts +27 -0
- package/dist/openapi/importer/grouping.d.ts.map +1 -0
- package/dist/openapi/importer/index.d.ts +11 -9
- package/dist/openapi/importer/index.d.ts.map +1 -1
- package/dist/openapi/importer/models.d.ts +7 -0
- package/dist/openapi/importer/models.d.ts.map +1 -0
- package/dist/openapi/importer/schemas.d.ts +15 -0
- package/dist/openapi/importer/schemas.d.ts.map +1 -0
- package/dist/openapi/importer.d.ts +6 -0
- package/dist/openapi/importer.d.ts.map +1 -0
- package/dist/openapi/index.d.ts +12 -16
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +2405 -18
- package/dist/openapi/parser/document.d.ts +5 -9
- package/dist/openapi/parser/document.d.ts.map +1 -1
- package/dist/openapi/parser/index.d.ts +6 -0
- package/dist/openapi/parser/index.d.ts.map +1 -0
- package/dist/openapi/parser/operation.d.ts +7 -0
- package/dist/openapi/parser/operation.d.ts.map +1 -0
- package/dist/openapi/parser/parameters.d.ts +11 -0
- package/dist/openapi/parser/parameters.d.ts.map +1 -0
- package/dist/openapi/parser/resolvers.d.ts +21 -0
- package/dist/openapi/parser/resolvers.d.ts.map +1 -0
- package/dist/openapi/parser/utils.d.ts +9 -8
- package/dist/openapi/parser/utils.d.ts.map +1 -1
- package/dist/openapi/parser.d.ts +6 -0
- package/dist/openapi/parser.d.ts.map +1 -0
- package/dist/openapi/schema-converter.d.ts +45 -45
- package/dist/openapi/schema-converter.d.ts.map +1 -1
- package/dist/openapi/schema-generators/index.d.ts +115 -0
- package/dist/openapi/schema-generators/index.d.ts.map +1 -0
- package/dist/openapi/schema-generators.test.d.ts +2 -0
- package/dist/openapi/schema-generators.test.d.ts.map +1 -0
- package/dist/openapi/types.d.ts +198 -198
- package/dist/openapi/types.d.ts.map +1 -1
- package/package.json +53 -20
- package/dist/common/utils.js +0 -103
- package/dist/common/utils.js.map +0 -1
- package/dist/openapi/differ.js +0 -222
- package/dist/openapi/differ.js.map +0 -1
- package/dist/openapi/exporter/data-views.js +0 -47
- package/dist/openapi/exporter/data-views.js.map +0 -1
- package/dist/openapi/exporter/events.js +0 -39
- package/dist/openapi/exporter/events.js.map +0 -1
- package/dist/openapi/exporter/features.js +0 -46
- package/dist/openapi/exporter/features.js.map +0 -1
- package/dist/openapi/exporter/forms.js +0 -49
- package/dist/openapi/exporter/forms.js.map +0 -1
- package/dist/openapi/exporter/index.js +0 -8
- package/dist/openapi/exporter/operations.js +0 -143
- package/dist/openapi/exporter/operations.js.map +0 -1
- package/dist/openapi/exporter/presentations.js +0 -60
- package/dist/openapi/exporter/presentations.js.map +0 -1
- package/dist/openapi/exporter/registries.js +0 -29
- package/dist/openapi/exporter/registries.js.map +0 -1
- package/dist/openapi/exporter/workflows.js +0 -54
- package/dist/openapi/exporter/workflows.js.map +0 -1
- package/dist/openapi/exporter.js +0 -122
- package/dist/openapi/exporter.js.map +0 -1
- package/dist/openapi/importer/analyzer.js +0 -28
- package/dist/openapi/importer/analyzer.js.map +0 -1
- package/dist/openapi/importer/events.js +0 -40
- package/dist/openapi/importer/events.js.map +0 -1
- package/dist/openapi/importer/generator.js +0 -105
- package/dist/openapi/importer/generator.js.map +0 -1
- package/dist/openapi/importer/grouping.js +0 -72
- package/dist/openapi/importer/grouping.js.map +0 -1
- package/dist/openapi/importer/index.js +0 -175
- package/dist/openapi/importer/index.js.map +0 -1
- package/dist/openapi/importer/models.js +0 -22
- package/dist/openapi/importer/models.js.map +0 -1
- package/dist/openapi/importer/schemas.js +0 -60
- package/dist/openapi/importer/schemas.js.map +0 -1
- package/dist/openapi/parser/document.js +0 -95
- package/dist/openapi/parser/document.js.map +0 -1
- package/dist/openapi/parser/index.js +0 -5
- package/dist/openapi/parser/operation.js +0 -59
- package/dist/openapi/parser/operation.js.map +0 -1
- package/dist/openapi/parser/parameters.js +0 -37
- package/dist/openapi/parser/parameters.js.map +0 -1
- package/dist/openapi/parser/resolvers.js +0 -63
- package/dist/openapi/parser/resolvers.js.map +0 -1
- package/dist/openapi/parser/utils.js +0 -48
- package/dist/openapi/parser/utils.js.map +0 -1
- package/dist/openapi/parser.js +0 -6
- package/dist/openapi/schema-converter.js +0 -161
- package/dist/openapi/schema-converter.js.map +0 -1
- package/dist/openapi/schema-generators/index.js +0 -461
- package/dist/openapi/schema-generators/index.js.map +0 -1
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import { OpenApiDocument, OpenApiParseOptions, ParseResult } from
|
|
2
|
-
|
|
3
|
-
//#region src/openapi/parser/document.d.ts
|
|
1
|
+
import type { OpenApiDocument, OpenApiParseOptions, ParseResult } from '../types';
|
|
4
2
|
/**
|
|
5
3
|
* Parse an OpenAPI document into a structured result.
|
|
6
4
|
*/
|
|
7
|
-
declare function parseOpenApiDocument(doc: OpenApiDocument, _options?: OpenApiParseOptions): ParseResult;
|
|
5
|
+
export declare function parseOpenApiDocument(doc: OpenApiDocument, _options?: OpenApiParseOptions): ParseResult;
|
|
8
6
|
/**
|
|
9
7
|
* Parse OpenAPI from a file path or URL.
|
|
10
8
|
* Note: This is an async function that requires I/O adapters.
|
|
11
9
|
* For pure parsing, use parseOpenApiString or parseOpenApiDocument.
|
|
12
10
|
*/
|
|
13
|
-
declare function parseOpenApi(source: string, options?: OpenApiParseOptions & {
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export declare function parseOpenApi(source: string, options?: OpenApiParseOptions & {
|
|
12
|
+
fetch?: typeof globalThis.fetch;
|
|
13
|
+
readFile?: (path: string) => Promise<string>;
|
|
16
14
|
}): Promise<ParseResult>;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { parseOpenApi, parseOpenApiDocument };
|
|
19
15
|
//# sourceMappingURL=document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/openapi/parser/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EAKnB,WAAW,EACZ,MAAM,UAAU,CAAC;AAUlB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,EACpB,QAAQ,GAAE,mBAAwB,GACjC,WAAW,CAiGb;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAmB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC,GACL,OAAO,CAAC,WAAW,CAAC,CAoDtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openapi/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HttpMethod, OpenApiDocument, OpenApiParameter, ParsedOperation } from '../types';
|
|
2
|
+
import type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
|
|
3
|
+
/**
|
|
4
|
+
* Parse a single operation.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseOperation(doc: OpenApiDocument, method: HttpMethod, path: string, operation: OpenAPIV3.OperationObject | OpenAPIV3_1.OperationObject, pathParams: OpenApiParameter[] | undefined): ParsedOperation;
|
|
7
|
+
//# sourceMappingURL=operation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/openapi/parser/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAEhB,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5D;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,EAClE,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACzC,eAAe,CA6EjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OpenApiDocument, OpenApiParameter, ParsedParameter } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Parse parameters from an operation.
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseParameters(doc: OpenApiDocument, params: OpenApiParameter[] | undefined): {
|
|
6
|
+
path: ParsedParameter[];
|
|
7
|
+
query: ParsedParameter[];
|
|
8
|
+
header: ParsedParameter[];
|
|
9
|
+
cookie: ParsedParameter[];
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=parameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../src/openapi/parser/parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EAEhB,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACrC;IACD,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAuCA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { OpenApiDocument, OpenApiSchema } from '../types';
|
|
2
|
+
import type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
|
|
3
|
+
/**
|
|
4
|
+
* Check if a value is a reference object.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isReference(obj: unknown): obj is OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject;
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a $ref reference in the document.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveRef<T>(doc: OpenApiDocument, ref: string): T | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a schema, following $ref if needed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveSchema(doc: OpenApiDocument, schema: OpenApiSchema | undefined): OpenApiSchema | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Recursively dereference a schema.
|
|
17
|
+
* Replaces all $ref with their resolved values.
|
|
18
|
+
* Preserves `_originalRef` to track where the schema came from.
|
|
19
|
+
*/
|
|
20
|
+
export declare function dereferenceSchema(doc: OpenApiDocument, schema: OpenApiSchema | undefined, seen?: Set<string>): OpenApiSchema | undefined;
|
|
21
|
+
//# sourceMappingURL=resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../src/openapi/parser/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5D;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,SAAS,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,CAEhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,GACV,CAAC,GAAG,SAAS,CAgBf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,aAAa,GAAG,SAAS,GAChC,aAAa,GAAG,SAAS,CAM3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,IAAI,cAAoB,GACvB,aAAa,GAAG,SAAS,CAkE3B"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import { OpenApiDocument, OpenApiVersion } from
|
|
2
|
-
|
|
3
|
-
//#region src/openapi/parser/utils.d.ts
|
|
1
|
+
import type { OpenApiDocument, HttpMethod, OpenApiVersion } from '../types';
|
|
2
|
+
export declare const HTTP_METHODS: HttpMethod[];
|
|
4
3
|
/**
|
|
5
4
|
* Parse an OpenAPI document from a string (JSON or YAML).
|
|
6
5
|
*/
|
|
7
|
-
declare function parseOpenApiString(content: string, format?: 'json' | 'yaml'): OpenApiDocument;
|
|
6
|
+
export declare function parseOpenApiString(content: string, format?: 'json' | 'yaml'): OpenApiDocument;
|
|
8
7
|
/**
|
|
9
8
|
* Detect the format of content (JSON or YAML).
|
|
10
9
|
*/
|
|
11
|
-
declare function detectFormat(content: string): 'json' | 'yaml';
|
|
10
|
+
export declare function detectFormat(content: string): 'json' | 'yaml';
|
|
12
11
|
/**
|
|
13
12
|
* Detect OpenAPI version from document.
|
|
14
13
|
*/
|
|
15
|
-
declare function detectVersion(doc: OpenApiDocument): OpenApiVersion;
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
export declare function detectVersion(doc: OpenApiDocument): OpenApiVersion;
|
|
15
|
+
/**
|
|
16
|
+
* Generate an operationId if not present.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateOperationId(method: HttpMethod, path: string): string;
|
|
18
19
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/openapi/parser/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE5E,eAAO,MAAM,YAAY,EAAE,UAAU,EASpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,GAAG,MAAe,GAC/B,eAAe,CAKjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAM7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,cAAc,CAMlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/openapi/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* JSON Schema to SchemaModel conversion utilities.
|
|
3
|
+
* Converts OpenAPI JSON Schema to ContractSpec SchemaModel definitions.
|
|
4
|
+
*/
|
|
5
|
+
import type { SchemaFormat, ResolvedContractsrcConfig } from '@contractspec/lib.contracts';
|
|
6
|
+
import type { OpenApiSchema } from './types';
|
|
5
7
|
/**
|
|
6
8
|
* TypeScript type representation for code generation.
|
|
7
9
|
*/
|
|
8
|
-
interface TypescriptType {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
export interface TypescriptType {
|
|
11
|
+
/** The type expression (e.g., "string", "number", "MyModel") */
|
|
12
|
+
type: string;
|
|
13
|
+
/** Whether the type is optional */
|
|
14
|
+
optional: boolean;
|
|
15
|
+
/** Whether the type is an array */
|
|
16
|
+
array: boolean;
|
|
17
|
+
/** Whether this is a primitive type */
|
|
18
|
+
primitive: boolean;
|
|
19
|
+
/** Description for documentation */
|
|
20
|
+
description?: string;
|
|
21
|
+
/** Whether this type is a reference to another schema (needs import) vs inline */
|
|
22
|
+
isReference?: boolean;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* SchemaModel field representation for code generation.
|
|
24
26
|
*/
|
|
25
|
-
interface SchemaField {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
export interface SchemaField {
|
|
28
|
+
/** Field name */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Field type */
|
|
31
|
+
type: TypescriptType;
|
|
32
|
+
/** Scalar type enum value (for FieldType) */
|
|
33
|
+
scalarType?: string;
|
|
34
|
+
/** Enum values if this is an enum type */
|
|
35
|
+
enumValues?: string[];
|
|
36
|
+
/** Nested model if this is an object type */
|
|
37
|
+
nestedModel?: GeneratedModel;
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* Generated model representation.
|
|
39
41
|
*/
|
|
40
|
-
interface GeneratedModel {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
export interface GeneratedModel {
|
|
43
|
+
/** Model name (PascalCase) */
|
|
44
|
+
name: string;
|
|
45
|
+
/** Model description */
|
|
46
|
+
description?: string;
|
|
47
|
+
/** Fields */
|
|
48
|
+
fields: SchemaField[];
|
|
49
|
+
/** Generated TypeScript code */
|
|
50
|
+
code: string;
|
|
51
|
+
/** Required imports */
|
|
52
|
+
imports?: string[];
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Convert a JSON Schema to a TypeScript type representation.
|
|
54
56
|
*/
|
|
55
|
-
declare function jsonSchemaToType(schema: OpenApiSchema, name?: string): TypescriptType;
|
|
57
|
+
export declare function jsonSchemaToType(schema: OpenApiSchema, name?: string): TypescriptType;
|
|
56
58
|
/**
|
|
57
59
|
* Get the ScalarTypeEnum value for a JSON Schema type.
|
|
58
60
|
*/
|
|
59
|
-
declare function getScalarType(schema: OpenApiSchema): string | undefined;
|
|
61
|
+
export declare function getScalarType(schema: OpenApiSchema): string | undefined;
|
|
60
62
|
/**
|
|
61
63
|
* Generate code for a schema model using the specified format.
|
|
62
64
|
*/
|
|
63
|
-
declare function generateSchemaModelCode(schema: OpenApiSchema, modelName: string, schemaFormat?: SchemaFormat, config?: ResolvedContractsrcConfig): GeneratedModel;
|
|
65
|
+
export declare function generateSchemaModelCode(schema: OpenApiSchema, modelName: string, schemaFormat?: SchemaFormat, config?: ResolvedContractsrcConfig): GeneratedModel;
|
|
64
66
|
/**
|
|
65
67
|
* Generate import statements for a SchemaModel.
|
|
66
68
|
*/
|
|
67
|
-
declare function generateImports(fields: SchemaField[], options: ResolvedContractsrcConfig, sameDirectory?: boolean): string;
|
|
68
|
-
//#endregion
|
|
69
|
-
export { GeneratedModel, SchemaField, TypescriptType, generateImports, generateSchemaModelCode, getScalarType, jsonSchemaToType };
|
|
69
|
+
export declare function generateImports(fields: SchemaField[], options: ResolvedContractsrcConfig, sameDirectory?: boolean): string;
|
|
70
70
|
//# sourceMappingURL=schema-converter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-converter.d.ts","
|
|
1
|
+
{"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../src/openapi/schema-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmB7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,IAAI,EAAE,cAAc,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAiBD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,MAAM,GACZ,cAAc,CAyGhB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAsBvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,YAA6B,EAC3C,MAAM,CAAC,EAAE,yBAAyB,GACjC,cAAc,CAahB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,EAAE,yBAAyB,EAClC,aAAa,UAAO,GACnB,MAAM,CA2BR"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema generator factory for multi-format code generation.
|
|
3
|
+
*
|
|
4
|
+
* Provides format-specific generators for OpenAPI to ContractSpec conversion.
|
|
5
|
+
*
|
|
6
|
+
* @module schema-generators
|
|
7
|
+
*/
|
|
8
|
+
import type { ResolvedContractsrcConfig, SchemaFormat } from '@contractspec/lib.contracts';
|
|
9
|
+
import type { OpenApiSchema } from '../types';
|
|
10
|
+
/**
|
|
11
|
+
* Generated code output for a model.
|
|
12
|
+
*/
|
|
13
|
+
export interface GeneratedCode {
|
|
14
|
+
/** The generated TypeScript/JSON code */
|
|
15
|
+
code: string;
|
|
16
|
+
/** File name for the generated code */
|
|
17
|
+
fileName: string;
|
|
18
|
+
/** Required imports */
|
|
19
|
+
imports: string[];
|
|
20
|
+
/** The name of the exported symbol */
|
|
21
|
+
name: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generated code output for a field.
|
|
25
|
+
*/
|
|
26
|
+
export interface GeneratedFieldCode {
|
|
27
|
+
/** The field code snippet */
|
|
28
|
+
code: string;
|
|
29
|
+
/** Type reference for the field */
|
|
30
|
+
typeRef: string;
|
|
31
|
+
/** Whether this is an optional field */
|
|
32
|
+
isOptional: boolean;
|
|
33
|
+
/** Whether this is an array field */
|
|
34
|
+
isArray: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Interface for format-specific schema generators.
|
|
38
|
+
*/
|
|
39
|
+
export interface SchemaGenerator {
|
|
40
|
+
/** Format this generator produces */
|
|
41
|
+
format: SchemaFormat;
|
|
42
|
+
/**
|
|
43
|
+
* Generate code for a complete model/schema.
|
|
44
|
+
*/
|
|
45
|
+
generateModel(schema: OpenApiSchema, name: string, options?: {
|
|
46
|
+
description?: string;
|
|
47
|
+
}): GeneratedCode;
|
|
48
|
+
/**
|
|
49
|
+
* Generate code for a single field.
|
|
50
|
+
*/
|
|
51
|
+
generateField(schema: OpenApiSchema, fieldName: string, required: boolean): GeneratedFieldCode;
|
|
52
|
+
/**
|
|
53
|
+
* Get import statements needed for this generator's output.
|
|
54
|
+
*/
|
|
55
|
+
getBaseImports(): string[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Factory function to create a format-specific schema generator.
|
|
59
|
+
*
|
|
60
|
+
* @param format - The target output format
|
|
61
|
+
* @param config - ContractSpec configuration
|
|
62
|
+
* @returns A schema generator for the specified format
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const generator = createSchemaGenerator('zod', config);
|
|
67
|
+
* const model = generator.generateModel(openApiSchema, 'User');
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function createSchemaGenerator(format: SchemaFormat, config?: ResolvedContractsrcConfig): SchemaGenerator;
|
|
71
|
+
export declare class ContractSpecSchemaGenerator implements SchemaGenerator {
|
|
72
|
+
format: SchemaFormat;
|
|
73
|
+
config?: ResolvedContractsrcConfig;
|
|
74
|
+
constructor(config?: ResolvedContractsrcConfig);
|
|
75
|
+
generateModel(schema: OpenApiSchema, name: string): GeneratedCode;
|
|
76
|
+
generateField(schema: OpenApiSchema, fieldName: string, required: boolean): GeneratedFieldCode;
|
|
77
|
+
getBaseImports(): string[];
|
|
78
|
+
private generateContractSpecSchema;
|
|
79
|
+
private convertField;
|
|
80
|
+
private generateFieldCodeHelper;
|
|
81
|
+
}
|
|
82
|
+
export declare class ZodSchemaGenerator implements SchemaGenerator {
|
|
83
|
+
format: SchemaFormat;
|
|
84
|
+
config?: ResolvedContractsrcConfig;
|
|
85
|
+
constructor(config?: ResolvedContractsrcConfig);
|
|
86
|
+
generateModel(schema: OpenApiSchema, name: string, options?: {
|
|
87
|
+
description?: string;
|
|
88
|
+
}): GeneratedCode;
|
|
89
|
+
generateField(schema: OpenApiSchema, _fieldName: string, required: boolean): GeneratedFieldCode;
|
|
90
|
+
getBaseImports(): string[];
|
|
91
|
+
private generateZodObject;
|
|
92
|
+
private mapTypeToZod;
|
|
93
|
+
}
|
|
94
|
+
export declare class JsonSchemaGenerator implements SchemaGenerator {
|
|
95
|
+
format: SchemaFormat;
|
|
96
|
+
config?: ResolvedContractsrcConfig;
|
|
97
|
+
constructor(config?: ResolvedContractsrcConfig);
|
|
98
|
+
generateModel(schema: OpenApiSchema, name: string, options?: {
|
|
99
|
+
description?: string;
|
|
100
|
+
}): GeneratedCode;
|
|
101
|
+
generateField(schema: OpenApiSchema, _fieldName: string, required: boolean): GeneratedFieldCode;
|
|
102
|
+
getBaseImports(): string[];
|
|
103
|
+
}
|
|
104
|
+
export declare class GraphQLSchemaGenerator implements SchemaGenerator {
|
|
105
|
+
format: SchemaFormat;
|
|
106
|
+
config?: ResolvedContractsrcConfig;
|
|
107
|
+
constructor(config?: ResolvedContractsrcConfig);
|
|
108
|
+
generateModel(schema: OpenApiSchema, name: string, options?: {
|
|
109
|
+
description?: string;
|
|
110
|
+
}): GeneratedCode;
|
|
111
|
+
generateField(schema: OpenApiSchema, _fieldName: string, required: boolean): GeneratedFieldCode;
|
|
112
|
+
getBaseImports(): string[];
|
|
113
|
+
private mapTypeToGraphQL;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openapi/schema-generators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-generators.test.d.ts","sourceRoot":"","sources":["../../src/openapi/schema-generators.test.ts"],"names":[],"mappings":""}
|