zod-openapi 5.3.0 → 5.3.1

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
@@ -31,7 +31,9 @@ pnpm install zod zod-openapi
31
31
 
32
32
  ### `.meta()`
33
33
 
34
- Use the `.meta()` method to add OpenAPI metadata to a Zod schema. It accepts an object with the following options:
34
+ Use Zod's native `.meta()` method to add OpenAPI metadata to your schemas. This library leverages Zod's built-in metadata functionality - no monkey patching or additional setup is required. Simply call `.meta()` on any Zod schema and it accepts an object with the following options:
35
+
36
+ > **Note:** To get full TypeScript support for the OpenAPI-specific properties in `.meta()`, you need to import `zod-openapi` somewhere in your project. This import provides TypeScript type definitions that extend Zod's `.meta()` interface at compile-time (no runtime changes), enabling your IDE and TypeScript compiler to recognize the additional properties (like `id`, `param`, `header`, etc.). In most cases this will be done where you call `createDocument` or other zod-openapi functions.
35
37
 
36
38
  | Option | Description |
37
39
  | ---------- | ---------------------------------------------------------------------------------------------------------------- |
@@ -42,7 +44,7 @@ Use the `.meta()` method to add OpenAPI metadata to a Zod schema. It accepts an
42
44
  | `outputId` | Allows you to set a different ID for the output schema. This is useful when the input and output schemas differ. |
43
45
  | `unusedIO` | Allows you to set the `io` for an unused schema added to the components section. Defaults to `output`. |
44
46
 
45
- You can also set standard OpenAPI properties directly in the `.meta()` method, such as:
47
+ You can also set standard OpenAPI properties directly in Zod's native `.meta()` method, such as:
46
48
 
47
49
  ```typescript
48
50
  z.string().meta({
@@ -51,7 +53,7 @@ z.string().meta({
51
53
  });
52
54
  ```
53
55
 
54
- You can set additional metadata to the rendered schema in a few different ways. Zod's `.meta()` method allows you to directly set OpenAPI directly to the schema. However, if you wanted to override any field that Zod generates, this may not work as expected. In this case, you can use the `override` option to customize the rendered OpenAPI schema.
56
+ You can set additional metadata to the rendered schema in a few different ways. Zod's native `.meta()` method allows you to directly set OpenAPI properties to the schema. However, if you wanted to override any field that Zod generates, this may not work as expected. In this case, you can use the `override` option to customize the rendered OpenAPI schema.
55
57
 
56
58
  eg.
57
59
 
@@ -74,7 +76,7 @@ Would render the following OpenAPI schema. Note that format is not overridden wi
74
76
  }
