zod-openapi 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,9 +34,20 @@ var isAnyZodType = (zodType) => Boolean(
34
34
  zodType?._def?.typeName
35
35
  );
36
36
 
37
+ // src/openapi.ts
38
+ var openApiVersions = [
39
+ "3.0.0",
40
+ "3.0.1",
41
+ "3.0.2",
42
+ "3.0.3",
43
+ "3.1.0"
44
+ ];
45
+ var satisfiesVersion = (test, against) => openApiVersions.indexOf(test) >= openApiVersions.indexOf(against);
46
+ var isReferenceObject = (schemaOrRef) => Boolean("$ref" in schemaOrRef && schemaOrRef.$ref);
47
+
37
48
  // src/create/schema/metadata.ts
38
49
  var enhanceWithMetadata = (schemaObject, metadata) => {
39
- if ("$ref" in schemaObject) {
50
+ if (isReferenceObject(schemaObject)) {
40
51
  if (Object.values(metadata).every((val) => val === void 0)) {
41
52
  return schemaObject;
42
53
  }
@@ -189,16 +200,6 @@ var createManualTypeSchema = (zodSchema, state) => {
189
200
  };
190
201
  };
191
202
 
192
- // src/openapi.ts
193
- var openApiVersions = [
194
- "3.0.0",
195
- "3.0.1",
196
- "3.0.2",
197
- "3.0.3",
198
- "3.1.0"
199
- ];
200
- var satisfiesVersion = (test, against) => openApiVersions.indexOf(test) >= openApiVersions.indexOf(against);
201
-
202
203
  // src/create/schema/parsers/nativeEnum.ts
203
204
  var createNativeEnumSchema = (zodEnum, state) => {
204
205
  const enumValues = getValidEnumValues(zodEnum._def.values);
@@ -248,34 +249,41 @@ var createNullableSchema = (zodNullable, state) => {
248
249
  const schemaObject = createSchemaObject(zodNullable.unwrap(), state, [
249
250
  "nullable"
250
251
  ]);
251
- if ("$ref" in schemaObject || schemaObject.allOf) {
252
- return {
253
- oneOf: mapNullOf([schemaObject], state.components.openapi)
254
- };
255
- }
256
- if (schemaObject.oneOf) {
257
- const { oneOf, ...schema2 } = schemaObject;
252
+ if (satisfiesVersion(state.components.openapi, "3.1.0")) {
253
+ if (isReferenceObject(schemaObject) || schemaObject.allOf) {
254
+ return {
255
+ oneOf: mapNullOf([schemaObject], state.components.openapi)
256
+ };
257
+ }
258
+ if (schemaObject.oneOf) {
259
+ const { oneOf, ...schema3 } = schemaObject;
260
+ return {
261
+ oneOf: mapNullOf(oneOf, state.components.openapi),
262
+ ...schema3
263
+ };
264
+ }
265
+ if (schemaObject.anyOf) {
266
+ const { anyOf, ...schema3 } = schemaObject;
267
+ return {
268
+ anyOf: mapNullOf(anyOf, state.components.openapi),
269
+ ...schema3
270
+ };
271
+ }
272
+ const { type: type2, ...schema2 } = schemaObject;
258
273
  return {
259
- oneOf: mapNullOf(oneOf, state.components.openapi),
274
+ type: mapNullType(type2),
260
275
  ...schema2
261
276
  };
262
277
  }
263
- if (schemaObject.anyOf) {
264
- const { anyOf, ...schema2 } = schemaObject;
278
+ if (isReferenceObject(schemaObject)) {
265
279
  return {
266
- anyOf: mapNullOf(anyOf, state.components.openapi),
267
- ...schema2
280
+ allOf: [schemaObject],
281
+ nullable: true
268
282
  };
269
283
  }
270
284
  const { type, ...schema } = schemaObject;
271
- if (satisfiesVersion(state.components.openapi, "3.1.0")) {
272
- return {
273
- type: mapNullType(type),
274
- ...schema
275
- };
276
- }
277
285
  return {
278
- type,
286
+ ...type && { type },
279
287
  nullable: true,
280
288
  ...schema,
281
289
  // https://github.com/OAI/OpenAPI-Specification/blob/main/proposals/2019-10-31-Clarify-Nullable.md#if-a-schema-specifies-nullable-true-and-enum-1-2-3-does-that-schema-allow-null-values-see-1900
package/lib-esm/index.js CHANGED
@@ -10,9 +10,20 @@ var isAnyZodType = (zodType) => Boolean(
10
10
  zodType?._def?.typeName
11
11
  );
12
12
 
13
+ // src/openapi.ts
14
+ var openApiVersions = [
15
+ "3.0.0",
16
+ "3.0.1",
17
+ "3.0.2",
18
+ "3.0.3",
19
+ "3.1.0"
20
+ ];
21
+ var satisfiesVersion = (test, against) => openApiVersions.indexOf(test) >= openApiVersions.indexOf(against);
22
+ var isReferenceObject = (schemaOrRef) => Boolean("$ref" in schemaOrRef && schemaOrRef.$ref);
23
+
13
24
  // src/create/schema/metadata.ts
14
25
  var enhanceWithMetadata = (schemaObject, metadata) => {
15
- if ("$ref" in schemaObject) {
26
+ if (isReferenceObject(schemaObject)) {
16
27
  if (Object.values(metadata).every((val) => val === void 0)) {
17
28
  return schemaObject;
18
29
  }
@@ -165,16 +176,6 @@ var createManualTypeSchema = (zodSchema, state) => {
165
176
  };
166
177
  };
167
178
 
168
- // src/openapi.ts
169
- var openApiVersions = [
170
- "3.0.0",
171
- "3.0.1",
172
- "3.0.2",
173
- "3.0.3",
174
- "3.1.0"
175
- ];
176
- var satisfiesVersion = (test, against) => openApiVersions.indexOf(test) >= openApiVersions.indexOf(against);
177
-
178
179
  // src/create/schema/parsers/nativeEnum.ts
179
180
  var createNativeEnumSchema = (zodEnum, state) => {
180
181
  const enumValues = getValidEnumValues(zodEnum._def.values);
@@ -224,34 +225,41 @@ var createNullableSchema = (zodNullable, state) => {
224
225
  const schemaObject = createSchemaObject(zodNullable.unwrap(), state, [
225
226
  "nullable"
226
227
  ]);
227
- if ("$ref" in schemaObject || schemaObject.allOf) {
228
- return {
229
- oneOf: mapNullOf([schemaObject], state.components.openapi)
230
- };
231
- }
232
- if (schemaObject.oneOf) {
233
- const { oneOf, ...schema2 } = schemaObject;
228
+ if (satisfiesVersion(state.components.openapi, "3.1.0")) {
229
+ if (isReferenceObject(schemaObject) || schemaObject.allOf) {
230
+ return {
231
+ oneOf: mapNullOf([schemaObject], state.components.openapi)
232
+ };
233
+ }
234
+ if (schemaObject.oneOf) {
235
+ const { oneOf, ...schema3 } = schemaObject;
236
+ return {
237
+ oneOf: mapNullOf(oneOf, state.components.openapi),
238
+ ...schema3
239
+ };
240
+ }
241
+ if (schemaObject.anyOf) {
242
+ const { anyOf, ...schema3 } = schemaObject;
243
+ return {
244
+ anyOf: mapNullOf(anyOf, state.components.openapi),
245
+ ...schema3
246
+ };
247
+ }
248
+ const { type: type2, ...schema2 } = schemaObject;
234
249
  return {
235
- oneOf: mapNullOf(oneOf, state.components.openapi),
250
+ type: mapNullType(type2),
236
251
  ...schema2
237
252
  };
238
253
  }
239
- if (schemaObject.anyOf) {
240
- const { anyOf, ...schema2 } = schemaObject;
254
+ if (isReferenceObject(schemaObject)) {
241
255
  return {
242
- anyOf: mapNullOf(anyOf, state.components.openapi),
243
- ...schema2
256
+ allOf: [schemaObject],
257
+ nullable: true
244
258
  };
245
259
  }
246
260
  const { type, ...schema } = schemaObject;
247
- if (satisfiesVersion(state.components.openapi, "3.1.0")) {
248
- return {
249
- type: mapNullType(type),
250
- ...schema
251
- };
252
- }
253
261
  return {
254
- type,
262
+ ...type && { type },
255
263
  nullable: true,
256
264
  ...schema,
257
265
  // https://github.com/OAI/OpenAPI-Specification/blob/main/proposals/2019-10-31-Clarify-Nullable.md#if-a-schema-specifies-nullable-true-and-enum-1-2-3-does-that-schema-allow-null-values-see-1900
@@ -1,4 +1,4 @@
1
1
  import type { ZodNullable, ZodTypeAny } from 'zod';
2
2
  import type { oas31 } from '../../../openapi3-ts/dist';
3
3
  import { type SchemaState } from '../../schema';
4
- export declare const createNullableSchema: <T extends ZodTypeAny>(zodNullable: ZodNullable<T>, state: SchemaState) => oas31.SchemaObject;
4
+ export declare const createNullableSchema: <T extends ZodTypeAny>(zodNullable: ZodNullable<T>, state: SchemaState) => oas31.SchemaObject | oas31.ReferenceObject;
@@ -1,3 +1,5 @@
1
+ import type { oas31 } from './openapi3-ts/dist';
1
2
  export declare const openApiVersions: readonly ["3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.1.0"];
2
3
  export type OpenApiVersion = (typeof openApiVersions)[number];
3
4
  export declare const satisfiesVersion: (test: OpenApiVersion, against: OpenApiVersion) => boolean;
5
+ export declare const isReferenceObject: (schemaOrRef: oas31.SchemaObject | oas31.ReferenceObject) => schemaOrRef is oas31.ReferenceObject;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-openapi",
3
- "version": "2.10.0",
3
+ "version": "2.11.0",
4
4
  "description": "Convert Zod Schemas to OpenAPI v3.x documentation",
5
5
  "keywords": [
6
6
  "typescript",