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.
package/lib-commonjs/index.js
CHANGED
|
@@ -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 (
|
|
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 ("
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
-
|
|
274
|
+
type: mapNullType(type2),
|
|
260
275
|
...schema2
|
|
261
276
|
};
|
|
262
277
|
}
|
|
263
|
-
if (schemaObject
|
|
264
|
-
const { anyOf, ...schema2 } = schemaObject;
|
|
278
|
+
if (isReferenceObject(schemaObject)) {
|
|
265
279
|
return {
|
|
266
|
-
|
|
267
|
-
|
|
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 (
|
|
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 ("
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
|
|
250
|
+
type: mapNullType(type2),
|
|
236
251
|
...schema2
|
|
237
252
|
};
|
|
238
253
|
}
|
|
239
|
-
if (schemaObject
|
|
240
|
-
const { anyOf, ...schema2 } = schemaObject;
|
|
254
|
+
if (isReferenceObject(schemaObject)) {
|
|
241
255
|
return {
|
|
242
|
-
|
|
243
|
-
|
|
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;
|
package/lib-types/openapi.d.ts
CHANGED
|
@@ -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;
|