@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 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 .openapi() decorator
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
- .openapi({
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 the .openapi() method, and create the reference in the openapi spec.
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
@@ -1,4 +1,3 @@
1
- export * from './openapi/zod.extension';
2
1
  export * from './openapi/zod-to-openapi';
3
2
  export * from './openapi/make-open-api';
4
3
  export * from './openapi/dto';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,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,0DAAwC;AACxC,2DAAyC;AACzC,0DAAwC;AACxC,gDAA8B;AAC9B,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0DAAwC;AACxC,gDAA8B;AAC9B,0DAAwC"}
@@ -1,10 +1,10 @@
1
- import { ZodSchema } from 'zod';
1
+ import type { ZodType } from 'zod';
2
2
  export interface ZodDto<TOutput = any> {
3
3
  new (): TOutput;
4
4
  isZodDto: true;
5
- schema: ZodSchema<TOutput>;
5
+ schema: ZodType<TOutput>;
6
6
  create(input: unknown): TOutput;
7
7
  }
8
- export declare function createZodDto<TOutput = any>(schema: ZodSchema<TOutput>): ZodDto<TOutput>;
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,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"}
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"}
@@ -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);
@@ -1 +1 @@
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"}
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"}
@@ -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.string().uuid(),
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 openapi metadata and zodToOpenAPI', () => {
27
+ it('should work with metadata and zodToOpenAPI', () => {
32
28
  const schema = zod_1.z
33
29
  .object({
34
- id: zod_1.z.string().uuid(),
35
- email: zod_1.z.string().openapi({ format: 'email' }),
30
+ id: zod_1.z.uuid(),
31
+ email: zod_1.z.email(),
36
32
  })
37
- .openapi({ title: 'UserDto' });
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,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
+ {"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;AA8CD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,CAAC,CAAC,UAAU,EACrB,OAAO,GAAE,mBAAwB;;EAiVlC"}
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 applyOpenAPIMetadata(zodType, object) {
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
- if (def === null || def === void 0 ? void 0 : def.metadata) {
18
- const openapi = def.metadata;
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 && zodType.description) {
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 = (_a = zodType._def) === null || _a === void 0 ? void 0 : _a.metadata;
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 ISO string helpers (z.iso.datetime/date/time),
69
- // which use a different internal def shape (type/format/check/pattern)
70
- const isoDef = zodType._def;
71
- if (isoDef &&
72
- isoDef.type === 'string' &&
73
- isoDef.check === 'string_format' &&
74
- typeof isoDef.format === 'string') {
75
- object.type = 'string';
76
- if (isoDef.format === 'datetime') {
77
- object.format = 'date-time';
78
- }
79
- else if (isoDef.format === 'date') {
80
- object.format = 'date';
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
- else if (isoDef.format === 'time') {
83
- // OpenAPI no tiene un format estándar "time", así que usamos el patrón
84
- if (isoDef.pattern instanceof RegExp) {
85
- object.pattern = isoDef.pattern.source;
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 = (_b = def.checks) !== null && _b !== void 0 ? _b : [];
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 (is(zodType, zod_1.z.ZodBoolean)) {
243
+ if (zodType instanceof zod_1.z.ZodBoolean) {
127
244
  object.type = 'boolean';
128
245
  }
129
- if (is(zodType, zod_1.z.ZodNumber)) {
246
+ if (zodType instanceof zod_1.z.ZodNumber) {
130
247
  const def = zodType._def;
131
- const checks = (_c = def.checks) !== null && _c !== void 0 ? _c : [];
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 (is(zodType, zod_1.z.ZodDate)) {
267
+ if (zodType instanceof zod_1.z.ZodDate) {
151
268
  const def = zodType._def;
152
- const checks = (_d = def.checks) !== null && _d !== void 0 ? _d : [];
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 (is(zodType, zod_1.z.ZodBigInt)) {
275
+ if (zodType instanceof zod_1.z.ZodBigInt) {
159
276
  object.type = 'integer';
160
277
  object.format = 'int64';
161
278
  }
162
- if (is(zodType, zod_1.z.ZodArray)) {
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 (is(zodType, zod_1.z.ZodTuple)) {
296
+ if (zodType instanceof zod_1.z.ZodTuple) {
180
297
  const def = zodType._def;
181
- const items = (_e = def.items) !== null && _e !== void 0 ? _e : [];
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 (is(zodType, zod_1.z.ZodSet)) {
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 (is(zodType, zod_1.z.ZodUnion)) {
323
+ if (zodType instanceof zod_1.z.ZodUnion) {
207
324
  const def = zodType._def;
208
- const options = (_f = def.options) !== null && _f !== void 0 ? _f : [];
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 (is(zodType, zod_1.z.ZodDiscriminatedUnion)) {
341
+ if (zodType instanceof zod_1.z.ZodDiscriminatedUnion) {
225
342
  const def = zodType._def;
226
- const options = (_g = def.options) !== null && _g !== void 0 ? _g : new Map();
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 (is(zodType, zod_1.z.ZodLiteral)) {
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 (is(zodType, zod_1.z.ZodEnum)) {
369
+ if (zodType instanceof zod_1.z.ZodEnum) {
253
370
  const def = zodType._def;
254
- const values = (_h = def.values) !== null && _h !== void 0 ? _h : [];
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 = values;
375
+ object.enum = rawValues;
257
376
  }
258
- if (is(zodType, zod_1.z.ZodNullable)) {
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 (is(zodType, zod_1.z.ZodOptional)) {
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 (is(zodType, zod_1.z.ZodDefault)) {
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 (is(zodType, zod_1.z.ZodRecord)) {
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 (is(zodType, zod_1.z.ZodIntersection)) {
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 (is(zodType, zod_1.z.ZodLazy)) {
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).openapi({
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
- .openapi({ title: 'User' });
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().openapi({ title: 'RefString' });
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().openapi({ format: 'email' });
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().openapi({ format: 'uuid' });
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().openapi({ format: 'date' });
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().openapi({ format: 'date-time' });
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().openapi({ format: 'password' });
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@origins-digital/zod-openapi-utils",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "description": "Origins Zod OpenAPI Utils",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.d.ts",
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=zod.extension.spec.d.ts.map
@@ -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"}