@origins-digital/zod-openapi-utils 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/openapi/dto.d.ts +4 -4
- package/dist/openapi/dto.d.ts.map +1 -1
- package/dist/openapi/dto.js +1 -1
- package/dist/openapi/dto.js.map +1 -1
- package/dist/openapi/dto.spec.d.ts +2 -0
- package/dist/openapi/dto.spec.d.ts.map +1 -0
- package/dist/openapi/dto.spec.js +47 -0
- package/dist/openapi/dto.spec.js.map +1 -0
- package/dist/openapi/make-open-api.d.ts.map +1 -1
- package/dist/openapi/make-open-api.js +5 -4
- package/dist/openapi/make-open-api.js.map +1 -1
- package/dist/openapi/zod-to-openapi.d.ts +3 -1
- package/dist/openapi/zod-to-openapi.d.ts.map +1 -1
- package/dist/openapi/zod-to-openapi.js +57 -46
- package/dist/openapi/zod-to-openapi.js.map +1 -1
- package/dist/openapi/zod-to-openapi.spec.d.ts +2 -0
- package/dist/openapi/zod-to-openapi.spec.d.ts.map +1 -0
- package/dist/openapi/zod-to-openapi.spec.js +80 -0
- package/dist/openapi/zod-to-openapi.spec.js.map +1 -0
- package/dist/openapi/zod.extension.d.ts +6 -21
- package/dist/openapi/zod.extension.d.ts.map +1 -1
- package/dist/openapi/zod.extension.js +11 -50
- package/dist/openapi/zod.extension.js.map +1 -1
- package/dist/openapi/zod.extension.spec.d.ts +2 -0
- package/dist/openapi/zod.extension.spec.d.ts.map +1 -0
- package/dist/openapi/zod.extension.spec.js +24 -0
- package/dist/openapi/zod.extension.spec.js.map +1 -0
- package/package.json +5 -5
package/README.md
CHANGED
package/dist/openapi/dto.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ZodSchema
|
|
2
|
-
export interface ZodDto<TOutput = any
|
|
1
|
+
import { ZodSchema } from 'zod';
|
|
2
|
+
export interface ZodDto<TOutput = any> {
|
|
3
3
|
new (): TOutput;
|
|
4
4
|
isZodDto: true;
|
|
5
|
-
schema: ZodSchema<TOutput
|
|
5
|
+
schema: ZodSchema<TOutput>;
|
|
6
6
|
create(input: unknown): TOutput;
|
|
7
7
|
}
|
|
8
|
-
export declare function createZodDto<TOutput = any
|
|
8
|
+
export declare function createZodDto<TOutput = any>(schema: ZodSchema<TOutput>): 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,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,GAAG;IACnC,QAAQ,OAAO,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,GAU/B,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
|
@@ -14,6 +14,6 @@ function createZodDto(schema) {
|
|
|
14
14
|
}
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
16
|
function isZodDto(metatype) {
|
|
17
|
-
return metatype === null || metatype === void 0 ? void 0 : metatype.isZodDto;
|
|
17
|
+
return !!(metatype === null || metatype === void 0 ? void 0 : metatype.isZodDto);
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=dto.js.map
|
package/dist/openapi/dto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/openapi/dto.ts"],"names":[],"mappings":";;AAUA,oCAWC;AAGD,4BAEC;AAhBD,SAAgB,YAAY,CAAgB,MAA0B;IACpE,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.spec.d.ts","sourceRoot":"","sources":["../../src/openapi/dto.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const zod_1 = require("zod");
|
|
4
|
+
const dto_1 = require("./dto");
|
|
5
|
+
const zod_extension_1 = require("./zod.extension");
|
|
6
|
+
const zod_to_openapi_1 = require("./zod-to-openapi");
|
|
7
|
+
describe('createZodDto', () => {
|
|
8
|
+
beforeAll(() => {
|
|
9
|
+
(0, zod_extension_1.extendZodWithOpenApi)(zod_1.z, true);
|
|
10
|
+
});
|
|
11
|
+
it('should create a ZodDto class with static schema and create()', () => {
|
|
12
|
+
const schema = zod_1.z.object({
|
|
13
|
+
id: zod_1.z.string().uuid(),
|
|
14
|
+
name: zod_1.z.string(),
|
|
15
|
+
});
|
|
16
|
+
const UserDto = (0, dto_1.createZodDto)(schema);
|
|
17
|
+
expect(UserDto.isZodDto).toBe(true);
|
|
18
|
+
expect(UserDto.schema).toBe(schema);
|
|
19
|
+
const input = { id: '550e8400-e29b-41d4-a716-446655440000', name: 'John' };
|
|
20
|
+
const result = UserDto.create(input);
|
|
21
|
+
expect(result).toEqual(input);
|
|
22
|
+
});
|
|
23
|
+
it('isZodDto should detect DTOs created by createZodDto', () => {
|
|
24
|
+
const schema = zod_1.z.object({ foo: zod_1.z.string() });
|
|
25
|
+
const FooDto = (0, dto_1.createZodDto)(schema);
|
|
26
|
+
expect((0, dto_1.isZodDto)(FooDto)).toBe(true);
|
|
27
|
+
expect((0, dto_1.isZodDto)(schema)).toBe(false);
|
|
28
|
+
expect((0, dto_1.isZodDto)(class {
|
|
29
|
+
})).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
it('should work with openapi metadata and zodToOpenAPI', () => {
|
|
32
|
+
const schema = zod_1.z
|
|
33
|
+
.object({
|
|
34
|
+
id: zod_1.z.string().uuid(),
|
|
35
|
+
email: zod_1.z.string().openapi({ format: 'email' }),
|
|
36
|
+
})
|
|
37
|
+
.openapi({ title: 'UserDto' });
|
|
38
|
+
const UserDto = (0, dto_1.createZodDto)(schema);
|
|
39
|
+
// schema debe conservarse tal cual en el DTO
|
|
40
|
+
expect(UserDto.schema).toBe(schema);
|
|
41
|
+
const openapiSchema = (0, zod_to_openapi_1.zodToOpenAPI)(UserDto.schema);
|
|
42
|
+
expect(openapiSchema.type).toBe('object');
|
|
43
|
+
expect(openapiSchema.title).toBe('UserDto');
|
|
44
|
+
expect(openapiSchema.properties.email.format).toBe('email');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=dto.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.spec.js","sourceRoot":"","sources":["../../src/openapi/dto.spec.ts"],"names":[],"mappings":";;AAAA,6BAAwB;AACxB,+BAAuD;AACvD,mDAAuD;AACvD,qDAAgD;AAEhD,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,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;YACtB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;YACrB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,CAAC;QAErC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,sCAAsC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,CAAC,IAAA,cAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAA,cAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,IAAA,cAAQ,EAAC;SAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,OAAC;aACb,MAAM,CAAC;YACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;YACrB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;SAC/C,CAAC;aACD,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,CAAC;QAErC,6CAA6C;QAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,aAAa,GAAQ,IAAA,6BAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-open-api.d.ts","sourceRoot":"","sources":["../../src/openapi/make-open-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGjC,eAAO,MAAM,qBAAqB,GAAI,YAAY,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"make-open-api.d.ts","sourceRoot":"","sources":["../../src/openapi/make-open-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGjC,eAAO,MAAM,qBAAqB,GAAI,YAAY,UAAU,EAAE,OAY7D,CAAC"}
|
|
@@ -4,10 +4,11 @@ exports.makeOpenAPIComponents = void 0;
|
|
|
4
4
|
const zod_to_openapi_1 = require("./zod-to-openapi");
|
|
5
5
|
const makeOpenAPIComponents = (components) => {
|
|
6
6
|
return components.reduce((components, item) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
var _a, _b, _c;
|
|
8
|
+
const def = item._def;
|
|
9
|
+
const name = (_c = (_b = (_a = def === null || def === void 0 ? void 0 : def.metadata) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : def === null || def === void 0 ? void 0 : def.schemaName) !== null && _c !== void 0 ? _c : undefined;
|
|
10
|
+
if (name && !components[name]) {
|
|
11
|
+
components[name] = (0, zod_to_openapi_1.zodToOpenAPI)(item, {});
|
|
11
12
|
}
|
|
12
13
|
return components;
|
|
13
14
|
}, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-open-api.js","sourceRoot":"","sources":["../../src/openapi/make-open-api.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEzC,MAAM,qBAAqB,GAAG,CAAC,UAAwB,EAAE,EAAE;IAChE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"make-open-api.js","sourceRoot":"","sources":["../../src/openapi/make-open-api.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEzC,MAAM,qBAAqB,GAAG,CAAC,UAAwB,EAAE,EAAE;IAChE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;;QAC5C,MAAM,GAAG,GAAS,IAAY,CAAC,IAAI,CAAC;QACpC,MAAM,IAAI,GACR,MAAA,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,KAAK,mCAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,mCAAI,SAAS,CAAC;QAEvD,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,6BAAY,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAZW,QAAA,qBAAqB,yBAYhC"}
|
|
@@ -7,6 +7,8 @@ interface ZodToOpenAPIOptions {
|
|
|
7
7
|
generateRef?: boolean;
|
|
8
8
|
}
|
|
9
9
|
export declare function is<T extends Type<z.ZodTypeAny>>(input: z.ZodTypeAny, factory: T): input is InstanceType<T>;
|
|
10
|
-
export declare function zodToOpenAPI(zodType: z.ZodTypeAny, options?: ZodToOpenAPIOptions): SchemaObject
|
|
10
|
+
export declare function zodToOpenAPI(zodType: z.ZodTypeAny, options?: ZodToOpenAPIOptions): SchemaObject | {
|
|
11
|
+
$ref: string;
|
|
12
|
+
};
|
|
11
13
|
export {};
|
|
12
14
|
//# sourceMappingURL=zod-to-openapi.d.ts.map
|
|
@@ -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;
|
|
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;AA8CD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,CAAC,CAAC,UAAU,EACrB,OAAO,GAAE,mBAAwB;;EA2TlC"}
|
|
@@ -9,12 +9,13 @@ const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
|
9
9
|
const zod_1 = require("zod");
|
|
10
10
|
function is(input, factory) {
|
|
11
11
|
const factories = zod_1.z;
|
|
12
|
-
|
|
12
|
+
const def = input._def;
|
|
13
|
+
return factory === factories[def === null || def === void 0 ? void 0 : def.typeName];
|
|
13
14
|
}
|
|
14
15
|
function applyOpenAPIMetadata(zodType, object) {
|
|
15
|
-
|
|
16
|
-
if (
|
|
17
|
-
const openapi =
|
|
16
|
+
const def = zodType._def;
|
|
17
|
+
if (def === null || def === void 0 ? void 0 : def.metadata) {
|
|
18
|
+
const openapi = def.metadata;
|
|
18
19
|
if (openapi.title) {
|
|
19
20
|
object.title = openapi.title;
|
|
20
21
|
}
|
|
@@ -39,13 +40,16 @@ function applyOpenAPIMetadata(zodType, object) {
|
|
|
39
40
|
if (openapi.externalDocs) {
|
|
40
41
|
object.externalDocs = openapi.externalDocs;
|
|
41
42
|
}
|
|
43
|
+
if (openapi.format) {
|
|
44
|
+
object.format = openapi.format;
|
|
45
|
+
}
|
|
42
46
|
}
|
|
43
47
|
else if (zodType && zodType.description) {
|
|
44
48
|
object.description = zodType.description;
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
function zodToOpenAPI(zodType, options = {}) {
|
|
48
|
-
var _a, _b;
|
|
52
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
49
53
|
const { visited = new Set(), child = false, generateRef = true } = options;
|
|
50
54
|
// Safety check for undefined or null zodType
|
|
51
55
|
if (!zodType || typeof zodType !== 'object') {
|
|
@@ -54,12 +58,16 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
54
58
|
const object = {};
|
|
55
59
|
// Handle OpenAPI metadata
|
|
56
60
|
applyOpenAPIMetadata(zodType, object);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
const meta = (_a = zodType._def) === null || _a === void 0 ? void 0 : _a.metadata;
|
|
62
|
+
if (generateRef && child && (meta === null || meta === void 0 ? void 0 : meta.title)) {
|
|
63
|
+
// For child schemas with a named component, emit only a $ref
|
|
64
|
+
return {
|
|
65
|
+
$ref: `#/components/schemas/${meta.title}`,
|
|
66
|
+
};
|
|
60
67
|
}
|
|
61
|
-
if (
|
|
62
|
-
const
|
|
68
|
+
if (zodType instanceof zod_1.z.ZodString) {
|
|
69
|
+
const def = zodType._def;
|
|
70
|
+
const checks = (_b = def.checks) !== null && _b !== void 0 ? _b : [];
|
|
63
71
|
object.type = 'string';
|
|
64
72
|
for (const check of checks) {
|
|
65
73
|
if (check.kind === 'min') {
|
|
@@ -92,16 +100,14 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
92
100
|
else if (check.kind === 'time') {
|
|
93
101
|
object.pattern = '^[0-9]{2}:[0-9]{2}:[0-9]{2}$';
|
|
94
102
|
}
|
|
95
|
-
else if (check.kind === 'password') {
|
|
96
|
-
object.format = 'password';
|
|
97
|
-
}
|
|
98
103
|
}
|
|
99
104
|
}
|
|
100
105
|
if (is(zodType, zod_1.z.ZodBoolean)) {
|
|
101
106
|
object.type = 'boolean';
|
|
102
107
|
}
|
|
103
108
|
if (is(zodType, zod_1.z.ZodNumber)) {
|
|
104
|
-
const
|
|
109
|
+
const def = zodType._def;
|
|
110
|
+
const checks = (_c = def.checks) !== null && _c !== void 0 ? _c : [];
|
|
105
111
|
object.type = 'number';
|
|
106
112
|
for (const check of checks) {
|
|
107
113
|
if (check.kind === 'int') {
|
|
@@ -121,7 +127,8 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
121
127
|
}
|
|
122
128
|
}
|
|
123
129
|
if (is(zodType, zod_1.z.ZodDate)) {
|
|
124
|
-
const
|
|
130
|
+
const def = zodType._def;
|
|
131
|
+
const checks = (_d = def.checks) !== null && _d !== void 0 ? _d : [];
|
|
125
132
|
object.type = 'string';
|
|
126
133
|
for (const check of checks) {
|
|
127
134
|
object.format = 'data-time';
|
|
@@ -132,7 +139,10 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
132
139
|
object.format = 'int64';
|
|
133
140
|
}
|
|
134
141
|
if (is(zodType, zod_1.z.ZodArray)) {
|
|
135
|
-
const
|
|
142
|
+
const def = zodType._def;
|
|
143
|
+
const minLength = def.minLength;
|
|
144
|
+
const maxLength = def.maxLength;
|
|
145
|
+
const type = def.type;
|
|
136
146
|
object.type = 'array';
|
|
137
147
|
if (minLength)
|
|
138
148
|
object.minItems = minLength.value;
|
|
@@ -146,7 +156,8 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
146
156
|
}
|
|
147
157
|
}
|
|
148
158
|
if (is(zodType, zod_1.z.ZodTuple)) {
|
|
149
|
-
const
|
|
159
|
+
const def = zodType._def;
|
|
160
|
+
const items = (_e = def.items) !== null && _e !== void 0 ? _e : [];
|
|
150
161
|
object.type = 'array';
|
|
151
162
|
object.items = {
|
|
152
163
|
oneOf: items
|
|
@@ -155,7 +166,10 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
155
166
|
};
|
|
156
167
|
}
|
|
157
168
|
if (is(zodType, zod_1.z.ZodSet)) {
|
|
158
|
-
const
|
|
169
|
+
const def = zodType._def;
|
|
170
|
+
const valueType = def.valueType;
|
|
171
|
+
const minSize = def.minSize;
|
|
172
|
+
const maxSize = def.maxSize;
|
|
159
173
|
object.type = 'array';
|
|
160
174
|
if (minSize)
|
|
161
175
|
object.minItems = minSize.value;
|
|
@@ -169,7 +183,8 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
169
183
|
object.uniqueItems = true;
|
|
170
184
|
}
|
|
171
185
|
if (is(zodType, zod_1.z.ZodUnion)) {
|
|
172
|
-
const
|
|
186
|
+
const def = zodType._def;
|
|
187
|
+
const options = (_f = def.options) !== null && _f !== void 0 ? _f : [];
|
|
173
188
|
object.oneOf = [];
|
|
174
189
|
for (const schema of options) {
|
|
175
190
|
if (!schema) {
|
|
@@ -186,9 +201,10 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
186
201
|
}
|
|
187
202
|
}
|
|
188
203
|
if (is(zodType, zod_1.z.ZodDiscriminatedUnion)) {
|
|
189
|
-
const
|
|
204
|
+
const def = zodType._def;
|
|
205
|
+
const options = (_g = def.options) !== null && _g !== void 0 ? _g : new Map();
|
|
190
206
|
object.discriminator = {
|
|
191
|
-
propertyName:
|
|
207
|
+
propertyName: def.discriminator,
|
|
192
208
|
};
|
|
193
209
|
object.oneOf = [];
|
|
194
210
|
for (const schema of options.values()) {
|
|
@@ -196,7 +212,8 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
196
212
|
}
|
|
197
213
|
}
|
|
198
214
|
if (is(zodType, zod_1.z.ZodLiteral)) {
|
|
199
|
-
const
|
|
215
|
+
const def = zodType._def;
|
|
216
|
+
const value = def.value;
|
|
200
217
|
if (typeof value === 'string') {
|
|
201
218
|
object.type = 'string';
|
|
202
219
|
object.enum = [value];
|
|
@@ -212,28 +229,20 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
212
229
|
}
|
|
213
230
|
}
|
|
214
231
|
if (is(zodType, zod_1.z.ZodEnum)) {
|
|
215
|
-
const
|
|
232
|
+
const def = zodType._def;
|
|
233
|
+
const values = (_h = def.values) !== null && _h !== void 0 ? _h : [];
|
|
216
234
|
object.type = 'string';
|
|
217
235
|
object.enum = values;
|
|
218
236
|
}
|
|
219
|
-
if (is(zodType, zod_1.z.ZodNativeEnum)) {
|
|
220
|
-
const { values } = zodType._def;
|
|
221
|
-
// this only supports enums with string literal values
|
|
222
|
-
object.type = 'string';
|
|
223
|
-
object.enum = Object.values(values);
|
|
224
|
-
object['x-enumNames'] = Object.keys(values);
|
|
225
|
-
}
|
|
226
|
-
if (is(zodType, zod_1.z.ZodTransformer)) {
|
|
227
|
-
const { schema } = zodType._def;
|
|
228
|
-
Object.assign(object, zodToOpenAPI(schema, { visited, child: true, generateRef }));
|
|
229
|
-
}
|
|
230
237
|
if (is(zodType, zod_1.z.ZodNullable)) {
|
|
231
|
-
const
|
|
238
|
+
const def = zodType._def;
|
|
239
|
+
const innerType = def.innerType;
|
|
232
240
|
Object.assign(object, zodToOpenAPI(innerType, { visited, child: true, generateRef }));
|
|
233
241
|
object.nullable = true;
|
|
234
242
|
}
|
|
235
243
|
if (is(zodType, zod_1.z.ZodOptional)) {
|
|
236
|
-
const
|
|
244
|
+
const def = zodType._def;
|
|
245
|
+
const innerType = def.innerType;
|
|
237
246
|
const innerSchema = zodToOpenAPI(innerType, {
|
|
238
247
|
visited,
|
|
239
248
|
child: true,
|
|
@@ -243,16 +252,19 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
243
252
|
// Mark as optional by not adding to required array (handled in ZodObject)
|
|
244
253
|
}
|
|
245
254
|
if (is(zodType, zod_1.z.ZodDefault)) {
|
|
246
|
-
const
|
|
255
|
+
const def = zodType._def;
|
|
256
|
+
const defaultValue = def.defaultValue;
|
|
257
|
+
const innerType = def.innerType;
|
|
247
258
|
Object.assign(object, zodToOpenAPI(innerType, { visited, child: true, generateRef }));
|
|
248
259
|
object.default = defaultValue();
|
|
249
260
|
}
|
|
250
|
-
if (
|
|
251
|
-
const
|
|
261
|
+
if (zodType instanceof zod_1.z.ZodObject) {
|
|
262
|
+
const def = zodType._def;
|
|
263
|
+
const rawShape = typeof def.shape === 'function' ? def.shape() : def.shape;
|
|
252
264
|
object.type = 'object';
|
|
253
265
|
object.properties = {};
|
|
254
266
|
object.required = [];
|
|
255
|
-
for (const [key, schema] of Object.entries(
|
|
267
|
+
for (const [key, schema] of Object.entries(rawShape)) {
|
|
256
268
|
object.properties[key] = zodToOpenAPI(schema, {
|
|
257
269
|
visited,
|
|
258
270
|
child: true,
|
|
@@ -268,7 +280,8 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
268
280
|
}
|
|
269
281
|
}
|
|
270
282
|
if (is(zodType, zod_1.z.ZodRecord)) {
|
|
271
|
-
const
|
|
283
|
+
const def = zodType._def;
|
|
284
|
+
const valueType = def.valueType;
|
|
272
285
|
object.type = 'object';
|
|
273
286
|
object.additionalProperties = zodToOpenAPI(valueType, {
|
|
274
287
|
visited,
|
|
@@ -277,7 +290,9 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
277
290
|
});
|
|
278
291
|
}
|
|
279
292
|
if (is(zodType, zod_1.z.ZodIntersection)) {
|
|
280
|
-
const
|
|
293
|
+
const def = zodType._def;
|
|
294
|
+
const left = def.left;
|
|
295
|
+
const right = def.right;
|
|
281
296
|
const leftSchema = zodToOpenAPI(left, {
|
|
282
297
|
visited,
|
|
283
298
|
child: true,
|
|
@@ -299,10 +314,6 @@ function zodToOpenAPI(zodType, options = {}) {
|
|
|
299
314
|
}
|
|
300
315
|
Object.assign(object, merged);
|
|
301
316
|
}
|
|
302
|
-
if (is(zodType, zod_1.z.ZodEffects)) {
|
|
303
|
-
const { schema } = zodType._def;
|
|
304
|
-
Object.assign(object, zodToOpenAPI(schema, { visited, child: true, generateRef }));
|
|
305
|
-
}
|
|
306
317
|
if (is(zodType, zod_1.z.ZodLazy)) {
|
|
307
318
|
const { getter } = zodType._def;
|
|
308
319
|
if (visited.has(getter))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-to-openapi.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":";;;;;AAkBA,gBAMC;AA0CD,oCAgUC;AA5XD,0DAAkC;AAClC,6BAAwB;AAWxB,SAAgB,EAAE,CAChB,KAAmB,EACnB,OAAU;IAEV,MAAM,SAAS,GAAG,OAAkD,CAAC;IACrE,OAAO,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAqB,EAAE,MAAW;;IAC9D,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEtC,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,EAAE,CAAC;YACpB,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;IACH,CAAC;SAAM,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC3C,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,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,KAAI,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,QAAQ,0CAAE,KAAK,CAAA,EAAE,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,GAAG,wBAAwB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEvE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,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;iBAAM,IACJ,KAAK,CAAC,IAAwC,KAAK,UAAU,EAC9D,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACpD,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/B,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACrD,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACjC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACjC,MAAM,CAAC,aAAa,GAAG;YACrB,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa;SACzC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAE/B,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,sDAAsD;QACtD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,MAAM,CACX,MAAM,EACN,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACjD,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/B,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,KAAK,EAAE,CAAC,EAAE,CAAC;YAClE,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAErC,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,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,MAAM,CACX,MAAM,EACN,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC;YAEhC,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"}
|
|
1
|
+
{"version":3,"file":"zod-to-openapi.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-to-openapi.spec.d.ts","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const zod_1 = require("zod");
|
|
4
|
+
const zod_to_openapi_1 = require("./zod-to-openapi");
|
|
5
|
+
const zod_extension_1 = require("./zod.extension");
|
|
6
|
+
describe('zodToOpenAPI', () => {
|
|
7
|
+
beforeAll(() => {
|
|
8
|
+
(0, zod_extension_1.extendZodWithOpenApi)(zod_1.z, true);
|
|
9
|
+
});
|
|
10
|
+
it('should generate basic schema for string with metadata', () => {
|
|
11
|
+
const schema = zod_1.z.string().min(3).max(10).openapi({
|
|
12
|
+
title: 'Name',
|
|
13
|
+
description: 'User name',
|
|
14
|
+
format: 'email',
|
|
15
|
+
});
|
|
16
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
17
|
+
expect(result).toMatchObject({
|
|
18
|
+
type: 'string',
|
|
19
|
+
title: 'Name',
|
|
20
|
+
description: 'User name',
|
|
21
|
+
format: 'email',
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
it('should generate object schema with properties and required', () => {
|
|
25
|
+
const schema = zod_1.z
|
|
26
|
+
.object({
|
|
27
|
+
id: zod_1.z.uuid(),
|
|
28
|
+
name: zod_1.z.string().optional(),
|
|
29
|
+
})
|
|
30
|
+
.openapi({ title: 'User' });
|
|
31
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
32
|
+
expect(result.type).toBe('object');
|
|
33
|
+
expect(result.properties).toBeDefined();
|
|
34
|
+
expect(result.properties.id).toBeDefined();
|
|
35
|
+
expect(result.properties.name).toBeDefined();
|
|
36
|
+
// id should be required, name optional
|
|
37
|
+
expect(result.required).toContain('id');
|
|
38
|
+
if (result.required) {
|
|
39
|
+
expect(result.required).not.toContain('name');
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
it('should generate $ref when child=true and metadata title exists', () => {
|
|
43
|
+
const schema = zod_1.z.string().openapi({ title: 'RefString' });
|
|
44
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema, { child: true, generateRef: true });
|
|
45
|
+
expect(result).toEqual({
|
|
46
|
+
$ref: '#/components/schemas/RefString',
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it('should propagate email format from metadata', () => {
|
|
50
|
+
const schema = zod_1.z.string().openapi({ format: 'email' });
|
|
51
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
52
|
+
expect(result.type).toBe('string');
|
|
53
|
+
expect(result.format).toBe('email');
|
|
54
|
+
});
|
|
55
|
+
it('should propagate uuid format from metadata', () => {
|
|
56
|
+
const schema = zod_1.z.string().openapi({ format: 'uuid' });
|
|
57
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
58
|
+
expect(result.type).toBe('string');
|
|
59
|
+
expect(result.format).toBe('uuid');
|
|
60
|
+
});
|
|
61
|
+
it('should propagate date format from metadata', () => {
|
|
62
|
+
const schema = zod_1.z.string().openapi({ format: 'date' });
|
|
63
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
64
|
+
expect(result.type).toBe('string');
|
|
65
|
+
expect(result.format).toBe('date');
|
|
66
|
+
});
|
|
67
|
+
it('should propagate date-time format from metadata', () => {
|
|
68
|
+
const schema = zod_1.z.string().openapi({ format: 'date-time' });
|
|
69
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
70
|
+
expect(result.type).toBe('string');
|
|
71
|
+
expect(result.format).toBe('date-time');
|
|
72
|
+
});
|
|
73
|
+
it('should propagate password format from metadata', () => {
|
|
74
|
+
const schema = zod_1.z.string().openapi({ format: 'password' });
|
|
75
|
+
const result = (0, zod_to_openapi_1.zodToOpenAPI)(schema);
|
|
76
|
+
expect(result.type).toBe('string');
|
|
77
|
+
expect(result.format).toBe('password');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=zod-to-openapi.spec.js.map
|
|
@@ -0,0 +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;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type ZodStringCheckAugmented = ZodStringCheck | {
|
|
3
|
-
kind: 'password';
|
|
4
|
-
message?: string;
|
|
5
|
-
};
|
|
1
|
+
import { ZodTypeAny, z } from 'zod';
|
|
6
2
|
export type ZodOpenAPIMetadata = {
|
|
7
3
|
title?: string;
|
|
8
4
|
description?: string;
|
|
@@ -11,31 +7,20 @@ export type ZodOpenAPIMetadata = {
|
|
|
11
7
|
deprecated?: boolean;
|
|
12
8
|
readOnly?: boolean;
|
|
13
9
|
writeOnly?: boolean;
|
|
10
|
+
format?: string;
|
|
14
11
|
externalDocs?: {
|
|
15
12
|
description?: string;
|
|
16
13
|
url: string;
|
|
17
14
|
};
|
|
18
15
|
};
|
|
19
16
|
declare module 'zod' {
|
|
20
|
-
interface ZodSchema<Output = any, Def extends ZodTypeDef = ZodTypeDef, Input = Output> {
|
|
21
|
-
openapi<T extends ZodSchema<Output, Def, Input>>(this: T, metadata: ZodOpenAPIMetadata): T;
|
|
22
|
-
}
|
|
23
17
|
interface ZodTypeDef {
|
|
24
|
-
metadata?: ZodOpenAPIMetadata;
|
|
25
|
-
}
|
|
26
|
-
interface ZodObjectDef {
|
|
27
|
-
metadata?: ZodOpenAPIMetadata;
|
|
28
|
-
mergedSchemas?: ZodType<any, any, any>[];
|
|
29
|
-
}
|
|
30
|
-
interface ZodObject<T extends ZodRawShape, UnknownKeys extends UnknownKeysParam = UnknownKeysParam, Catchall extends ZodTypeAny = ZodTypeAny, Output = objectOutputType<T, Catchall, UnknownKeys>, Input = objectInputType<T, Catchall, UnknownKeys>> {
|
|
31
|
-
merge<Incoming extends AnyZodObject, Augmentation extends Incoming['shape']>(this: this, other: Incoming): ZodObject<objectUtil.extendShape<T, Augmentation>, Incoming['_def']['unknownKeys'], Incoming['_def']['catchall']>;
|
|
32
18
|
}
|
|
33
|
-
interface
|
|
34
|
-
|
|
35
|
-
_addCheck(check: ZodStringCheckAugmented): this;
|
|
19
|
+
interface ZodTypeAny {
|
|
20
|
+
openapi(metadata: ZodOpenAPIMetadata): this;
|
|
36
21
|
}
|
|
37
22
|
}
|
|
38
|
-
export declare function extendApi<T extends
|
|
23
|
+
export declare function extendApi<T extends ZodTypeAny>(schema: T, schemaObject?: ZodOpenAPIMetadata): T;
|
|
39
24
|
export declare function extendZodWithOpenApi(zod: typeof z, forceOverride?: boolean): void;
|
|
40
|
-
export declare const ZodRecord: <KeyType extends string, ZodValueType extends z.ZodTypeAny>(keys: KeyType[], zodValueType: ZodValueType) =>
|
|
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>;
|
|
41
26
|
//# sourceMappingURL=zod.extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.extension.d.ts","sourceRoot":"","sources":["../../src/openapi/zod.extension.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
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"}
|
|
@@ -7,64 +7,25 @@ exports.extendZodWithOpenApi = extendZodWithOpenApi;
|
|
|
7
7
|
const zod_1 = require("zod");
|
|
8
8
|
function extendApi(schema, schemaObject = {}) {
|
|
9
9
|
const This = schema.constructor;
|
|
10
|
-
const
|
|
11
|
-
newSchema
|
|
10
|
+
const def = schema._def || {};
|
|
11
|
+
const newSchema = new This(def);
|
|
12
|
+
newSchema._def.metadata = Object.assign({}, def.metadata || {}, schemaObject);
|
|
12
13
|
return newSchema;
|
|
13
14
|
}
|
|
14
15
|
function extendZodWithOpenApi(zod, forceOverride = false) {
|
|
15
16
|
if (forceOverride || typeof zod.ZodType.prototype.openapi === 'undefined') {
|
|
16
17
|
zod.ZodType.prototype.openapi = function (metadata) {
|
|
17
|
-
this._def
|
|
18
|
-
|
|
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;
|
|
19
24
|
};
|
|
20
25
|
}
|
|
21
|
-
if (forceOverride || typeof zod.ZodObject.prototype.merge === 'undefined') {
|
|
22
|
-
const originalMerge = zod.ZodObject.prototype.merge;
|
|
23
|
-
zod.ZodObject.prototype.merge = function (other) {
|
|
24
|
-
const merged = originalMerge.apply(this, [other]);
|
|
25
|
-
merged._def.mergedSchemas = [this, other];
|
|
26
|
-
return merged;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
if (forceOverride ||
|
|
30
|
-
typeof zod.ZodString.prototype._addCheck === 'undefined') {
|
|
31
|
-
const originalStringCheck = zod_1.ZodString.prototype._addCheck;
|
|
32
|
-
zod_1.ZodString.prototype._addCheck = function (check) {
|
|
33
|
-
return originalStringCheck.call(this, check);
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
if (forceOverride ||
|
|
37
|
-
typeof zod.ZodString.prototype.password === 'undefined') {
|
|
38
|
-
zod_1.ZodString.prototype.password = function () {
|
|
39
|
-
return this._addCheck({ kind: 'password' });
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (typeof zod_1.ZodType.prototype.openapi === 'undefined') {
|
|
44
|
-
zod_1.ZodType.prototype.openapi = function (metadata) {
|
|
45
|
-
this._def.metadata = metadata;
|
|
46
|
-
return extendApi(this, metadata);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
if (typeof zod_1.ZodObject.prototype.merge === 'undefined') {
|
|
50
|
-
const originalMerge = zod_1.ZodObject.prototype.merge;
|
|
51
|
-
zod_1.ZodObject.prototype.merge = function (other) {
|
|
52
|
-
const merged = originalMerge.apply(this, [other]);
|
|
53
|
-
merged._def.mergedSchemas = [this, other];
|
|
54
|
-
return merged;
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (typeof zod_1.ZodString.prototype._addCheck === 'undefined') {
|
|
58
|
-
const originalStringCheck = zod_1.ZodString.prototype._addCheck;
|
|
59
|
-
zod_1.ZodString.prototype._addCheck = function (check) {
|
|
60
|
-
return originalStringCheck.call(this, check);
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
if (typeof zod_1.ZodString.prototype.password === 'undefined') {
|
|
64
|
-
zod_1.ZodString.prototype.password = function () {
|
|
65
|
-
return this._addCheck({ kind: 'password' });
|
|
66
|
-
};
|
|
67
26
|
}
|
|
27
|
+
// Apply extensions once by default
|
|
28
|
+
extendZodWithOpenApi(zod_1.z);
|
|
68
29
|
const ZodRecord = (keys, zodValueType) => zod_1.z.object(keys.reduce((agg, k) => (Object.assign(Object.assign({}, agg), { [k]: zodValueType })), {}));
|
|
69
30
|
exports.ZodRecord = ZodRecord;
|
|
70
31
|
//# sourceMappingURL=zod.extension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.extension.js","sourceRoot":"","sources":["../../src/openapi/zod.extension.ts"],"names":[],"mappings":";;;
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.extension.spec.d.ts","sourceRoot":"","sources":["../../src/openapi/zod.extension.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@origins-digital/zod-openapi-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Origins Zod OpenAPI Utils",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.d.ts",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"webpack": "^5.88.1"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"zod": ">=
|
|
35
|
+
"zod": ">=4.1.11"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@commitlint/cli": "^17.6.6",
|
|
@@ -40,15 +40,15 @@
|
|
|
40
40
|
"@faker-js/faker": "^8.3.1",
|
|
41
41
|
"@types/node": "^20.3.1",
|
|
42
42
|
"commitizen": "^4.3.0",
|
|
43
|
-
"conventional-recommended-bump": "^
|
|
43
|
+
"conventional-recommended-bump": "^11.2.0",
|
|
44
44
|
"cz-conventional-changelog": "^3.3.0",
|
|
45
|
-
"eslint": "^
|
|
45
|
+
"eslint": "^9.0.0",
|
|
46
46
|
"eslint-config-prettier": "^9.0.0",
|
|
47
47
|
"eslint-plugin-prettier": "^5.0.0",
|
|
48
48
|
"jest": "^29.5.0",
|
|
49
49
|
"prettier": "^3.0.0",
|
|
50
50
|
"rimraf": "^5.0.5",
|
|
51
|
-
"supertest": "^
|
|
51
|
+
"supertest": "^7.1.3",
|
|
52
52
|
"ts-jest": "^29.1.0",
|
|
53
53
|
"ts-loader": "^9.4.3",
|
|
54
54
|
"ts-node": "^10.9.1",
|