75
77
  ```
76
78
 
77
- In order to override fields which are generated by Zod or this library, you can use the `override` option in the `.meta()` method. This allows you to customize the rendered OpenAPI schema after we have both processed it.
79
+ In order to override fields which are generated by Zod or this library, you can use the `override` option in Zod's `.meta()` method. This allows you to customize the rendered OpenAPI schema after we have both processed it.
78
80
 
79
81
  ##### override object
80
82
 
package/dist/api.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_components = require('./components-Ccvxvize.cjs');
1
+ const require_components = require('./components-Bgg6LgwE.cjs');
2
2
 
3
3
  exports.createComponents = require_components.createComponents;
4
4
  exports.createRegistry = require_components.createRegistry;
package/dist/api.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry } from "./components-Br5MCUeG.cjs";
1
+ import { ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry } from "./components-CJtL_UCT.cjs";
2
2
  import * as core from "zod/v4/core";
3
3
  import { $ZodObject, $ZodType, $ZodTypes } from "zod/v4/core";
4
4
 
@@ -8,4 +8,4 @@ declare const unwrapZodObject: (zodType: $ZodTypes, io: "input" | "output", path
8
8
  //#region src/zod.d.ts
9
9
  declare const isAnyZodType: (schema: unknown) => schema is core.$ZodTypes;
10
10
  //#endregion
11
- export { ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry, isAnyZodType, unwrapZodObject };
11
+ export { type ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry, isAnyZodType, unwrapZodObject };
package/dist/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry } from "./components-DkyUTLcs.js";
1
+ import { ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry } from "./components-BYHzS0hV.js";
2
2
  import * as core from "zod/v4/core";
3
3
  import { $ZodObject, $ZodType, $ZodTypes } from "zod/v4/core";
4
4
 
@@ -8,4 +8,4 @@ declare const unwrapZodObject: (zodType: $ZodTypes, io: "input" | "output", path
8
8
  //#region src/zod.d.ts
9
9
  declare const isAnyZodType: (schema: unknown) => schema is core.$ZodTypes;
10
10
  //#endregion
11
- export { ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry, isAnyZodType, unwrapZodObject };
11
+ export { type ComponentRegistry, ZodOpenApiBaseMetadata, ZodOpenApiMetadata, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, createComponents, createRegistry, isAnyZodType, unwrapZodObject };
package/dist/api.js CHANGED
@@ -1,3 +1,3 @@
1
- import { createComponents, createRegistry, isAnyZodType, unwrapZodObject } from "./components-BAO_3m-h.js";
1
+ import { createComponents, createRegistry, isAnyZodType, unwrapZodObject } from "./components-B6MpvUFu.js";
2
2
 
3
3
  export { createComponents, createRegistry, isAnyZodType, unwrapZodObject };
@@ -44,10 +44,9 @@ const unwrapZodObject = (zodType, io, path) => {
44
44
  switch (def.type) {
45
45
  case "object": return zodType;
46
46
  case "lazy": return unwrapZodObject(def.getter(), io, path);
47
- case "pipe": {
47
+ case "pipe":
48
48
  if (io === "input") return unwrapZodObject(def.in, io, path);
49
49
  return unwrapZodObject(def.out, io, path);
50
- }
51
50
  }
52
51
  throw new Error(`Failed to unwrap ZodObject from type: ${zodType._zod.def.type} at ${path.join(" > ")}`);
53
52
  };
@@ -193,11 +192,10 @@ const createPaths = (paths, registry$1, path) => {
193
192
  const override = (ctx) => {
194
193
  const def = ctx.zodSchema._zod.def;
195
194
  switch (def.type) {
196
- case "bigint": {
195
+ case "bigint":
197
196
  ctx.jsonSchema.type = "integer";
198
197
  ctx.jsonSchema.format = "int64";
199
198
  break;
200
- }
201
199
  case "union": {
202
200
  if ("discriminator" in def && typeof def.discriminator === "string") {
203
201
  ctx.jsonSchema.oneOf = ctx.jsonSchema.anyOf;
@@ -230,18 +228,15 @@ const override = (ctx) => {
230
228
  }
231
229
  break;
232
230
  }
233
- case "date": {
231
+ case "date":
234
232
  ctx.jsonSchema.type = "string";
235
233
  break;
236
- }
237
- case "literal": {
234
+ case "literal":
238
235
  if (def.values.includes(void 0)) break;
239
236
  break;
240
- }
241
- case "undefined": {
237
+ case "undefined":
242
238
  ctx.jsonSchema.not = {};
243
239
  break;
244
- }
245
240
  }
246
241
  };
247
242
  const validate = (ctx, opts) => {
@@ -250,27 +245,23 @@ const validate = (ctx, opts) => {
250
245
  const allowEmptySchema = opts.allowEmptySchema?.[def.type];
251
246
  if (allowEmptySchema === true || allowEmptySchema?.[ctx.io]) return;
252
247
  switch (def.type) {
253
- case "optional": {
248
+ case "optional":
254
249
  validate({
255
250
  ...ctx,
256
251
  zodSchema: def.innerType
257
252
  }, opts);
258
253
  return;
259
- }
260
254
  case "any": return;
261
255
  case "unknown": return;
262
- case "pipe": {
256
+ case "pipe":
263
257
  if (ctx.io === "output") throw new Error(`Zod transform found at ${ctx.path.join(" > ")} are not supported in output schemas. Please use \`.overwrite()\` or wrap the schema in a \`.pipe()\` or assign it manual metadata with \`.meta()\``);
