@origins-digital/zod-openapi-utils 2.2.0 → 2.2.2
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 +4 -4
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/openapi/dto.d.ts +3 -3
- package/dist/openapi/dto.d.ts.map +1 -1
- package/dist/openapi/dto.js +14 -1
- package/dist/openapi/dto.js.map +1 -1
- package/dist/openapi/dto.spec.js +40 -9
- package/dist/openapi/dto.spec.js.map +1 -1
- package/dist/openapi/zod-to-openapi.d.ts.map +1 -1
- package/dist/openapi/zod-to-openapi.js +174 -49
- package/dist/openapi/zod-to-openapi.js.map +1 -1
- package/dist/openapi/zod-to-openapi.spec.js +236 -12
- package/dist/openapi/zod-to-openapi.spec.js.map +1 -1
- package/package.json +1 -1
- package/dist/openapi/zod.extension.d.ts +0 -26
- package/dist/openapi/zod.extension.d.ts.map +0 -1
- package/dist/openapi/zod.extension.js +0 -31
- package/dist/openapi/zod.extension.js.map +0 -1
- package/dist/openapi/zod.extension.spec.d.ts +0 -2
- package/dist/openapi/zod.extension.spec.d.ts.map +0 -1
- package/dist/openapi/zod.extension.spec.js +0 -24
- package/dist/openapi/zod.extension.spec.js.map +0 -1
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ export class AppModule {
|
|
|
54
54
|
import { z } from 'zod';
|
|
55
55
|
import { createZodDto } from '@origins-digital/zod-openapi-utils';
|
|
56
56
|
|
|
57
|
-
// Define your Zod schema with .
|
|
57
|
+
// Define your Zod schema with .meta() OpenAPI metadata
|
|
58
58
|
const UserSchema = z
|
|
59
59
|
.object({
|
|
60
60
|
id: z.string().uuid(),
|
|
@@ -62,9 +62,9 @@ const UserSchema = z
|
|
|
62
62
|
name: z.string().min(2).max(100),
|
|
63
63
|
age: z.number().int().min(0).max(120),
|
|
64
64
|
createdAt: z.date(),
|
|
65
|
-
password: z.string().min(8).password()
|
|
65
|
+
password: z.string().min(8), // use helpers like z.password() if available
|
|
66
66
|
})
|
|
67
|
-
.
|
|
67
|
+
.meta({
|
|
68
68
|
title: 'User',
|
|
69
69
|
description: 'User entity schema',
|
|
70
70
|
});
|
|
@@ -94,7 +94,7 @@ export class UsersController {
|
|
|
94
94
|
- **Unions and Enums**
|
|
95
95
|
- **Lazy Schemas**: recursive and circular references
|
|
96
96
|
- **Custom Formats**: password, time, etc.
|
|
97
|
-
- **Nested types**: This package is also able to detect nested types when using
|
|
97
|
+
- **Nested types**: This package is also able to detect nested types when using metadata via `.meta()` and create the reference in the OpenAPI spec.
|
|
98
98
|
|
|
99
99
|
## Error Handling
|
|
100
100
|
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./openapi/zod.extension"), exports);
|
|
18
17
|
__exportStar(require("./openapi/zod-to-openapi"), exports);
|
|
19
18
|
__exportStar(require("./openapi/make-open-api"), exports);
|
|
20
19
|
__exportStar(require("./openapi/dto"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0DAAwC;AACxC,gDAA8B;AAC9B,0DAAwC"}
|
package/dist/openapi/dto.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ZodType } from 'zod';
|
|
2
2
|
export interface ZodDto<TOutput = any> {
|
|
3
3
|
new (): TOutput;
|
|
4
4
|
isZodDto: true;
|
|
5
|
-
schema:
|
|
5
|
+
schema: ZodType<TOutput>;
|
|
6
6
|
create(input: unknown): TOutput;
|
|
7
7
|
}
|
|
8
|
-
export declare function createZodDto<TOutput = any>(schema:
|
|
8
|
+
export declare function createZodDto<TOutput = any>(schema: ZodType<TOutput>, refTitle?: string): ZodDto<TOutput>;
|
|
9
9
|
export declare function isZodDto(metatype: any): metatype is ZodDto<unknown>;
|
|
10
10
|
//# sourceMappingURL=dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGnC,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,GAAG;IACnC,QAAQ,OAAO,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAG,GAAG,EACxC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EACxB,QAAQ,CAAC,EAAE,MAAM,GAgCoB,MAAM,CAAC,OAAO,CAAC,CACrD;AAGD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,CAEnE"}
|
package/dist/openapi/dto.js
CHANGED
|
@@ -2,7 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createZodDto = createZodDto;
|
|
4
4
|
exports.isZodDto = isZodDto;
|
|
5
|
-
function createZodDto(schema) {
|
|
5
|
+
function createZodDto(schema, refTitle) {
|
|
6
|
+
if (refTitle) {
|
|
7
|
+
// Try to record the title via Zod's meta API when available
|
|
8
|
+
if (schema.meta && typeof schema.meta === 'function') {
|
|
9
|
+
const currentMeta = schema.meta();
|
|
10
|
+
schema.meta(Object.assign(Object.assign({}, (currentMeta || {})), { title: refTitle }));
|
|
11
|
+
}
|
|
12
|
+
// Also store on _def.metadata so objects (where meta() may not be readable)
|
|
13
|
+
// still expose the title to zodToOpenAPI.
|
|
14
|
+
const def = schema._def;
|
|
15
|
+
if (def) {
|
|
16
|
+
def.metadata = Object.assign(Object.assign({}, (def.metadata || {})), { title: refTitle });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
6
19
|
class AugmentedZodDto {
|
|
7
20
|
static create(input) {
|
|
8
21
|
return this.schema.parse(input);
|
package/dist/openapi/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":";;AAUA,oCAmCC;AAGD,4BAEC;AAxCD,SAAgB,YAAY,CAC1B,MAAwB,EACxB,QAAiB;IAEjB,IAAI,QAAQ,EAAE,CAAC;QACb,4DAA4D;QAC5D,IAAK,MAAc,CAAC,IAAI,IAAI,OAAQ,MAAc,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvE,MAAM,WAAW,GAAI,MAAc,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAc,CAAC,IAAI,iCACf,CAAC,WAAW,IAAI,EAAE,CAAC,KACtB,KAAK,EAAE,QAAQ,IACf,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,0CAA0C;QAC1C,MAAM,GAAG,GAAS,MAAc,CAAC,IAAI,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,mCACP,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,KACvB,KAAK,EAAE,QAAQ,GAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,eAAe;QAIZ,MAAM,CAAC,MAAM,CAAC,KAAc;YACjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;;IALa,wBAAQ,GAAG,IAAI,CAAC;IAChB,sBAAM,GAAG,MAAM,CAAC;IAOhC,OAAO,eAA6C,CAAC;AACvD,CAAC;AAED,8DAA8D;AAC9D,SAAgB,QAAQ,CAAC,QAAa;IACpC,OAAO,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAA,CAAC;AAC9B,CAAC"}
|
package/dist/openapi/dto.spec.js
CHANGED
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const zod_1 = require("zod");
|
|
4
4
|
const dto_1 = require("./dto");
|
|
5
|
-
const zod_extension_1 = require("./zod.extension");
|
|
6
5
|
const zod_to_openapi_1 = require("./zod-to-openapi");
|
|
7
6
|
describe('createZodDto', () => {
|
|
8
|
-
beforeAll(() => {
|
|
9
|
-
(0, zod_extension_1.extendZodWithOpenApi)(zod_1.z, true);
|
|
10
|
-
});
|
|
11
7
|
it('should create a ZodDto class with static schema and create()', () => {
|
|
12
8
|
const schema = zod_1.z.object({
|
|
13
|
-
id: zod_1.z.
|
|
9
|
+
id: zod_1.z.uuid(),
|
|
14
10
|
name: zod_1.z.string(),
|
|
15
11
|
});
|
|
16
12
|
const UserDto = (0, dto_1.createZodDto)(schema);
|
|
@@ -28,13 +24,13 @@ describe('createZodDto', () => {
|
|
|
28
24
|
expect((0, dto_1.isZodDto)(class {
|
|
29
25
|
})).toBe(false);
|
|
30
26
|
});
|
|
31
|
-
it('should work with
|
|
27
|
+
it('should work with metadata and zodToOpenAPI', () => {
|
|
32
28
|
const schema = zod_1.z
|
|
33
29
|
.object({
|
|
34
|
-
id: zod_1.z.
|
|
35
|
-
email: zod_1.z.
|
|
30
|
+
id: zod_1.z.uuid(),
|
|
31
|
+
email: zod_1.z.email(),
|
|
36
32
|
})
|
|
37
|
-
.
|
|
33
|
+
.meta({ title: 'UserDto' });
|
|
38
34
|
const UserDto = (0, dto_1.createZodDto)(schema);
|
|
39
35
|
// schema debe conservarse tal cual en el DTO
|
|
40
36
|
expect(UserDto.schema).toBe(schema);
|
|
@@ -43,5 +39,40 @@ describe('createZodDto', () => {
|
|
|
43
39
|
expect(openapiSchema.title).toBe('UserDto');
|
|
44
40
|
expect(openapiSchema.properties.email.format).toBe('email');
|
|
45
41
|
});
|
|
42
|
+
it('should generate $ref for shared nested DTOs across multiple parents', () => {
|
|
43
|
+
// Define shared child schema B
|
|
44
|
+
const BSchema = zod_1.z.object({
|
|
45
|
+
id: zod_1.z.uuid(),
|
|
46
|
+
value: zod_1.z.string(),
|
|
47
|
+
});
|
|
48
|
+
// Parent A with nested B
|
|
49
|
+
const ASchema = zod_1.z.object({
|
|
50
|
+
id: zod_1.z.uuid(),
|
|
51
|
+
b: BSchema,
|
|
52
|
+
});
|
|
53
|
+
// Parent C with nested B
|
|
54
|
+
const CSchema = zod_1.z.object({
|
|
55
|
+
id: zod_1.z.uuid(),
|
|
56
|
+
name: zod_1.z.string(),
|
|
57
|
+
b: BSchema,
|
|
58
|
+
});
|
|
59
|
+
// Create DTOs and assign explicit OpenAPI titles via refTitle
|
|
60
|
+
const BDto = (0, dto_1.createZodDto)(BSchema, 'BDto');
|
|
61
|
+
const ADto = (0, dto_1.createZodDto)(ASchema, 'ADto');
|
|
62
|
+
const CDto = (0, dto_1.createZodDto)(CSchema, 'CDto');
|
|
63
|
+
// Top-level B should be an inline object schema
|
|
64
|
+
const bOpenApi = (0, zod_to_openapi_1.zodToOpenAPI)(BDto.schema);
|
|
65
|
+
expect(bOpenApi.type).toBe('object');
|
|
66
|
+
expect(bOpenApi.properties.value.type).toBe('string');
|
|
67
|
+
// Nested references in A and C should be $ref to the shared BDto schema
|
|
68
|
+
const aOpenApi = (0, zod_to_openapi_1.zodToOpenAPI)(ADto.schema);
|
|
69
|
+
const cOpenApi = (0, zod_to_openapi_1.zodToOpenAPI)(CDto.schema);
|
|
70
|
+
expect(aOpenApi.properties.b).toEqual({
|
|
71
|
+
$ref: '#/components/schemas/BDto',
|
|
72
|
+
});
|
|
73
|
+
expect(cOpenApi.properties.b).toEqual({
|
|
74
|
+
$ref: '#/components/schemas/BDto',
|
|
75
|
+
});
|
|
76
|
+
});
|
|
46
77
|
});
|
|
47
78
|
//# sourceMappingURL=dto.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.spec.js","sourceRoot":"","sources":["../../src/openapi/dto.spec.ts"],"names":[],"mappings":";;AAAA,6BAAwB;AACxB,+BAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"dto.spec.js","sourceRoot":"","sources":["../../src/openapi/dto.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-to-openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAEL,YAAY,EACb,MAAM,yDAAyD,CAAC;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAC7C,KAAK,EAAE,CAAC,CAAC,UAAU,EACnB,OAAO,EAAE,CAAC,GACT,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAI1B;
|
|
1
|
+
{"version":3,"file":"zod-to-openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAEL,YAAY,EACb,MAAM,yDAAyD,CAAC;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAC7C,KAAK,EAAE,CAAC,CAAC,UAAU,EACnB,OAAO,EAAE,CAAC,GACT,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAI1B;AAoFD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,CAAC,CAAC,UAAU,EACrB,OAAO,GAAE,mBAAwB;;EAyblC"}
|
|
@@ -12,17 +12,34 @@ function is(input, factory) {
|
|
|
12
12
|
const def = input._def;
|
|
13
13
|
return factory === factories[def === null || def === void 0 ? void 0 : def.typeName];
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function getZodMeta(zodType) {
|
|
16
|
+
if (!zodType)
|
|
17
|
+
return undefined;
|
|
18
|
+
const metaFn = zodType.meta;
|
|
19
|
+
if (typeof metaFn === 'function') {
|
|
20
|
+
try {
|
|
21
|
+
const meta = metaFn.call(zodType);
|
|
22
|
+
if (meta && typeof meta === 'object') {
|
|
23
|
+
return meta;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (_a) {
|
|
27
|
+
// ignore and fall back to _def.metadata
|
|
28
|
+
}
|
|
29
|
+
}
|
|
16
30
|
const def = zodType._def;
|
|
17
|
-
|
|
18
|
-
|
|
31
|
+
return def === null || def === void 0 ? void 0 : def.metadata;
|
|
32
|
+
}
|
|
33
|
+
function applyOpenAPIMetadata(zodType, object) {
|
|
34
|
+
const openapi = getZodMeta(zodType);
|
|
35
|
+
if (openapi) {
|
|
19
36
|
if (openapi.title) {
|
|
20
37
|
object.title = openapi.title;
|
|
21
38
|
}
|
|
22
39
|
if (openapi.description) {
|
|
23
40
|
object.description = openapi.description;
|
|
24
41
|
}
|
|
25
|
-
if (openapi.example) {
|
|
42
|
+
if (openapi.example !== undefined) {
|
|
26
43
|
object.example = openapi.example;
|
|
27
44
|
}
|
|
28
45
|
if (openapi.examples) {
|
|
@@ -43,8 +60,27 @@ function applyOpenAPIMetadata(zodType, object) {
|
|
|
43
60
|
if (openapi.format) {
|
|
44
61
|
object.format = openapi.format;
|
|
45
62
|
}
|
|
63
|
+
// Allow overriding pattern via meta for non-standard formats.
|
|
64
|
+
// Pattern from meta wins over internal regex as long as the format
|
|
65
|
+
// is not one of the standard OpenAPI formats.
|
|
66
|
+
if (openapi.pattern) {
|
|
67
|
+
const standardFormats = new Set([
|
|
68
|
+
'email',
|
|
69
|
+
'uri',
|
|
70
|
+
'hostname',
|
|
71
|
+
'uuid',
|
|
72
|
+
'date',
|
|
73
|
+
'date-time',
|
|
74
|
+
'ipv4',
|
|
75
|
+
'ipv6',
|
|
76
|
+
'byte',
|
|
77
|
+
]);
|
|
78
|
+
if (!object.format || !standardFormats.has(object.format)) {
|
|
79
|
+
object.pattern = openapi.pattern;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
46
82
|
}
|
|
47
|
-
else if (zodType
|
|
83
|
+
else if (zodType === null || zodType === void 0 ? void 0 : zodType.description) {
|
|
48
84
|
object.description = zodType.description;
|
|
49
85
|
}
|
|
50
86
|
}
|
|
@@ -58,37 +94,118 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
58
94
|
const object = {};
|
|
59
95
|
// Handle OpenAPI metadata
|
|
60
96
|
applyOpenAPIMetadata(zodType, object);
|
|
61
|
-
const meta = (
|
|
97
|
+
const meta = getZodMeta(zodType);
|
|
62
98
|
if (generateRef && child && (meta === null || meta === void 0 ? void 0 : meta.title)) {
|
|
63
99
|
// For child schemas with a named component, emit only a $ref
|
|
64
100
|
return {
|
|
65
101
|
$ref: `#/components/schemas/${meta.title}`,
|
|
66
102
|
};
|
|
67
103
|
}
|
|
68
|
-
// Handle Zod v4
|
|
69
|
-
// which
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
104
|
+
// Handle Zod v4 string-format helpers (z.email(), z.url(), z.hostname(), z.iso.*, etc.)
|
|
105
|
+
// which may encode format either directly on _def or nested in checks[].def
|
|
106
|
+
const rootDef = zodType._def;
|
|
107
|
+
let stringFormatDef;
|
|
108
|
+
if (rootDef &&
|
|
109
|
+
rootDef.type === 'string' &&
|
|
110
|
+
rootDef.check === 'string_format' &&
|
|
111
|
+
typeof rootDef.format === 'string') {
|
|
112
|
+
stringFormatDef = rootDef;
|
|
113
|
+
}
|
|
114
|
+
else if (rootDef && Array.isArray(rootDef.checks)) {
|
|
115
|
+
for (const check of rootDef.checks) {
|
|
116
|
+
const inner = check.def;
|
|
117
|
+
if (inner &&
|
|
118
|
+
inner.type === 'string' &&
|
|
119
|
+
inner.check === 'string_format' &&
|
|
120
|
+
typeof inner.format === 'string') {
|
|
121
|
+
stringFormatDef = inner;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
81
124
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
125
|
+
}
|
|
126
|
+
if (stringFormatDef) {
|
|
127
|
+
object.type = 'string';
|
|
128
|
+
const fmt = stringFormatDef.format;
|
|
129
|
+
// Only overwrite format from internals if metadata has not already set one
|
|
130
|
+
const setFormat = (value) => {
|
|
131
|
+
if (!object.format) {
|
|
132
|
+
object.format = value;
|
|
86
133
|
}
|
|
134
|
+
};
|
|
135
|
+
switch (fmt) {
|
|
136
|
+
case 'email':
|
|
137
|
+
setFormat('email');
|
|
138
|
+
break;
|
|
139
|
+
case 'url':
|
|
140
|
+
// OpenAPI standard uses 'uri'
|
|
141
|
+
setFormat('uri');
|
|
142
|
+
break;
|
|
143
|
+
case 'hostname':
|
|
144
|
+
setFormat('hostname');
|
|
145
|
+
break;
|
|
146
|
+
case 'uuid':
|
|
147
|
+
setFormat('uuid');
|
|
148
|
+
break;
|
|
149
|
+
case 'datetime':
|
|
150
|
+
setFormat('date-time');
|
|
151
|
+
break;
|
|
152
|
+
case 'date':
|
|
153
|
+
setFormat('date');
|
|
154
|
+
break;
|
|
155
|
+
case 'time':
|
|
156
|
+
// No standard time format; reuse pattern
|
|
157
|
+
setFormat('time');
|
|
158
|
+
break;
|
|
159
|
+
case 'emoji':
|
|
160
|
+
case 'base64url':
|
|
161
|
+
case 'hex':
|
|
162
|
+
case 'jwt':
|
|
163
|
+
case 'nanoid':
|
|
164
|
+
case 'cuid':
|
|
165
|
+
case 'cuid2':
|
|
166
|
+
case 'ulid':
|
|
167
|
+
case 'ipv4':
|
|
168
|
+
case 'ipv6':
|
|
169
|
+
case 'cidrv4':
|
|
170
|
+
case 'cidrv6':
|
|
171
|
+
case 'duration':
|
|
172
|
+
case 'sha256_hex':
|
|
173
|
+
// Custom formats are allowed in OpenAPI; propagate as-is
|
|
174
|
+
setFormat(fmt);
|
|
175
|
+
break;
|
|
176
|
+
case 'base64':
|
|
177
|
+
// Map base64 to standard OpenAPI 'byte' format
|
|
178
|
+
setFormat('byte');
|
|
179
|
+
break;
|
|
180
|
+
default:
|
|
181
|
+
// Unknown string_format helpers - just propagate the format string
|
|
182
|
+
setFormat(fmt);
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
// Propagate regex pattern when available ONLY for non-standard OpenAPI formats,
|
|
186
|
+
// and only if it has not been explicitly overridden via meta().
|
|
187
|
+
// Standard formats like email/uri/hostname/uuid/date/date-time/ipv4/ipv6/byte
|
|
188
|
+
// don't need a pattern in OpenAPI and tools often ignore it.
|
|
189
|
+
const standardFormats = new Set([
|
|
190
|
+
'email',
|
|
191
|
+
'uri',
|
|
192
|
+
'hostname',
|
|
193
|
+
'uuid',
|
|
194
|
+
'date',
|
|
195
|
+
'date-time',
|
|
196
|
+
'ipv4',
|
|
197
|
+
'ipv6',
|
|
198
|
+
'byte',
|
|
199
|
+
]);
|
|
200
|
+
if (stringFormatDef.pattern instanceof RegExp &&
|
|
201
|
+
(!object.format || !standardFormats.has(object.format)) &&
|
|
202
|
+
!object.pattern) {
|
|
203
|
+
object.pattern = stringFormatDef.pattern.source;
|
|
87
204
|
}
|
|
88
205
|
}
|
|
89
206
|
if (zodType instanceof zod_1.z.ZodString) {
|
|
90
207
|
const def = zodType._def;
|
|
91
|
-
const checks = (
|
|
208
|
+
const checks = (_a = def.checks) !== null && _a !== void 0 ? _a : [];
|
|
92
209
|
object.type = 'string';
|
|
93
210
|
for (const check of checks) {
|
|
94
211
|
if (check.kind === 'min') {
|
|
@@ -123,12 +240,12 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
123
240
|
}
|
|
124
241
|
}
|
|
125
242
|
}
|
|
126
|
-
if (
|
|
243
|
+
if (zodType instanceof zod_1.z.ZodBoolean) {
|
|
127
244
|
object.type = 'boolean';
|
|
128
245
|
}
|
|
129
|
-
if (
|
|
246
|
+
if (zodType instanceof zod_1.z.ZodNumber) {
|
|
130
247
|
const def = zodType._def;
|
|
131
|
-
const checks = (
|
|
248
|
+
const checks = (_b = def.checks) !== null && _b !== void 0 ? _b : [];
|
|
132
249
|
object.type = 'number';
|
|
133
250
|
for (const check of checks) {
|
|
134
251
|
if (check.kind === 'int') {
|
|
@@ -147,19 +264,19 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
147
264
|
}
|
|
148
265
|
}
|
|
149
266
|
}
|
|
150
|
-
if (
|
|
267
|
+
if (zodType instanceof zod_1.z.ZodDate) {
|
|
151
268
|
const def = zodType._def;
|
|
152
|
-
const checks = (
|
|
269
|
+
const checks = (_c = def.checks) !== null && _c !== void 0 ? _c : [];
|
|
153
270
|
object.type = 'string';
|
|
154
271
|
for (const check of checks) {
|
|
155
272
|
object.format = 'data-time';
|
|
156
273
|
}
|
|
157
274
|
}
|
|
158
|
-
if (
|
|
275
|
+
if (zodType instanceof zod_1.z.ZodBigInt) {
|
|
159
276
|
object.type = 'integer';
|
|
160
277
|
object.format = 'int64';
|
|
161
278
|
}
|
|
162
|
-
if (
|
|
279
|
+
if (zodType instanceof zod_1.z.ZodArray) {
|
|
163
280
|
const def = zodType._def;
|
|
164
281
|
const minLength = def.minLength;
|
|
165
282
|
const maxLength = def.maxLength;
|
|
@@ -176,9 +293,9 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
176
293
|
object.items = {};
|
|
177
294
|
}
|
|
178
295
|
}
|
|
179
|
-
if (
|
|
296
|
+
if (zodType instanceof zod_1.z.ZodTuple) {
|
|
180
297
|
const def = zodType._def;
|
|
181
|
-
const items = (
|
|
298
|
+
const items = (_d = def.items) !== null && _d !== void 0 ? _d : [];
|
|
182
299
|
object.type = 'array';
|
|
183
300
|
object.items = {
|
|
184
301
|
oneOf: items
|
|
@@ -186,7 +303,7 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
186
303
|
.map((item) => zodToOpenAPI(item, { visited, child: true, generateRef })),
|
|
187
304
|
};
|
|
188
305
|
}
|
|
189
|
-
if (
|
|
306
|
+
if (zodType instanceof zod_1.z.ZodSet) {
|
|
190
307
|
const def = zodType._def;
|
|
191
308
|
const valueType = def.valueType;
|
|
192
309
|
const minSize = def.minSize;
|
|
@@ -203,9 +320,9 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
203
320
|
});
|
|
204
321
|
object.uniqueItems = true;
|
|
205
322
|
}
|
|
206
|
-
if (
|
|
323
|
+
if (zodType instanceof zod_1.z.ZodUnion) {
|
|
207
324
|
const def = zodType._def;
|
|
208
|
-
const options = (
|
|
325
|
+
const options = (_e = def.options) !== null && _e !== void 0 ? _e : [];
|
|
209
326
|
object.oneOf = [];
|
|
210
327
|
for (const schema of options) {
|
|
211
328
|
if (!schema) {
|
|
@@ -221,9 +338,9 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
221
338
|
}
|
|
222
339
|
}
|
|
223
340
|
}
|
|
224
|
-
if (
|
|
341
|
+
if (zodType instanceof zod_1.z.ZodDiscriminatedUnion) {
|
|
225
342
|
const def = zodType._def;
|
|
226
|
-
const options = (
|
|
343
|
+
const options = (_f = def.options) !== null && _f !== void 0 ? _f : new Map();
|
|
227
344
|
object.discriminator = {
|
|
228
345
|
propertyName: def.discriminator,
|
|
229
346
|
};
|
|
@@ -232,7 +349,7 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
232
349
|
object.oneOf.push(zodToOpenAPI(schema, { visited, child: true, generateRef }));
|
|
233
350
|
}
|
|
234
351
|
}
|
|
235
|
-
if (
|
|
352
|
+
if (zodType instanceof zod_1.z.ZodLiteral) {
|
|
236
353
|
const def = zodType._def;
|
|
237
354
|
const value = def.value;
|
|
238
355
|
if (typeof value === 'string') {
|
|
@@ -249,19 +366,21 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
249
366
|
object.type = 'boolean';
|
|
250
367
|
}
|
|
251
368
|
}
|
|
252
|
-
if (
|
|
369
|
+
if (zodType instanceof zod_1.z.ZodEnum) {
|
|
253
370
|
const def = zodType._def;
|
|
254
|
-
|
|
371
|
+
// Zod v4 stores enum options in _def.entries (object map), older versions
|
|
372
|
+
// used _def.values (array). Support both to populate OpenAPI enum values.
|
|
373
|
+
const rawValues = (_h = (_g = def.values) !== null && _g !== void 0 ? _g : (def.entries ? Object.values(def.entries) : undefined)) !== null && _h !== void 0 ? _h : [];
|
|
255
374
|
object.type = 'string';
|
|
256
|
-
object.enum =
|
|
375
|
+
object.enum = rawValues;
|
|
257
376
|
}
|
|
258
|
-
if (
|
|
377
|
+
if (zodType instanceof zod_1.z.ZodNullable) {
|
|
259
378
|
const def = zodType._def;
|
|
260
379
|
const innerType = def.innerType;
|
|
261
380
|
Object.assign(object, zodToOpenAPI(innerType, { visited, child: true, generateRef }));
|
|
262
381
|
object.nullable = true;
|
|
263
382
|
}
|
|
264
|
-
if (
|
|
383
|
+
if (zodType instanceof zod_1.z.ZodOptional) {
|
|
265
384
|
const def = zodType._def;
|
|
266
385
|
const innerType = def.innerType;
|
|
267
386
|
const innerSchema = zodToOpenAPI(innerType, {
|
|
@@ -272,7 +391,7 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
272
391
|
Object.assign(object, innerSchema);
|
|
273
392
|
// Mark as optional by not adding to required array (handled in ZodObject)
|
|
274
393
|
}
|
|
275
|
-
if (
|
|
394
|
+
if (zodType instanceof zod_1.z.ZodDefault) {
|
|
276
395
|
const def = zodType._def;
|
|
277
396
|
const defaultValue = def.defaultValue;
|
|
278
397
|
const innerType = def.innerType;
|
|
@@ -300,7 +419,7 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
300
419
|
delete object.required;
|
|
301
420
|
}
|
|
302
421
|
}
|
|
303
|
-
if (
|
|
422
|
+
if (zodType instanceof zod_1.z.ZodRecord) {
|
|
304
423
|
const def = zodType._def;
|
|
305
424
|
const valueType = def.valueType;
|
|
306
425
|
object.type = 'object';
|
|
@@ -310,7 +429,7 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
310
429
|
generateRef,
|
|
311
430
|
});
|
|
312
431
|
}
|
|
313
|
-
if (
|
|
432
|
+
if (zodType instanceof zod_1.z.ZodIntersection) {
|
|
314
433
|
const def = zodType._def;
|
|
315
434
|
const left = def.left;
|
|
316
435
|
const right = def.right;
|
|
@@ -335,10 +454,16 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
335
454
|
}
|
|
336
455
|
Object.assign(object, merged);
|
|
337
456
|
}
|
|
338
|
-
if (
|
|
457
|
+
if (zodType instanceof zod_1.z.ZodLazy) {
|
|
339
458
|
const { getter } = zodType._def;
|
|
340
|
-
if (visited.has(getter))
|
|
459
|
+
if (visited.has(getter)) {
|
|
460
|
+
// Recursive reference: represent as a generic object to avoid
|
|
461
|
+
// infinite recursion while still indicating object type.
|
|
462
|
+
if (!object.type) {
|
|
463
|
+
object.type = 'object';
|
|
464
|
+
}
|
|
341
465
|
return object;
|
|
466
|
+
}
|
|
342
467
|
visited.add(getter);
|
|
343
468
|
try {
|
|
344
469
|
// Force evaluation of the lazy schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-to-openapi.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zod-to-openapi.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":";;;;;AAiBA,gBAOC;AAoFD,oCA2bC;AAjiBD,0DAAkC;AAClC,6BAAwB;AAUxB,SAAgB,EAAE,CAChB,KAAmB,EACnB,OAAU;IAEV,MAAM,SAAS,GAAG,OAAkD,CAAC;IACrE,MAAM,GAAG,GAAS,KAAa,CAAC,IAAI,CAAC;IACrC,OAAO,OAAO,KAAK,SAAS,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,OAAqB;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,MAAM,GAAI,OAAe,CAAC,IAAI,CAAC;IACrC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,WAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;IACvC,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAqB,EAAE,MAAW;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACjC,CAAC;QAED,8DAA8D;QAC9D,mEAAmE;QACnE,8CAA8C;QAC9C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;gBAC9B,OAAO;gBACP,KAAK;gBACL,UAAU;gBACV,MAAM;gBACN,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAK,OAAe,aAAf,OAAO,uBAAP,OAAO,CAAU,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,WAAW,GAAI,OAAe,CAAC,WAAW,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAC1B,OAAqB,EACrB,UAA+B,EAAE;;IAEjC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3E,6CAA6C;IAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,0BAA0B;IAC1B,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAQ,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,WAAW,IAAI,KAAK,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,EAAE,CAAC;QACxC,6DAA6D;QAC7D,OAAO;YACL,IAAI,EAAE,wBAAwB,IAAI,CAAC,KAAK,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,wFAAwF;IACxF,4EAA4E;IAC5E,MAAM,OAAO,GAAS,OAAe,CAAC,IAAI,CAAC;IAE3C,IAAI,eAAgC,CAAC;IACrC,IACE,OAAO;QACP,OAAO,CAAC,IAAI,KAAK,QAAQ;QACzB,OAAO,CAAC,KAAK,KAAK,eAAe;QACjC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAClC,CAAC;QACD,eAAe,GAAG,OAAO,CAAC;IAC5B,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAe,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAI,KAAa,CAAC,GAAG,CAAC;YACjC,IACE,KAAK;gBACL,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACvB,KAAK,CAAC,KAAK,KAAK,eAAe;gBAC/B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAChC,CAAC;gBACD,eAAe,GAAG,KAAK,CAAC;gBACxB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEvB,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC;QAEnC,2EAA2E;QAC3E,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,OAAO;gBACV,SAAS,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM;YACR,KAAK,KAAK;gBACR,8BAA8B;gBAC9B,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,UAAU;gBACb,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClB,MAAM;YACR,KAAK,UAAU;gBACb,SAAS,CAAC,WAAW,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,MAAM;gBACT,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClB,MAAM;YACR,KAAK,MAAM;gBACT,yCAAyC;gBACzC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClB,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,WAAW,CAAC;YACjB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,YAAY;gBACf,yDAAyD;gBACzD,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,KAAK,QAAQ;gBACX,+CAA+C;gBAC/C,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClB,MAAM;YACR;gBACE,mEAAmE;gBACnE,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM;QACV,CAAC;QAED,gFAAgF;QAChF,gEAAgE;QAChE,8EAA8E;QAC9E,6DAA6D;QAC7D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;YAC9B,OAAO;YACP,KAAK;YACL,UAAU;YACV,MAAM;YACN,MAAM;YACN,WAAW;YACX,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAC,CAAC;QACH,IACE,eAAe,CAAC,OAAO,YAAY,MAAM;YACzC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC,MAAM,CAAC,OAAO,EACf,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,MAAM,GAAU,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YACjC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YACjC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;YAC1B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;YAC9B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,GAAG,8BAA8B,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,MAAM,GAAU,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YAC1B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC7B,MAAM,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YAC7C,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC7B,MAAM,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YAC7C,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,MAAM,GAAU,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,IAAI,GAA6B,GAAG,CAAC,IAAI,CAAC;QAChD,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;QACtB,IAAI,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;QACjD,IAAI,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;QACjD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,KAAK,GAAmB,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;QACtB,MAAM,CAAC,KAAK,GAAG;YACb,KAAK,EAAE,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC;iBACrD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC1D;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,SAAS,GAAiB,GAAG,CAAC,SAAS,CAAC;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;QACtB,IAAI,OAAO;YAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7C,IAAI,OAAO;YAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7C,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE;YACrC,OAAO;YACP,KAAK,EAAE,IAAI;YACX,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,OAAO,GAAmB,MAAA,GAAG,CAAC,OAAO,mCAAI,EAAE,CAAC;QAClD,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,EAAE;gBACxC,OAAO;gBACP,KAAK,EAAE,IAAI;gBACX,WAAW;aACZ,CAAC,CAAC;YACH,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,qBAAqB,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,OAAO,GAA8B,MAAA,GAAG,CAAC,OAAO,mCAAI,IAAI,GAAG,EAAE,CAAC;QACpE,MAAM,CAAC,aAAa,GAAG;YACrB,YAAY,EAAE,GAAG,CAAC,aAAa;SAChC,CAAC;QACF,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,mEAAmE;YACnE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,SAAS,GACb,MAAA,MAAA,GAAG,CAAC,MAAM,mCACV,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mCACtD,EAAE,CAAC;QACL,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,SAAS,GAAiB,GAAG,CAAC,SAAS,CAAC;QAC9C,MAAM,CAAC,MAAM,CACX,MAAM,EACN,YAAY,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC/D,CAAC;QACF,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,SAAS,GAAiB,GAAG,CAAC,SAAS,CAAC;QAC9C,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,EAAE;YAC1C,OAAO;YACP,KAAK,EAAE,IAAI;YACX,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,0EAA0E;IAC5E,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,YAAY,GAAkB,GAAG,CAAC,YAAY,CAAC;QACrD,MAAM,SAAS,GAAiB,GAAG,CAAC,SAAS,CAAC;QAC9C,MAAM,CAAC,MAAM,CACX,MAAM,EACN,YAAY,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC/D,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,QAAQ,GACZ,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5D,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAe,QAAQ,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;gBAC5C,OAAO;gBACP,KAAK,EAAE,IAAI;gBACX,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,CAAC,OAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU;gBAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,SAAS,GAAiB,GAAG,CAAC,SAAS,CAAC;QAC9C,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,oBAAoB,GAAG,YAAY,CAAC,SAAS,EAAE;YACpD,OAAO;YACP,KAAK,EAAE,IAAI;YACX,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,GAAG,GAAS,OAAe,CAAC,IAAI,CAAC;QACvC,MAAM,IAAI,GAAiB,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAiB,GAAG,CAAC,KAAK,CAAC;QAEtC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE;YACpC,OAAO;YACP,KAAK,EAAE,IAAI;YACX,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE;YACtC,OAAO;YACP,KAAK,EAAE,IAAI;YACX,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,MAA4B,CAAC;QAEjC,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;YAClD,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,wBAAwB;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAA,mBAAS,EAAC,UAAU,EAAE,WAAW,EAAE;gBAC1C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,YAAY,OAAC,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,MAAM,EAAE,GAAI,OAAe,CAAC,IAAI,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,8DAA8D;YAC9D,yDAAyD;YACzD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACzB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,cAAc,GAAG,MAAM,EAAkB,CAAC;YAEhD,0CAA0C;YAC1C,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE;gBAClD,OAAO;gBACP,KAAK,EAAE,IAAI;gBACX,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8DAA8D;YAC9D,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -2,13 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const zod_1 = require("zod");
|
|
4
4
|
const zod_to_openapi_1 = require("./zod-to-openapi");
|
|
5
|
-
const zod_extension_1 = require("./zod.extension");
|
|
6
5
|
describe('zodToOpenAPI', () => {
|
|
7
|
-
beforeAll(() => {
|
|
8
|
-
(0, zod_extension_1.extendZodWithOpenApi)(zod_1.z, true);
|
|
9
|
-
});
|
|
10
6
|
it('should generate basic schema for string with metadata', () => {
|
|
11
|
-
const schema = zod_1.z.string().min(3).max(10).
|
|
7
|
+
const schema = zod_1.z.string().min(3).max(10).meta({
|
|
12
8
|
title: 'Name',
|
|
13
9
|
description: 'User name',
|
|
14
10
|
format: 'email',
|
|
@@ -27,7 +23,7 @@ describe('zodToOpenAPI', () => {
|
|
|
27
23
|
id: zod_1.z.uuid(),
|
|
28
24
|
name: zod_1.z.string().optional(),
|
|
29
25
|
})
|
|
30
|
-
.
|
|
26
|
+
.meta({ title: 'User' });
|
|
31
27
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
32
28
|
expect(result.type).toBe('object');
|
|
33
29
|
expect(result.properties).toBeDefined();
|
|
@@ -40,38 +36,38 @@ describe('zodToOpenAPI', () => {
|
|
|
40
36
|
}
|
|
41
37
|
});
|
|
42
38
|
it('should generate $ref when child=true and metadata title exists', () => {
|
|
43
|
-
const schema = zod_1.z.string().
|
|
39
|
+
const schema = zod_1.z.string().meta({ title: 'RefString' });
|
|
44
40
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema, { child: true, generateRef: true });
|
|
45
41
|
expect(result).toEqual({
|
|
46
42
|
$ref: '#/components/schemas/RefString',
|
|
47
43
|
});
|
|
48
44
|
});
|
|
49
45
|
it('should propagate email format from metadata', () => {
|
|
50
|
-
const schema = zod_1.z.string().
|
|
46
|
+
const schema = zod_1.z.string().meta({ format: 'email' });
|
|
51
47
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
52
48
|
expect(result.type).toBe('string');
|
|
53
49
|
expect(result.format).toBe('email');
|
|
54
50
|
});
|
|
55
51
|
it('should propagate uuid format from metadata', () => {
|
|
56
|
-
const schema = zod_1.z.string().
|
|
52
|
+
const schema = zod_1.z.string().meta({ format: 'uuid' });
|
|
57
53
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
58
54
|
expect(result.type).toBe('string');
|
|
59
55
|
expect(result.format).toBe('uuid');
|
|
60
56
|
});
|
|
61
57
|
it('should propagate date format from metadata', () => {
|
|
62
|
-
const schema = zod_1.z.string().
|
|
58
|
+
const schema = zod_1.z.string().meta({ format: 'date' });
|
|
63
59
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
64
60
|
expect(result.type).toBe('string');
|
|
65
61
|
expect(result.format).toBe('date');
|
|
66
62
|
});
|
|
67
63
|
it('should propagate date-time format from metadata', () => {
|
|
68
|
-
const schema = zod_1.z.string().
|
|
64
|
+
const schema = zod_1.z.string().meta({ format: 'date-time' });
|
|
69
65
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
70
66
|
expect(result.type).toBe('string');
|
|
71
67
|
expect(result.format).toBe('date-time');
|
|
72
68
|
});
|
|
73
69
|
it('should propagate password format from metadata', () => {
|
|
74
|
-
const schema = zod_1.z.string().
|
|
70
|
+
const schema = zod_1.z.string().meta({ format: 'password' });
|
|
75
71
|
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
76
72
|
expect(result.type).toBe('string');
|
|
77
73
|
expect(result.format).toBe('password');
|
|
@@ -94,5 +90,233 @@ describe('zodToOpenAPI', () => {
|
|
|
94
90
|
expect(result.type).toBe('string');
|
|
95
91
|
expect(result.pattern).toBe('^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?$');
|
|
96
92
|
});
|
|
93
|
+
it('should map z.email() to email format', () => {
|
|
94
|
+
const schema = zod_1.z.email();
|
|
95
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
96
|
+
expect(result.type).toBe('string');
|
|
97
|
+
expect(result.format).toBe('email');
|
|
98
|
+
});
|
|
99
|
+
it('should map z.uuid() to uuid format', () => {
|
|
100
|
+
const schema = zod_1.z.uuid();
|
|
101
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
102
|
+
expect(result.type).toBe('string');
|
|
103
|
+
expect(result.format).toBe('uuid');
|
|
104
|
+
});
|
|
105
|
+
it('should map z.url() to uri format', () => {
|
|
106
|
+
const schema = zod_1.z.url();
|
|
107
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
108
|
+
expect(result.type).toBe('string');
|
|
109
|
+
expect(result.format).toBe('uri');
|
|
110
|
+
});
|
|
111
|
+
it('should map z.httpUrl() to uri format', () => {
|
|
112
|
+
const schema = zod_1.z.httpUrl();
|
|
113
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
114
|
+
expect(result.type).toBe('string');
|
|
115
|
+
expect(result.format).toBe('uri');
|
|
116
|
+
});
|
|
117
|
+
it('should map z.hostname() to hostname format', () => {
|
|
118
|
+
const schema = zod_1.z.hostname();
|
|
119
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
120
|
+
expect(result.type).toBe('string');
|
|
121
|
+
expect(result.format).toBe('hostname');
|
|
122
|
+
});
|
|
123
|
+
it('should map z.emoji() to emoji format with pattern', () => {
|
|
124
|
+
const schema = zod_1.z.emoji();
|
|
125
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
126
|
+
expect(result.type).toBe('string');
|
|
127
|
+
expect(result.format).toBe('emoji');
|
|
128
|
+
expect(result.pattern).toBeDefined();
|
|
129
|
+
});
|
|
130
|
+
it('should allow overriding pattern via meta for non-standard formats', () => {
|
|
131
|
+
const customPattern = '^[A-Z]{3}-[0-9]{3}$';
|
|
132
|
+
const schema = zod_1.z.cuid().meta({ pattern: customPattern });
|
|
133
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
134
|
+
expect(result.type).toBe('string');
|
|
135
|
+
expect(result.format).toBe('cuid');
|
|
136
|
+
expect(result.pattern).toBe(customPattern);
|
|
137
|
+
});
|
|
138
|
+
it('should allow overriding both format and pattern via meta', () => {
|
|
139
|
+
const customFormat = 'my-custom-id';
|
|
140
|
+
const customPattern = '^[A-Z]{2}_[0-9]{4}$';
|
|
141
|
+
// z.cuid() normally sets format 'cuid' and its own regex,
|
|
142
|
+
// but meta() must take precedence for both.
|
|
143
|
+
const schema = zod_1.z.cuid().meta({
|
|
144
|
+
format: customFormat,
|
|
145
|
+
pattern: customPattern,
|
|
146
|
+
});
|
|
147
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
148
|
+
expect(result.type).toBe('string');
|
|
149
|
+
expect(result.format).toBe(customFormat);
|
|
150
|
+
expect(result.pattern).toBe(customPattern);
|
|
151
|
+
});
|
|
152
|
+
it('should generate expected schema for clientEntitySchema', () => {
|
|
153
|
+
const organizationDataSchema = zod_1.z
|
|
154
|
+
.object({
|
|
155
|
+
type: zod_1.z.enum(['club', 'league']),
|
|
156
|
+
teamId: zod_1.z.string().optional(),
|
|
157
|
+
})
|
|
158
|
+
.nullable();
|
|
159
|
+
const clientEntitySchema = zod_1.z
|
|
160
|
+
.lazy(() => zod_1.z.object({
|
|
161
|
+
id: zod_1.z.uuid(),
|
|
162
|
+
organisationName: zod_1.z.string(),
|
|
163
|
+
accountKey: zod_1.z.nanoid(),
|
|
164
|
+
isMain: zod_1.z.boolean(),
|
|
165
|
+
logo: zod_1.z.url().nullable(),
|
|
166
|
+
contactName: zod_1.z.string().nullable(),
|
|
167
|
+
cname: zod_1.z.string(),
|
|
168
|
+
mainClientId: zod_1.z.uuid().nullable(),
|
|
169
|
+
get mainClient() {
|
|
170
|
+
return clientEntitySchema.nullish();
|
|
171
|
+
},
|
|
172
|
+
organizationData: organizationDataSchema,
|
|
173
|
+
createdAt: zod_1.z.iso.datetime(),
|
|
174
|
+
updatedAt: zod_1.z.iso.datetime(),
|
|
175
|
+
}))
|
|
176
|
+
.meta({ title: 'ClientEntity' });
|
|
177
|
+
// The implementation resolves ZodLazy internally; for the purpose of this
|
|
178
|
+
// test we call zodToOpenAPI on the resolved object schema to assert shape.
|
|
179
|
+
const resolved = clientEntitySchema._def.getter();
|
|
180
|
+
// Assign a title so recursive references can be emitted as $ref
|
|
181
|
+
const resolvedDef = resolved._def;
|
|
182
|
+
resolvedDef.metadata = Object.assign(Object.assign({}, (resolvedDef.metadata || {})), { title: 'ClientEntity' });
|
|
183
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(resolved);
|
|
184
|
+
console.log(JSON.stringify(result, null, 2));
|
|
185
|
+
expect(result.type).toBe('object');
|
|
186
|
+
// id: z.uuid()
|
|
187
|
+
expect(result.properties.id.type).toBe('string');
|
|
188
|
+
expect(result.properties.id.format).toBe('uuid');
|
|
189
|
+
// organisationName: z.string()
|
|
190
|
+
expect(result.properties.organisationName.type).toBe('string');
|
|
191
|
+
expect(result.properties.organisationName.format).toBeUndefined();
|
|
192
|
+
expect(result.properties.organisationName.pattern).toBeUndefined();
|
|
193
|
+
// accountKey: z.nanoid()
|
|
194
|
+
expect(result.properties.accountKey.type).toBe('string');
|
|
195
|
+
expect(result.properties.accountKey.format).toBe('nanoid');
|
|
196
|
+
expect(result.properties.accountKey.pattern).toBeDefined();
|
|
197
|
+
// isMain: z.boolean()
|
|
198
|
+
expect(result.properties.isMain.type).toBe('boolean');
|
|
199
|
+
expect(result.properties.isMain.format).toBeUndefined();
|
|
200
|
+
expect(result.properties.isMain.pattern).toBeUndefined();
|
|
201
|
+
// logo: z.url().nullable()
|
|
202
|
+
expect(result.properties.logo.type).toBe('string');
|
|
203
|
+
expect(result.properties.logo.format).toBe('uri');
|
|
204
|
+
expect(result.properties.logo.nullable).toBe(true);
|
|
205
|
+
// contactName: z.string().nullable()
|
|
206
|
+
expect(result.properties.contactName.type).toBe('string');
|
|
207
|
+
expect(result.properties.contactName.nullable).toBe(true);
|
|
208
|
+
// cname: z.string()
|
|
209
|
+
expect(result.properties.cname.type).toBe('string');
|
|
210
|
+
// mainClientId: z.uuid().nullable()
|
|
211
|
+
expect(result.properties.mainClientId.type).toBe('string');
|
|
212
|
+
expect(result.properties.mainClientId.format).toBe('uuid');
|
|
213
|
+
expect(result.properties.mainClientId.nullable).toBe(true);
|
|
214
|
+
// mainClient: z.nullish(clientEntitySchema) -> recursive $ref, nullable
|
|
215
|
+
const mainClient = result.properties.mainClient;
|
|
216
|
+
expect(mainClient.$ref).toBe('#/components/schemas/ClientEntity');
|
|
217
|
+
expect(mainClient.nullable).toBe(true);
|
|
218
|
+
// organizationData: organizationDataSchema.nullable()
|
|
219
|
+
const orgData = result.properties.organizationData;
|
|
220
|
+
expect(orgData.type).toBe('object');
|
|
221
|
+
expect(orgData.nullable).toBe(true);
|
|
222
|
+
// type: z.enum(['club', 'league'])
|
|
223
|
+
expect(orgData.properties.type.type).toBe('string');
|
|
224
|
+
expect(orgData.properties.type.enum).toEqual(['club', 'league']);
|
|
225
|
+
// teamId: z.string().optional()
|
|
226
|
+
expect(orgData.properties.teamId.type).toBe('string');
|
|
227
|
+
if (Array.isArray(orgData.required)) {
|
|
228
|
+
expect(orgData.required).toContain('type');
|
|
229
|
+
expect(orgData.required).not.toContain('teamId');
|
|
230
|
+
}
|
|
231
|
+
// createdAt/updatedAt: z.iso.datetime()
|
|
232
|
+
expect(result.properties.createdAt.type).toBe('string');
|
|
233
|
+
expect(result.properties.createdAt.format).toBe('date-time');
|
|
234
|
+
expect(result.properties.updatedAt.type).toBe('string');
|
|
235
|
+
expect(result.properties.updatedAt.format).toBe('date-time');
|
|
236
|
+
});
|
|
237
|
+
it('should map z.base64() to byte format with pattern', () => {
|
|
238
|
+
const schema = zod_1.z.base64();
|
|
239
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
240
|
+
expect(result.type).toBe('string');
|
|
241
|
+
expect(result.format).toBe('byte');
|
|
242
|
+
});
|
|
243
|
+
it('should map z.base64url() to base64url format with pattern', () => {
|
|
244
|
+
const schema = zod_1.z.base64url();
|
|
245
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
246
|
+
expect(result.type).toBe('string');
|
|
247
|
+
expect(result.format).toBe('base64url');
|
|
248
|
+
expect(result.pattern).toBeDefined();
|
|
249
|
+
});
|
|
250
|
+
it('should map z.hex() to hex format with pattern', () => {
|
|
251
|
+
const schema = zod_1.z.hex();
|
|
252
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
253
|
+
expect(result.type).toBe('string');
|
|
254
|
+
expect(result.format).toBe('hex');
|
|
255
|
+
expect(result.pattern).toBeDefined();
|
|
256
|
+
});
|
|
257
|
+
it('should map z.jwt() to jwt format', () => {
|
|
258
|
+
const schema = zod_1.z.jwt();
|
|
259
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
260
|
+
expect(result.type).toBe('string');
|
|
261
|
+
expect(result.format).toBe('jwt');
|
|
262
|
+
});
|
|
263
|
+
it('should map z.nanoid() to nanoid format with pattern', () => {
|
|
264
|
+
const schema = zod_1.z.nanoid();
|
|
265
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
266
|
+
expect(result.type).toBe('string');
|
|
267
|
+
expect(result.format).toBe('nanoid');
|
|
268
|
+
expect(result.pattern).toBeDefined();
|
|
269
|
+
});
|
|
270
|
+
it('should map cuid/cuid2/ulid helpers to their custom formats with patterns', () => {
|
|
271
|
+
const cuidSchema = zod_1.z.cuid();
|
|
272
|
+
const cuid2Schema = zod_1.z.cuid2();
|
|
273
|
+
const ulidSchema = zod_1.z.ulid();
|
|
274
|
+
const cuidResult = (0, zod_to_openapi_1.zodToOpenAPI)(cuidSchema);
|
|
275
|
+
const cuid2Result = (0, zod_to_openapi_1.zodToOpenAPI)(cuid2Schema);
|
|
276
|
+
const ulidResult = (0, zod_to_openapi_1.zodToOpenAPI)(ulidSchema);
|
|
277
|
+
expect(cuidResult.type).toBe('string');
|
|
278
|
+
expect(cuidResult.format).toBe('cuid');
|
|
279
|
+
expect(cuidResult.pattern).toBeDefined();
|
|
280
|
+
expect(cuid2Result.type).toBe('string');
|
|
281
|
+
expect(cuid2Result.format).toBe('cuid2');
|
|
282
|
+
expect(cuid2Result.pattern).toBeDefined();
|
|
283
|
+
expect(ulidResult.type).toBe('string');
|
|
284
|
+
expect(ulidResult.format).toBe('ulid');
|
|
285
|
+
expect(ulidResult.pattern).toBeDefined();
|
|
286
|
+
});
|
|
287
|
+
it('should map ipv4/ipv6 and cidr helpers to formats with patterns', () => {
|
|
288
|
+
const ipv4Schema = zod_1.z.ipv4();
|
|
289
|
+
const ipv6Schema = zod_1.z.ipv6();
|
|
290
|
+
const cidrv4Schema = zod_1.z.cidrv4();
|
|
291
|
+
const cidrv6Schema = zod_1.z.cidrv6();
|
|
292
|
+
const ipv4Result = (0, zod_to_openapi_1.zodToOpenAPI)(ipv4Schema);
|
|
293
|
+
const ipv6Result = (0, zod_to_openapi_1.zodToOpenAPI)(ipv6Schema);
|
|
294
|
+
const cidrv4Result = (0, zod_to_openapi_1.zodToOpenAPI)(cidrv4Schema);
|
|
295
|
+
const cidrv6Result = (0, zod_to_openapi_1.zodToOpenAPI)(cidrv6Schema);
|
|
296
|
+
expect(ipv4Result.type).toBe('string');
|
|
297
|
+
expect(ipv4Result.format).toBe('ipv4');
|
|
298
|
+
expect(ipv6Result.type).toBe('string');
|
|
299
|
+
expect(ipv6Result.format).toBe('ipv6');
|
|
300
|
+
expect(cidrv4Result.type).toBe('string');
|
|
301
|
+
expect(cidrv4Result.format).toBe('cidrv4');
|
|
302
|
+
expect(cidrv4Result.pattern).toBeDefined();
|
|
303
|
+
expect(cidrv6Result.type).toBe('string');
|
|
304
|
+
expect(cidrv6Result.format).toBe('cidrv6');
|
|
305
|
+
expect(cidrv6Result.pattern).toBeDefined();
|
|
306
|
+
});
|
|
307
|
+
it('should map z.hash(\"sha256\") to sha256_hex format with pattern', () => {
|
|
308
|
+
const schema = zod_1.z.hash('sha256');
|
|
309
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
310
|
+
expect(result.type).toBe('string');
|
|
311
|
+
expect(result.format).toBe('sha256_hex');
|
|
312
|
+
expect(result.pattern).toBeDefined();
|
|
313
|
+
});
|
|
314
|
+
it('should map z.iso.duration() to duration format with pattern', () => {
|
|
315
|
+
const schema = zod_1.z.iso.duration();
|
|
316
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
317
|
+
expect(result.type).toBe('string');
|
|
318
|
+
expect(result.format).toBe('duration');
|
|
319
|
+
expect(result.pattern).toBeDefined();
|
|
320
|
+
});
|
|
97
321
|
});
|
|
98
322
|
//# sourceMappingURL=zod-to-openapi.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-to-openapi.spec.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.spec.ts"],"names":[],"mappings":";;AAAA,6BAAwB;AACxB,qDAAgD;AAChD,mDAAuD;AAEvD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE;QACb,IAAA,oCAAoB,EAAC,OAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,OAAC;aACb,MAAM,CAAC;YACN,EAAE,EAAE,OAAC,CAAC,IAAI,EAAE;YACZ,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,CAAC;aACD,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,uCAAuC;QACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,IAAA,6BAAY,EAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,gCAAgC;SACvC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,OAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEhC,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,OAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAE5B,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,OAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAE5B,MAAM,MAAM,GAAQ,IAAA,6BAAY,EAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACzB,yDAAyD,CAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"zod-to-openapi.spec.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { ZodTypeAny, z } from 'zod';
|
|
2
|
-
export type ZodOpenAPIMetadata = {
|
|
3
|
-
title?: string;
|
|
4
|
-
description?: string;
|
|
5
|
-
example?: any;
|
|
6
|
-
examples?: Record<string, any>;
|
|
7
|
-
deprecated?: boolean;
|
|
8
|
-
readOnly?: boolean;
|
|
9
|
-
writeOnly?: boolean;
|
|
10
|
-
format?: string;
|
|
11
|
-
externalDocs?: {
|
|
12
|
-
description?: string;
|
|
13
|
-
url: string;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
declare module 'zod' {
|
|
17
|
-
interface ZodTypeDef {
|
|
18
|
-
}
|
|
19
|
-
interface ZodTypeAny {
|
|
20
|
-
openapi(metadata: ZodOpenAPIMetadata): this;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export declare function extendApi<T extends ZodTypeAny>(schema: T, schemaObject?: ZodOpenAPIMetadata): T;
|
|
24
|
-
export declare function extendZodWithOpenApi(zod: typeof z, forceOverride?: boolean): void;
|
|
25
|
-
export declare const ZodRecord: <KeyType extends string, ZodValueType extends z.ZodTypeAny>(keys: KeyType[], zodValueType: ZodValueType) => z.ZodObject<Record<KeyType, ZodValueType> extends infer T ? { -readonly [P in keyof T]: T[P]; } : never, z.core.$strip>;
|
|
26
|
-
//# sourceMappingURL=zod.extension.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod.extension.d.ts","sourceRoot":"","sources":["../../src/openapi/zod.extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,OAAO,QAAQ,KAAK,CAAC;IACnB,UAAU,UAAU;KACnB;IACD,UAAU,UAAU;QAClB,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;KAC7C;CACF;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,UAAU,EAC5C,MAAM,EAAE,CAAC,EACT,YAAY,GAAE,kBAAuB,GACpC,CAAC,CAUH;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,UAAQ,QAexE;AAKD,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,MAAM,EACtB,YAAY,SAAS,CAAC,CAAC,UAAU,EAEjC,MAAM,OAAO,EAAE,EACf,cAAc,YAAY,4HAUzB,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZodRecord = void 0;
|
|
4
|
-
exports.extendApi = extendApi;
|
|
5
|
-
exports.extendZodWithOpenApi = extendZodWithOpenApi;
|
|
6
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
7
|
-
const zod_1 = require("zod");
|
|
8
|
-
function extendApi(schema, schemaObject = {}) {
|
|
9
|
-
const This = schema.constructor;
|
|
10
|
-
const def = schema._def || {};
|
|
11
|
-
const newSchema = new This(def);
|
|
12
|
-
newSchema._def.metadata = Object.assign({}, def.metadata || {}, schemaObject);
|
|
13
|
-
return newSchema;
|
|
14
|
-
}
|
|
15
|
-
function extendZodWithOpenApi(zod, forceOverride = false) {
|
|
16
|
-
if (forceOverride || typeof zod.ZodType.prototype.openapi === 'undefined') {
|
|
17
|
-
zod.ZodType.prototype.openapi = function (metadata) {
|
|
18
|
-
const def = this._def;
|
|
19
|
-
if (!def) {
|
|
20
|
-
return this;
|
|
21
|
-
}
|
|
22
|
-
def.metadata = Object.assign(Object.assign({}, (def.metadata || {})), metadata);
|
|
23
|
-
return this;
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
// Apply extensions once by default
|
|
28
|
-
extendZodWithOpenApi(zod_1.z);
|
|
29
|
-
const ZodRecord = (keys, zodValueType) => zod_1.z.object(keys.reduce((agg, k) => (Object.assign(Object.assign({}, agg), { [k]: zodValueType })), {}));
|
|
30
|
-
exports.ZodRecord = ZodRecord;
|
|
31
|
-
//# sourceMappingURL=zod.extension.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod.extension.js","sourceRoot":"","sources":["../../src/openapi/zod.extension.ts"],"names":[],"mappings":";;;AA0BA,8BAaC;AAED,oDAeC;AAxDD,sDAAsD;AACtD,6BAAoC;AAyBpC,SAAgB,SAAS,CACvB,MAAS,EACT,eAAmC,EAAE;IAErC,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,CAAC;IACzC,MAAM,GAAG,GAAI,MAAc,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,SAAiB,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC9C,EAAE,EACF,GAAG,CAAC,QAAQ,IAAI,EAAE,EAClB,YAAY,CACb,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,oBAAoB,CAAC,GAAa,EAAE,aAAa,GAAG,KAAK;IACvE,IAAI,aAAa,IAAI,OAAQ,GAAW,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QAClF,GAAW,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAEvC,QAA4B;YAE5B,MAAM,GAAG,GAAI,IAAY,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YACD,GAAG,CAAC,QAAQ,mCAAQ,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAK,QAAQ,CAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;IACJ,CAAC;AAEH,CAAC;AAED,mCAAmC;AACnC,oBAAoB,CAAC,OAAC,CAAC,CAAC;AAEjB,MAAM,SAAS,GAAG,CAIvB,IAAe,EACf,YAA0B,EAC1B,EAAE,CACF,OAAC,CAAC,MAAM,CACN,IAAI,CAAC,MAAM,CACT,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iCACP,GAAG,KACN,CAAC,CAAC,CAAC,EAAE,YAAY,IACjB,EACF,EAAmC,CACpC,CACF,CAAC;AAfS,QAAA,SAAS,aAelB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod.extension.spec.d.ts","sourceRoot":"","sources":["../../src/openapi/zod.extension.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const zod_1 = require("zod");
|
|
4
|
-
const zod_extension_1 = require("./zod.extension");
|
|
5
|
-
describe('zod.extension (openapi & password)', () => {
|
|
6
|
-
beforeAll(() => {
|
|
7
|
-
// ensure extensions are applied (in case tree-shaking removed side effects)
|
|
8
|
-
(0, zod_extension_1.extendZodWithOpenApi)(zod_1.z, true);
|
|
9
|
-
});
|
|
10
|
-
it('should attach OpenAPI metadata via .openapi()', () => {
|
|
11
|
-
const schema = zod_1.z
|
|
12
|
-
.string()
|
|
13
|
-
.describe('a description')
|
|
14
|
-
.openapi({ title: 'MyString', description: 'My desc', example: 'abc' });
|
|
15
|
-
const def = schema._def;
|
|
16
|
-
const meta = def.metadata;
|
|
17
|
-
expect(meta).toBeDefined();
|
|
18
|
-
expect(meta === null || meta === void 0 ? void 0 : meta.title).toBe('MyString');
|
|
19
|
-
expect(meta === null || meta === void 0 ? void 0 : meta.description).toBe('My desc');
|
|
20
|
-
expect(meta === null || meta === void 0 ? void 0 : meta.example).toBe('abc');
|
|
21
|
-
});
|
|
22
|
-
// here you could add tests for custom helpers that call .openapi()
|
|
23
|
-
});
|
|
24
|
-
//# sourceMappingURL=zod.extension.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod.extension.spec.js","sourceRoot":"","sources":["../../src/openapi/zod.extension.spec.ts"],"names":[],"mappings":";;AAAA,6BAAwB;AACxB,mDAA2E;AAE3E,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,SAAS,CAAC,GAAG,EAAE;QACb,4EAA4E;QAC5E,IAAA,oCAAoB,EAAC,OAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,OAAC;aACb,MAAM,EAAE;aACR,QAAQ,CAAC,eAAe,CAAC;aACzB,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1E,MAAM,GAAG,GAAS,MAAc,CAAC,IAAI,CAAC;QACtC,MAAM,IAAI,GAAmC,GAAG,CAAC,QAAQ,CAAC;QAE1D,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,mEAAmE;AACrE,CAAC,CAAC,CAAC"}
|