264
258
  return;
265
- }
266
- case "transform": {
259
+ case "transform":
267
260
  if (ctx.io === "output") return;
268
261
  break;
269
- }
270
- case "literal": {
262
+ case "literal":
271
263
  if (def.values.includes(void 0)) throw new Error(`Zod literal at ${ctx.path.join(" > ")} cannot include \`undefined\` as a value. Please use \`z.undefined()\` or \`.optional()\` instead.`);
272
264
  return;
273
- }
274
265
  }
275
266
  throw new Error(`Zod schema of type \`${def.type}\` at ${ctx.path.join(" > ")} cannot be represented in OpenAPI. Please assign it metadata with \`.meta()\``);
276
267
  };
@@ -572,6 +563,7 @@ const createRegistry = (components) => {
572
563
  const ref = { $ref: `#/components/parameters/${id}` };
573
564
  registry$1.components.parameters.seen.set(parameter, ref);
574
565
  registry$1.components.parameters.ids.set(id, parameterObject);
566
+ if (opts?.manualId) return parameterObject;
575
567
  return ref;
576
568
  }
577
569
  if (opts?.location?.name || opts?.location?.in) return parameterObject;
@@ -596,6 +588,7 @@ const createRegistry = (components) => {
596
588
  const ref = { $ref: `#/components/headers/${id}` };
597
589
  registry$1.components.headers.ids.set(id, headerObject);
598
590
  registry$1.components.headers.seen.set(header, ref);
591
+ if (opts?.manualId) return headerObject;
599
592
  return ref;
600
593
  }
601
594
  registry$1.components.headers.seen.set(header, headerObject);
@@ -618,6 +611,7 @@ const createRegistry = (components) => {
618
611
  const ref = { $ref: `#/components/requestBodies/${id}` };
619
612
  registry$1.components.requestBodies.ids.set(id, requestBodyObject);
620
613
  registry$1.components.requestBodies.seen.set(requestBody, ref);
614
+ if (opts?.manualId) return requestBodyObject;
621
615
  return ref;
622
616
  }
623
617
  registry$1.components.requestBodies.seen.set(requestBody, requestBodyObject);
@@ -649,6 +643,7 @@ const createRegistry = (components) => {
649
643
  const ref = { $ref: `#/components/pathItems/${id}` };
650
644
  registry$1.components.pathItems.ids.set(id, pathItemObject);
651
645
  registry$1.components.pathItems.seen.set(pathItem, ref);
646
+ if (opts?.manualId) return pathItemObject;
652
647
  return ref;
653
648
  }
654
649
  registry$1.components.pathItems.seen.set(pathItem, pathItemObject);
@@ -672,6 +667,7 @@ const createRegistry = (components) => {
672
667
  const ref = { $ref: `#/components/responses/${id}` };
673
668
  registry$1.components.responses.ids.set(id, responseObject);
674
669
  registry$1.components.responses.seen.set(response, ref);
670
+ if (opts?.manualId) return responseObject;
675
671
  return ref;
676
672
  }
677
673
  registry$1.components.responses.seen.set(response, responseObject);
@@ -695,6 +691,7 @@ const createRegistry = (components) => {
695
691
  const ref = { $ref: `#/components/callbacks/${id}` };
696
692
  registry$1.components.callbacks.ids.set(id, callbackObject);
697
693
  registry$1.components.callbacks.seen.set(callback, ref);
694
+ if (opts?.manualId) return callbackObject;
698
695
  return ref;
699
696
  }
700
697
  registry$1.components.callbacks.seen.set(callback, callbackObject);
@@ -711,6 +708,7 @@ const createRegistry = (components) => {
711
708
  const ref = { $ref: `#/components/securitySchemes/${id}` };
712
709
  registry$1.components.securitySchemes.ids.set(id, securitySchemeObject);
713
710
  registry$1.components.securitySchemes.seen.set(securityScheme, ref);
711
+ if (opts?.manualId) return securitySchemeObject;
714
712
  return ref;
715
713
  }
716
714
  registry$1.components.securitySchemes.seen.set(securityScheme, securitySchemeObject);
@@ -727,6 +725,7 @@ const createRegistry = (components) => {
727
725
  const ref = { $ref: `#/components/links/${id}` };
728
726
  registry$1.components.links.ids.set(id, linkObject);
729
727
  registry$1.components.links.seen.set(link, ref);
728
+ if (opts?.manualId) return linkObject;
730
729
  return ref;
731
730
  }
732
731
  registry$1.components.links.seen.set(link, linkObject);
@@ -743,6 +742,7 @@ const createRegistry = (components) => {
743
742
  const ref = { $ref: `#/components/examples/${id}` };
744
743
  registry$1.components.examples.ids.set(id, exampleObject);
745
744
  registry$1.components.examples.seen.set(example, ref);
745
+ if (opts?.manualId) return exampleObject;
746
746
  return ref;
747
747
  }
748
748
  registry$1.components.examples.seen.set(example, exampleObject);
@@ -632,4 +632,4 @@ interface ComponentRegistry {
632
632
  declare const createRegistry: (components?: ZodOpenApiComponentsObject) => ComponentRegistry;
633
633
  declare const createComponents: (registry: ComponentRegistry, opts: CreateDocumentOptions) => ComponentsObject;
634
634
  //#endregion
635
- export { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createComponents, createDocument, createRegistry };
635
+ export { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, type ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createComponents, createDocument, createRegistry };
@@ -67,10 +67,9 @@ const unwrapZodObject = (zodType, io, path) => {
67
67
  switch (def.type) {
68
68
  case "object": return zodType;
69
69
  case "lazy": return unwrapZodObject(def.getter(), io, path);
70
- case "pipe": {
70
+ case "pipe":
71
71
  if (io === "input") return unwrapZodObject(def.in, io, path);
72
72
  return unwrapZodObject(def.out, io, path);
73
- }
74
73
  }
75
74
  throw new Error(`Failed to unwrap ZodObject from type: ${zodType._zod.def.type} at ${path.join(" > ")}`);
76
75
  };
@@ -216,11 +215,10 @@ const createPaths = (paths, registry$1, path) => {
216
215
  const override = (ctx) => {
217
216
  const def = ctx.zodSchema._zod.def;
218
217
  switch (def.type) {
219
- case "bigint": {
218
+ case "bigint":
220
219
  ctx.jsonSchema.type = "integer";
221
220
  ctx.jsonSchema.format = "int64";
222
221
  break;
223
- }
224
222
  case "union": {
225
223
  if ("discriminator" in def && typeof def.discriminator === "string") {
226
224
  ctx.jsonSchema.oneOf = ctx.jsonSchema.anyOf;
@@ -253,18 +251,15 @@ const override = (ctx) => {
253
251
  }
254
252
  break;
255
253
  }
256
- case "date": {
254
+ case "date":
257
255
  ctx.jsonSchema.type = "string";
258
256
  break;
259
- }
260
- case "literal": {
257
+ case "literal":
261
258
  if (def.values.includes(void 0)) break;
262
259
  break;
263
- }
264
- case "undefined": {
260
+ case "undefined":
265
261
  ctx.jsonSchema.not = {};
266
262
  break;
267
- }
268
263
  }
269
264
  };
270
265
  const validate = (ctx, opts) => {
@@ -273,27 +268,23 @@ const validate = (ctx, opts) => {
273
268
  const allowEmptySchema = opts.allowEmptySchema?.[def.type];
274
269
  if (allowEmptySchema === true || allowEmptySchema?.[ctx.io]) return;
275
270
  switch (def.type) {
276
- case "optional": {
271
+ case "optional":
277
272
  validate({
278
273
  ...ctx,
279
274
  zodSchema: def.innerType
280
275
  }, opts);
281
276
  return;
282
- }
283
277
  case "any": return;
284
278
  case "unknown": return;
285
- case "pipe": {
279
+ case "pipe":
286
280
  if (ctx.io === "output") throw new Error(`Zod transform found at ${ctx.path.join(" > ")} are not supported in output schemas. Please use \`.overwrite()\` or wrap the schema in a \`.pipe()\` or assign it manual metadata with \`.meta()\``);
287
281
  return;
288
- }
289
- case "transform": {
282
+ case "transform":
290
283
  if (ctx.io === "output") return;
291
284
  break;
292
- }
293
- case "literal": {
285
+ case "literal":
294
286
  if (def.values.includes(void 0)) throw new Error(`Zod literal at ${ctx.path.join(" > ")} cannot include \`undefined\` as a value. Please use \`z.undefined()\` or \`.optional()\` instead.`);
295
287
  return;
296
- }
297
288
  }
298
289
  throw new Error(`Zod schema of type \`${def.type}\` at ${ctx.path.join(" > ")} cannot be represented in OpenAPI. Please assign it metadata with \`.meta()\``);
299
290
  };
@@ -595,6 +586,7 @@ const createRegistry = (components) => {
595
586
  const ref = { $ref: `#/components/parameters/${id}` };
596
587
  registry$1.components.parameters.seen.set(parameter, ref);
597
588
  registry$1.components.parameters.ids.set(id, parameterObject);
589
+ if (opts?.manualId) return parameterObject;
598
590
  return ref;
599
591
  }
600
592
  if (opts?.location?.name || opts?.location?.in) return parameterObject;
@@ -619,6 +611,7 @@ const createRegistry = (components) => {
619
611
  const ref = { $ref: `#/components/headers/${id}` };
620
612
  registry$1.components.headers.ids.set(id, headerObject);
621
613
  registry$1.components.headers.seen.set(header, ref);
614
+ if (opts?.manualId) return headerObject;
622
615
  return ref;
623
616
  }
624
617
  registry$1.components.headers.seen.set(header, headerObject);
@@ -641,6 +634,7 @@ const createRegistry = (components) => {
641
634
  const ref = { $ref: `#/components/requestBodies/${id}` };
642
635
  registry$1.components.requestBodies.ids.set(id, requestBodyObject);
643
636
  registry$1.components.requestBodies.seen.set(requestBody, ref);
637
+ if (opts?.manualId) return requestBodyObject;
644
638
  return ref;
645
639
  }
646
640
  registry$1.components.requestBodies.seen.set(requestBody, requestBodyObject);
@@ -672,6 +666,7 @@ const createRegistry = (components) => {
672
666
  const ref = { $ref: `#/components/pathItems/${id}` };
673
667
  registry$1.components.pathItems.ids.set(id, pathItemObject);
674
668
  registry$1.components.pathItems.seen.set(pathItem, ref);
669
+ if (opts?.manualId) return pathItemObject;
675
670
  return ref;
676
671
  }
677
672
  registry$1.components.pathItems.seen.set(pathItem, pathItemObject);
@@ -695,6 +690,7 @@ const createRegistry = (components) => {
695
690
  const ref = { $ref: `#/components/responses/${id}` };
696
691
  registry$1.components.responses.ids.set(id, responseObject);
697
692
  registry$1.components.responses.seen.set(response, ref);
693
+ if (opts?.manualId) return responseObject;
698
694
  return ref;
699
695
  }
700
696
  registry$1.components.responses.seen.set(response, responseObject);
@@ -718,6 +714,7 @@ const createRegistry = (components) => {
718
714
  const ref = { $ref: `#/components/callbacks/${id}` };
719
715
  registry$1.components.callbacks.ids.set(id, callbackObject);
720
716
  registry$1.components.callbacks.seen.set(callback, ref);
717
+ if (opts?.manualId) return callbackObject;
721
718
  return ref;
722
719
  }
723
720
  registry$1.components.callbacks.seen.set(callback, callbackObject);
@@ -734,6 +731,7 @@ const createRegistry = (components) => {
734
731
  const ref = { $ref: `#/components/securitySchemes/${id}` };
735
732
  registry$1.components.securitySchemes.ids.set(id, securitySchemeObject);
736
733
  registry$1.components.securitySchemes.seen.set(securityScheme, ref);
734
+ if (opts?.manualId) return securitySchemeObject;
737
735
  return ref;
738
736
  }
739
737
  registry$1.components.securitySchemes.seen.set(securityScheme, securitySchemeObject);
@@ -750,6 +748,7 @@ const createRegistry = (components) => {
750
748
  const ref = { $ref: `#/components/links/${id}` };
751
749
  registry$1.components.links.ids.set(id, linkObject);
752
750
  registry$1.components.links.seen.set(link, ref);
751
+ if (opts?.manualId) return linkObject;
753
752
  return ref;
754
753
  }
755
754
  registry$1.components.links.seen.set(link, linkObject);
@@ -766,6 +765,7 @@ const createRegistry = (components) => {
766
765
  const ref = { $ref: `#/components/examples/${id}` };
767
766
  registry$1.components.examples.ids.set(id, exampleObject);
768
767
  registry$1.components.examples.seen.set(example, ref);
768
+ if (opts?.manualId) return exampleObject;
769
769
  return ref;
770
770
  }
771
771
  registry$1.components.examples.seen.set(example, exampleObject);
@@ -632,4 +632,4 @@ interface ComponentRegistry {
632
632
  declare const createRegistry: (components?: ZodOpenApiComponentsObject) => ComponentRegistry;
633
633
  declare const createComponents: (registry: ComponentRegistry, opts: CreateDocumentOptions) => ComponentsObject;
634
634
  //#endregion
635
- export { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createComponents, createDocument, createRegistry };
635
+ export { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, type ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createComponents, createDocument, createRegistry };
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_components = require('./components-Ccvxvize.cjs');
1
+ const require_components = require('./components-Bgg6LgwE.cjs');
2
2
 
3
3
  //#region src/create/document.ts
4
4
  const createDocument = (zodOpenApiObject, opts = {}) => {
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument } from "./components-Br5MCUeG.cjs";
1
+ import { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument } from "./components-CJtL_UCT.cjs";
2
2
  import * as core from "zod/v4/core";
3
3
 
4
4
  //#region rolldown:runtime
@@ -28,4 +28,4 @@ declare const createSchema: (schema: core.$ZodType, ctx?: {
28
28
  components: Record<string, SchemaObject>;
29
29
  };
30
30
  //#endregion
31
- export { CreateDocumentOptions, SchemaResult, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument, createSchema, oas31_d_exports as oas31 };
31
+ export { CreateDocumentOptions, type SchemaResult, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument, createSchema, oas31_d_exports as oas31 };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument } from "./components-DkyUTLcs.js";
1
+ import { BaseParameterObject, CallbackObject, CallbacksObject, ComponentRegistry, ComponentsObject, ContactObject, ContentObject, CreateDocumentOptions, DiscriminatorObject, EncodingObject, EncodingPropertyObject, ExampleObject, ExamplesObject, ExternalDocumentationObject, HeaderObject, HeadersObject, IExtensionName, IExtensionType, ISpecificationExtension, InfoObject, LicenseObject, LinkObject, LinkParametersObject, LinksObject, MediaTypeObject, OAuthFlowObject, OAuthFlowsObject, OpenAPIObject, OperationObject, ParameterLocation, ParameterObject, ParameterStyle, PathItemObject, PathObject, PathsObject, ReferenceObject, RequestBodyObject, ResponseObject, ResponsesObject, SchemaObject, SchemaObjectType, SchemasObject, ScopesObject, SecurityRequirementObject, SecuritySchemeObject, SecuritySchemeType, ServerObject, ServerVariableObject, TagObject, XmlObject, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument } from "./components-BYHzS0hV.js";
2
2
  import * as core from "zod/v4/core";
3
3
 
4
4
  //#region rolldown:runtime
@@ -28,4 +28,4 @@ declare const createSchema: (schema: core.$ZodType, ctx?: {
28
28
  components: Record<string, SchemaObject>;
29
29
  };
30
30
  //#endregion
31
- export { CreateDocumentOptions, SchemaResult, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument, createSchema, oas31_d_exports as oas31 };
31
+ export { CreateDocumentOptions, type SchemaResult, ZodObjectInput, ZodOpenApiBaseMetadata, ZodOpenApiCallbackObject, ZodOpenApiCallbacksObject, ZodOpenApiComponentsObject, ZodOpenApiContentObject, ZodOpenApiExampleObject, ZodOpenApiExamplesObject, ZodOpenApiHeaderObject, ZodOpenApiHeadersObject, ZodOpenApiLinkObject, ZodOpenApiLinksObject, ZodOpenApiMediaTypeObject, ZodOpenApiMetadata, ZodOpenApiObject, ZodOpenApiOperationObject, ZodOpenApiOverride, ZodOpenApiOverrideContext, ZodOpenApiOverrideMeta, ZodOpenApiOverrideMetaContext, ZodOpenApiParameterObject, ZodOpenApiParameters, ZodOpenApiPathItemObject, ZodOpenApiPathsObject, ZodOpenApiRequestBodyObject, ZodOpenApiResponseObject, ZodOpenApiResponsesObject, ZodOpenApiSchemaObject, ZodOpenApiSecuritySchemeObject, ZodOpenApiVersion, createDocument, createSchema, oas31_d_exports as oas31 };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createComponents, createPaths, createRegistry, createSchema } from "./components-BAO_3m-h.js";
1
+ import { createComponents, createPaths, createRegistry, createSchema } from "./components-B6MpvUFu.js";
2
2
 
3
3
  //#region src/create/document.ts
4
4
  const createDocument = (zodOpenApiObject, opts = {}) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-openapi",
3
- "version": "5.3.0",
3
+ "version": "5.3.1",
4
4
  "description": "Convert Zod Schemas to OpenAPI v3.x documentation",
5
5
  "keywords": [
6
6
  "typescript",
@@ -45,18 +45,18 @@
45
45
  "@arethetypeswrong/cli": "0.18.2",
46
46
  "@changesets/changelog-github": "0.5.1",
47
47
  "@changesets/cli": "2.29.5",
48
- "@redocly/cli": "1.34.4",
48
+ "@redocly/cli": "2.0.2",
49
49
  "@types/node": "22.15.21",
50
50
  "@vitest/coverage-v8": "3.2.4",
51
51
  "@zod-openapi/openapi3-ts": "1.0.0",
52
52
  "ajv": "8.17.1",
53
- "eslint-plugin-import-zod": "1.1.1",
53
+ "eslint-plugin-import-zod": "1.2.0",
54
54
  "eslint-plugin-zod-openapi": "2.0.0",
55
55
  "skuba": "12.0.2",
56
- "tsdown": "0.12.9",
56
+ "tsdown": "0.13.2",
57
57
  "vitest": "3.2.4",
58
58
  "yaml": "2.8.0",
59
- "zod": "4.0.5"
59
+ "zod": "4.0.14"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "zod": "^3.25.74 || ^4.0.0"