@scalar/openapi-types 0.2.1 → 0.2.3
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/CHANGELOG.md +12 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +7 -0
- package/dist/openapi-types.js +28 -33
- package/dist/openapi-types.js.map +7 -0
- package/dist/openapi-types.test-d.js +52 -0
- package/dist/openapi-types.test-d.js.map +7 -0
- package/dist/schemas/3.1/compliance/callback-object.test.js +97 -0
- package/dist/schemas/3.1/compliance/callback-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/contact-object.test.js +19 -0
- package/dist/schemas/3.1/compliance/contact-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/example-object.test.js +91 -0
- package/dist/schemas/3.1/compliance/example-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/external-documentation-object.test.js +17 -0
- package/dist/schemas/3.1/compliance/external-documentation-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/header-object.test.js +47 -0
- package/dist/schemas/3.1/compliance/header-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/info-object.test.js +41 -0
- package/dist/schemas/3.1/compliance/info-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/license-object.test.js +17 -0
- package/dist/schemas/3.1/compliance/license-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/media-type-object.test.js +69 -0
- package/dist/schemas/3.1/compliance/media-type-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/openapi-object.test.js +381 -0
- package/dist/schemas/3.1/compliance/openapi-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/operation-object.test.js +467 -0
- package/dist/schemas/3.1/compliance/operation-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/parameter-object.test.js +155 -0
- package/dist/schemas/3.1/compliance/parameter-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/path-item-object.test.js +103 -0
- package/dist/schemas/3.1/compliance/path-item-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/reference-object.test.js +282 -0
- package/dist/schemas/3.1/compliance/reference-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/request-body-object.test.js +97 -0
- package/dist/schemas/3.1/compliance/request-body-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/response-object.test.js +131 -0
- package/dist/schemas/3.1/compliance/response-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/responses-object.test.js +53 -0
- package/dist/schemas/3.1/compliance/responses-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/runtime-expression.test.js +165 -0
- package/dist/schemas/3.1/compliance/runtime-expression.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/schema-object.test.js +470 -0
- package/dist/schemas/3.1/compliance/schema-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/security-requirement-object.test.js +54 -0
- package/dist/schemas/3.1/compliance/security-requirement-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/security-scheme-object.test.js +123 -0
- package/dist/schemas/3.1/compliance/security-scheme-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/server-object.test.js +17 -0
- package/dist/schemas/3.1/compliance/server-object.test.js.map +7 -0
- package/dist/schemas/3.1/compliance/tag-object.test.js +17 -0
- package/dist/schemas/3.1/compliance/tag-object.test.js.map +7 -0
- package/dist/schemas/3.1/processed/base-path-item-object.js +27 -33
- package/dist/schemas/3.1/processed/base-path-item-object.js.map +7 -0
- package/dist/schemas/3.1/processed/callback-object.js +7 -16
- package/dist/schemas/3.1/processed/callback-object.js.map +7 -0
- package/dist/schemas/3.1/processed/components-object.js +55 -62
- package/dist/schemas/3.1/processed/components-object.js.map +7 -0
- package/dist/schemas/3.1/processed/contact-object.js +11 -17
- package/dist/schemas/3.1/processed/contact-object.js.map +7 -0
- package/dist/schemas/3.1/processed/discriminator-object.js +15 -26
- package/dist/schemas/3.1/processed/discriminator-object.js.map +7 -0
- package/dist/schemas/3.1/processed/encoding-object.js +17 -28
- package/dist/schemas/3.1/processed/encoding-object.js.map +7 -0
- package/dist/schemas/3.1/processed/example-object.js +23 -33
- package/dist/schemas/3.1/processed/example-object.js.map +7 -0
- package/dist/schemas/3.1/processed/external-documentation-object.js +9 -15
- package/dist/schemas/3.1/processed/external-documentation-object.js.map +7 -0
- package/dist/schemas/3.1/processed/header-object.js +48 -64
- package/dist/schemas/3.1/processed/header-object.js.map +7 -0
- package/dist/schemas/3.1/processed/index.js +87 -30
- package/dist/schemas/3.1/processed/index.js.map +7 -0
- package/dist/schemas/3.1/processed/info-object.js +36 -43
- package/dist/schemas/3.1/processed/info-object.js.map +7 -0
- package/dist/schemas/3.1/processed/license-object.js +13 -19
- package/dist/schemas/3.1/processed/license-object.js.map +7 -0
- package/dist/schemas/3.1/processed/link-object.js +36 -50
- package/dist/schemas/3.1/processed/link-object.js.map +7 -0
- package/dist/schemas/3.1/processed/media-type-object-without-encoding.js +26 -32
- package/dist/schemas/3.1/processed/media-type-object-without-encoding.js.map +7 -0
- package/dist/schemas/3.1/processed/media-type-object.js +30 -36
- package/dist/schemas/3.1/processed/media-type-object.js.map +7 -0
- package/dist/schemas/3.1/processed/openapi-object.js +70 -78
- package/dist/schemas/3.1/processed/openapi-object.js.map +7 -0
- package/dist/schemas/3.1/processed/operation-object-without-callbacks.js +64 -70
- package/dist/schemas/3.1/processed/operation-object-without-callbacks.js.map +7 -0
- package/dist/schemas/3.1/processed/operation-object.js +14 -20
- package/dist/schemas/3.1/processed/operation-object.js.map +7 -0
- package/dist/schemas/3.1/processed/parameter-object.js +83 -91
- package/dist/schemas/3.1/processed/parameter-object.js.map +7 -0
- package/dist/schemas/3.1/processed/path-item-object-without-callbacks.js +38 -46
- package/dist/schemas/3.1/processed/path-item-object-without-callbacks.js.map +7 -0
- package/dist/schemas/3.1/processed/path-item-object.js +38 -46
- package/dist/schemas/3.1/processed/path-item-object.js.map +7 -0
- package/dist/schemas/3.1/processed/paths-object.js +16 -22
- package/dist/schemas/3.1/processed/paths-object.js.map +7 -0
- package/dist/schemas/3.1/processed/request-body-object.js +25 -31
- package/dist/schemas/3.1/processed/request-body-object.js.map +7 -0
- package/dist/schemas/3.1/processed/response-object.js +28 -34
- package/dist/schemas/3.1/processed/response-object.js.map +7 -0
- package/dist/schemas/3.1/processed/responses-object.js +17 -30
- package/dist/schemas/3.1/processed/responses-object.js.map +7 -0
- package/dist/schemas/3.1/processed/runtime-expression.js +50 -81
- package/dist/schemas/3.1/processed/runtime-expression.js.map +7 -0
- package/dist/schemas/3.1/processed/schema-object.js +88 -89
- package/dist/schemas/3.1/processed/schema-object.js.map +7 -0
- package/dist/schemas/3.1/processed/schema-object.test.js +310 -0
- package/dist/schemas/3.1/processed/schema-object.test.js.map +7 -0
- package/dist/schemas/3.1/processed/security-requirement-object.js +20 -36
- package/dist/schemas/3.1/processed/security-requirement-object.js.map +7 -0
- package/dist/schemas/3.1/processed/security-scheme-object.js +114 -142
- package/dist/schemas/3.1/processed/security-scheme-object.js.map +7 -0
- package/dist/schemas/3.1/processed/server-object.js +19 -25
- package/dist/schemas/3.1/processed/server-object.js.map +7 -0
- package/dist/schemas/3.1/processed/server-variable-object.js +19 -25
- package/dist/schemas/3.1/processed/server-variable-object.js.map +7 -0
- package/dist/schemas/3.1/processed/tag-object.js +12 -19
- package/dist/schemas/3.1/processed/tag-object.js.map +7 -0
- package/dist/schemas/3.1/processed/webhooks-object.js +6 -18
- package/dist/schemas/3.1/processed/webhooks-object.js.map +7 -0
- package/dist/schemas/3.1/processed/xml-object.js +28 -38
- package/dist/schemas/3.1/processed/xml-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/base-path-item-object.js +16 -22
- package/dist/schemas/3.1/unprocessed/base-path-item-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/callback-object.js +6 -15
- package/dist/schemas/3.1/unprocessed/callback-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/components-object.js +58 -65
- package/dist/schemas/3.1/unprocessed/components-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/contact-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/contact-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/discriminator-object.js +6 -17
- package/dist/schemas/3.1/unprocessed/discriminator-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/encoding-object.js +14 -25
- package/dist/schemas/3.1/unprocessed/encoding-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/example-object.js +6 -16
- package/dist/schemas/3.1/unprocessed/example-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/external-documentation-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/external-documentation-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/header-object.js +25 -41
- package/dist/schemas/3.1/unprocessed/header-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/index.js +89 -31
- package/dist/schemas/3.1/unprocessed/index.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/info-object.js +6 -13
- package/dist/schemas/3.1/unprocessed/info-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/license-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/license-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/link-object.js +6 -20
- package/dist/schemas/3.1/unprocessed/link-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/media-type-object-without-encoding.js +6 -12
- package/dist/schemas/3.1/unprocessed/media-type-object-without-encoding.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/media-type-object.js +33 -39
- package/dist/schemas/3.1/unprocessed/media-type-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/openapi-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/openapi-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/operation-object-without-callbacks.js +38 -44
- package/dist/schemas/3.1/unprocessed/operation-object-without-callbacks.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/operation-object.js +15 -21
- package/dist/schemas/3.1/unprocessed/operation-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/parameter-object.js +22 -30
- package/dist/schemas/3.1/unprocessed/parameter-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/path-item-object-without-callbacks.js +38 -46
- package/dist/schemas/3.1/unprocessed/path-item-object-without-callbacks.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/path-item-object.js +52 -60
- package/dist/schemas/3.1/unprocessed/path-item-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/paths-object.js +6 -14
- package/dist/schemas/3.1/unprocessed/paths-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/reference-object.js +20 -28
- package/dist/schemas/3.1/unprocessed/reference-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/request-body-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/request-body-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/response-object.js +27 -33
- package/dist/schemas/3.1/unprocessed/response-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/responses-object.js +18 -31
- package/dist/schemas/3.1/unprocessed/responses-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/runtime-expression.js +6 -17
- package/dist/schemas/3.1/unprocessed/runtime-expression.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/schema-object.js +31 -32
- package/dist/schemas/3.1/unprocessed/schema-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/security-requirement-object.js +6 -23
- package/dist/schemas/3.1/unprocessed/security-requirement-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/security-scheme-object.js +41 -29
- package/dist/schemas/3.1/unprocessed/security-scheme-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/server-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/server-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/server-variable-object.js +6 -12
- package/dist/schemas/3.1/unprocessed/server-variable-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/tag-object.js +6 -13
- package/dist/schemas/3.1/unprocessed/tag-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/webhooks-object.js +6 -18
- package/dist/schemas/3.1/unprocessed/webhooks-object.js.map +7 -0
- package/dist/schemas/3.1/unprocessed/xml-object.js +6 -16
- package/dist/schemas/3.1/unprocessed/xml-object.js.map +7 -0
- package/dist/schemas/extensions/index.d.ts +1 -0
- package/dist/schemas/extensions/index.d.ts.map +1 -1
- package/dist/schemas/extensions/index.js +31 -11
- package/dist/schemas/extensions/index.js.map +7 -0
- package/dist/schemas/extensions/x-additional-properties-name.js +6 -12
- package/dist/schemas/extensions/x-additional-properties-name.js.map +7 -0
- package/dist/schemas/extensions/x-additional-properties-name.test.js +28 -0
- package/dist/schemas/extensions/x-additional-properties-name.test.js.map +7 -0
- package/dist/schemas/extensions/x-code-samples.js +12 -10
- package/dist/schemas/extensions/x-code-samples.js.map +7 -0
- package/dist/schemas/extensions/x-code-samples.test.js +82 -0
- package/dist/schemas/extensions/x-code-samples.test.js.map +7 -0
- package/dist/schemas/extensions/x-display-name.js +8 -0
- package/dist/schemas/extensions/x-display-name.js.map +7 -0
- package/dist/schemas/extensions/x-display-name.test.js +28 -0
- package/dist/schemas/extensions/x-display-name.test.js.map +7 -0
- package/dist/schemas/extensions/x-enum-descriptions.js +6 -18
- package/dist/schemas/extensions/x-enum-descriptions.js.map +7 -0
- package/dist/schemas/extensions/x-enum-descriptions.test.js +36 -0
- package/dist/schemas/extensions/x-enum-descriptions.test.js.map +7 -0
- package/dist/schemas/extensions/x-internal.js +6 -5
- package/dist/schemas/extensions/x-internal.js.map +7 -0
- package/dist/schemas/extensions/x-internal.test.js +20 -0
- package/dist/schemas/extensions/x-internal.test.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-icon.js +6 -5
- package/dist/schemas/extensions/x-scalar-icon.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-icon.test.js +14 -0
- package/dist/schemas/extensions/x-scalar-icon.test.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-ignore.js +6 -5
- package/dist/schemas/extensions/x-scalar-ignore.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-ignore.test.js +20 -0
- package/dist/schemas/extensions/x-scalar-ignore.test.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-redirect-uri.js +6 -5
- package/dist/schemas/extensions/x-scalar-redirect-uri.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-redirect-uri.test.js +23 -0
- package/dist/schemas/extensions/x-scalar-redirect-uri.test.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-sdk-installation.js +10 -13
- package/dist/schemas/extensions/x-scalar-sdk-installation.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-sdk-installation.test.js +25 -0
- package/dist/schemas/extensions/x-scalar-sdk-installation.test.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-security-query.d.ts +20 -0
- package/dist/schemas/extensions/x-scalar-security-query.d.ts.map +1 -0
- package/dist/schemas/extensions/x-scalar-security-query.js +8 -0
- package/dist/schemas/extensions/x-scalar-security-query.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-security-query.test.js +35 -0
- package/dist/schemas/extensions/x-scalar-security-query.test.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-stability.js +10 -19
- package/dist/schemas/extensions/x-scalar-stability.js.map +7 -0
- package/dist/schemas/extensions/x-scalar-stability.test.js +33 -0
- package/dist/schemas/extensions/x-scalar-stability.test.js.map +7 -0
- package/dist/schemas/extensions/x-tag-groups.js +14 -17
- package/dist/schemas/extensions/x-tag-groups.js.map +7 -0
- package/dist/schemas/extensions/x-tag-groups.test.js +55 -0
- package/dist/schemas/extensions/x-tag-groups.test.js.map +7 -0
- package/dist/schemas/extensions/x-use-pkce.js +11 -10
- package/dist/schemas/extensions/x-use-pkce.js.map +7 -0
- package/dist/schemas/extensions/x-use-pkce.test.js +34 -0
- package/dist/schemas/extensions/x-use-pkce.test.js.map +7 -0
- package/package.json +4 -5
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { SchemaObjectSchema } from "./schema-object.js";
|
|
3
|
+
describe("schema-object", () => {
|
|
4
|
+
describe("basic validation", () => {
|
|
5
|
+
it("validates a simple string schema", () => {
|
|
6
|
+
const schema = {
|
|
7
|
+
type: "string",
|
|
8
|
+
minLength: 1,
|
|
9
|
+
maxLength: 100,
|
|
10
|
+
pattern: "^[a-zA-Z]+$"
|
|
11
|
+
};
|
|
12
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
13
|
+
expect(result.success).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it("validates a complex object schema", () => {
|
|
16
|
+
const schema = {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
id: {
|
|
20
|
+
type: "string",
|
|
21
|
+
format: "uuid"
|
|
22
|
+
},
|
|
23
|
+
name: {
|
|
24
|
+
type: "string",
|
|
25
|
+
minLength: 1
|
|
26
|
+
},
|
|
27
|
+
age: {
|
|
28
|
+
type: "integer",
|
|
29
|
+
minimum: 0,
|
|
30
|
+
maximum: 150
|
|
31
|
+
},
|
|
32
|
+
tags: {
|
|
33
|
+
type: "array",
|
|
34
|
+
items: {
|
|
35
|
+
type: "string"
|
|
36
|
+
},
|
|
37
|
+
uniqueItems: true
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
required: ["id", "name"],
|
|
41
|
+
additionalProperties: false
|
|
42
|
+
};
|
|
43
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
44
|
+
expect(result.success).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it("validates array type with tuple validation", () => {
|
|
47
|
+
const schema = {
|
|
48
|
+
type: "array",
|
|
49
|
+
items: {
|
|
50
|
+
type: ["string", "number"]
|
|
51
|
+
},
|
|
52
|
+
minItems: 2,
|
|
53
|
+
maxItems: 5,
|
|
54
|
+
uniqueItems: true
|
|
55
|
+
};
|
|
56
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
57
|
+
expect(result.success).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it("validates schema with null type", () => {
|
|
60
|
+
const schema = {
|
|
61
|
+
type: ["string", "null"],
|
|
62
|
+
description: "A nullable string field"
|
|
63
|
+
};
|
|
64
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
65
|
+
expect(result.success).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe("format compatibility", () => {
|
|
69
|
+
it("validates string formats with string type", () => {
|
|
70
|
+
const stringFormats = [
|
|
71
|
+
"date",
|
|
72
|
+
"date-time",
|
|
73
|
+
"duration",
|
|
74
|
+
"password",
|
|
75
|
+
"byte",
|
|
76
|
+
"binary",
|
|
77
|
+
"email",
|
|
78
|
+
"uuid",
|
|
79
|
+
"uri",
|
|
80
|
+
"uri-reference",
|
|
81
|
+
"uri-template",
|
|
82
|
+
"hostname",
|
|
83
|
+
"ipv4",
|
|
84
|
+
"ipv6"
|
|
85
|
+
];
|
|
86
|
+
stringFormats.forEach((format) => {
|
|
87
|
+
const schema = {
|
|
88
|
+
type: "string",
|
|
89
|
+
format
|
|
90
|
+
};
|
|
91
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
92
|
+
expect(result.success).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
it("validates number formats with numeric types", () => {
|
|
96
|
+
const numberFormats = ["float", "double", "int32", "int64"];
|
|
97
|
+
numberFormats.forEach((format) => {
|
|
98
|
+
const schema = {
|
|
99
|
+
type: "number",
|
|
100
|
+
format
|
|
101
|
+
};
|
|
102
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
103
|
+
expect(result.success).toBe(true);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe("discriminator validation", () => {
|
|
108
|
+
it("validates discriminator with oneOf", () => {
|
|
109
|
+
const schema = {
|
|
110
|
+
oneOf: [
|
|
111
|
+
{ type: "object", properties: { type: { const: "dog" } } },
|
|
112
|
+
{ type: "object", properties: { type: { const: "cat" } } }
|
|
113
|
+
],
|
|
114
|
+
discriminator: {
|
|
115
|
+
propertyName: "type"
|
|
116
|
+
},
|
|
117
|
+
required: ["type"]
|
|
118
|
+
};
|
|
119
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
120
|
+
expect(result.success).toBe(true);
|
|
121
|
+
});
|
|
122
|
+
it("validates discriminator with anyOf", () => {
|
|
123
|
+
const schema = {
|
|
124
|
+
anyOf: [
|
|
125
|
+
{ type: "object", properties: { type: { const: "dog" } } },
|
|
126
|
+
{ type: "object", properties: { type: { const: "cat" } } }
|
|
127
|
+
],
|
|
128
|
+
discriminator: {
|
|
129
|
+
propertyName: "type"
|
|
130
|
+
},
|
|
131
|
+
required: ["type"]
|
|
132
|
+
};
|
|
133
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
134
|
+
expect(result.success).toBe(true);
|
|
135
|
+
});
|
|
136
|
+
it("validates discriminator with mapping", () => {
|
|
137
|
+
const schema = {
|
|
138
|
+
oneOf: [
|
|
139
|
+
{ type: "object", properties: { type: { const: "dog" } } },
|
|
140
|
+
{ type: "object", properties: { type: { const: "cat" } } }
|
|
141
|
+
],
|
|
142
|
+
discriminator: {
|
|
143
|
+
propertyName: "type",
|
|
144
|
+
mapping: {
|
|
145
|
+
dog: "#/components/schemas/Dog",
|
|
146
|
+
cat: "#/components/schemas/Cat"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
required: ["type"]
|
|
150
|
+
};
|
|
151
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
152
|
+
expect(result.success).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe("metadata validation", () => {
|
|
156
|
+
it("validates vendor extensions", () => {
|
|
157
|
+
const schema = {
|
|
158
|
+
type: "string",
|
|
159
|
+
"x-custom-extension": true,
|
|
160
|
+
"x-another-extension": {
|
|
161
|
+
nested: "value"
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
165
|
+
expect(result.success).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
describe("format validation", () => {
|
|
169
|
+
it("validates date format", () => {
|
|
170
|
+
const schema = {
|
|
171
|
+
type: "string",
|
|
172
|
+
format: "date"
|
|
173
|
+
};
|
|
174
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
175
|
+
expect(result.success).toBe(true);
|
|
176
|
+
});
|
|
177
|
+
it("validates email format", () => {
|
|
178
|
+
const schema = {
|
|
179
|
+
type: "string",
|
|
180
|
+
format: "email"
|
|
181
|
+
};
|
|
182
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
183
|
+
expect(result.success).toBe(true);
|
|
184
|
+
});
|
|
185
|
+
it("validates uuid format", () => {
|
|
186
|
+
const schema = {
|
|
187
|
+
type: "string",
|
|
188
|
+
format: "uuid"
|
|
189
|
+
};
|
|
190
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
191
|
+
expect(result.success).toBe(true);
|
|
192
|
+
});
|
|
193
|
+
it("validates int32 format", () => {
|
|
194
|
+
const schema = {
|
|
195
|
+
type: "integer",
|
|
196
|
+
format: "int32"
|
|
197
|
+
};
|
|
198
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
199
|
+
expect(result.success).toBe(true);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe("OpenAPI extensions", () => {
|
|
203
|
+
it("validates xml configuration", () => {
|
|
204
|
+
const schema = {
|
|
205
|
+
type: "object",
|
|
206
|
+
xml: {
|
|
207
|
+
name: "Pet",
|
|
208
|
+
namespace: "http://example.com/schema",
|
|
209
|
+
prefix: "p",
|
|
210
|
+
attribute: true,
|
|
211
|
+
wrapped: true
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
215
|
+
expect(result.success).toBe(true);
|
|
216
|
+
});
|
|
217
|
+
it("validates external documentation", () => {
|
|
218
|
+
const schema = {
|
|
219
|
+
type: "object",
|
|
220
|
+
externalDocs: {
|
|
221
|
+
description: "Find more info here",
|
|
222
|
+
url: "https://example.com/docs"
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
226
|
+
expect(result.success).toBe(true);
|
|
227
|
+
});
|
|
228
|
+
it("validates custom x- extensions", () => {
|
|
229
|
+
const schema = {
|
|
230
|
+
type: "string",
|
|
231
|
+
"x-custom-extension": {
|
|
232
|
+
someValue: 123
|
|
233
|
+
},
|
|
234
|
+
"x-another-extension": true
|
|
235
|
+
};
|
|
236
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
237
|
+
expect(result.success).toBe(true);
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
describe("schema composition", () => {
|
|
241
|
+
it("validates allOf composition", () => {
|
|
242
|
+
const schema = {
|
|
243
|
+
allOf: [
|
|
244
|
+
{ type: "object", properties: { name: { type: "string" } } },
|
|
245
|
+
{ type: "object", properties: { age: { type: "integer" } } }
|
|
246
|
+
]
|
|
247
|
+
};
|
|
248
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
249
|
+
expect(result.success).toBe(true);
|
|
250
|
+
});
|
|
251
|
+
it("validates oneOf with discriminator", () => {
|
|
252
|
+
const schema = {
|
|
253
|
+
oneOf: [
|
|
254
|
+
{ type: "object", properties: { type: { const: "dog" }, bark: { type: "boolean" } } },
|
|
255
|
+
{ type: "object", properties: { type: { const: "cat" }, meow: { type: "boolean" } } }
|
|
256
|
+
],
|
|
257
|
+
discriminator: {
|
|
258
|
+
propertyName: "type"
|
|
259
|
+
},
|
|
260
|
+
required: ["type"]
|
|
261
|
+
};
|
|
262
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
263
|
+
expect(result.success).toBe(true);
|
|
264
|
+
});
|
|
265
|
+
it("validates anyOf with multiple types", () => {
|
|
266
|
+
const schema = {
|
|
267
|
+
anyOf: [{ type: "string", format: "email" }, { type: "string", format: "uri" }, { type: "null" }]
|
|
268
|
+
};
|
|
269
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
270
|
+
expect(result.success).toBe(true);
|
|
271
|
+
});
|
|
272
|
+
it("validates not with complex schema", () => {
|
|
273
|
+
const schema = {
|
|
274
|
+
not: {
|
|
275
|
+
type: "object",
|
|
276
|
+
properties: {
|
|
277
|
+
forbidden: { type: "boolean", const: true },
|
|
278
|
+
restricted: { type: "string", enum: ["no", "nope"] }
|
|
279
|
+
},
|
|
280
|
+
required: ["forbidden"]
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
284
|
+
expect(result.success).toBe(true);
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
describe("validation errors", () => {
|
|
288
|
+
it("rejects invalid type values", () => {
|
|
289
|
+
const schema = { type: "invalid" };
|
|
290
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
291
|
+
expect(result.success).toBe(false);
|
|
292
|
+
if (!result.success) {
|
|
293
|
+
expect(result.error.issues[0].path).toContain("type");
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
it("rejects invalid required fields", () => {
|
|
297
|
+
const schema = {
|
|
298
|
+
type: "object",
|
|
299
|
+
properties: {
|
|
300
|
+
name: { type: "string" }
|
|
301
|
+
},
|
|
302
|
+
required: ["age"]
|
|
303
|
+
// age is not defined in properties
|
|
304
|
+
};
|
|
305
|
+
const result = SchemaObjectSchema.safeParse(schema);
|
|
306
|
+
expect(result.success).toBe(true);
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
//# sourceMappingURL=schema-object.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/schemas/3.1/processed/schema-object.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { describe, expect, it } from 'vitest'\nimport { SchemaObjectSchema } from './schema-object'\n\ndescribe('schema-object', () => {\n describe('basic validation', () => {\n it('validates a simple string schema', () => {\n const schema = {\n type: 'string',\n minLength: 1,\n maxLength: 100,\n pattern: '^[a-zA-Z]+$',\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates a complex object schema', () => {\n const schema = {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n format: 'uuid',\n },\n name: {\n type: 'string',\n minLength: 1,\n },\n age: {\n type: 'integer',\n minimum: 0,\n maximum: 150,\n },\n tags: {\n type: 'array',\n items: {\n type: 'string',\n },\n uniqueItems: true,\n },\n },\n required: ['id', 'name'],\n additionalProperties: false,\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates array type with tuple validation', () => {\n const schema = {\n type: 'array',\n items: {\n type: ['string', 'number'],\n },\n minItems: 2,\n maxItems: 5,\n uniqueItems: true,\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates schema with null type', () => {\n const schema = {\n type: ['string', 'null'],\n description: 'A nullable string field',\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n describe('format compatibility', () => {\n it('validates string formats with string type', () => {\n const stringFormats = [\n 'date',\n 'date-time',\n 'duration',\n 'password',\n 'byte',\n 'binary',\n 'email',\n 'uuid',\n 'uri',\n 'uri-reference',\n 'uri-template',\n 'hostname',\n 'ipv4',\n 'ipv6',\n ]\n\n stringFormats.forEach((format) => {\n const schema = {\n type: 'string',\n format,\n }\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n it('validates number formats with numeric types', () => {\n const numberFormats = ['float', 'double', 'int32', 'int64']\n\n numberFormats.forEach((format) => {\n const schema = {\n type: 'number',\n format,\n }\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n })\n\n describe('discriminator validation', () => {\n it('validates discriminator with oneOf', () => {\n const schema = {\n oneOf: [\n { type: 'object', properties: { type: { const: 'dog' } } },\n { type: 'object', properties: { type: { const: 'cat' } } },\n ],\n discriminator: {\n propertyName: 'type',\n },\n required: ['type'],\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates discriminator with anyOf', () => {\n const schema = {\n anyOf: [\n { type: 'object', properties: { type: { const: 'dog' } } },\n { type: 'object', properties: { type: { const: 'cat' } } },\n ],\n discriminator: {\n propertyName: 'type',\n },\n required: ['type'],\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates discriminator with mapping', () => {\n const schema = {\n oneOf: [\n { type: 'object', properties: { type: { const: 'dog' } } },\n { type: 'object', properties: { type: { const: 'cat' } } },\n ],\n discriminator: {\n propertyName: 'type',\n mapping: {\n dog: '#/components/schemas/Dog',\n cat: '#/components/schemas/Cat',\n },\n },\n required: ['type'],\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n describe('metadata validation', () => {\n it('validates vendor extensions', () => {\n const schema = {\n type: 'string',\n 'x-custom-extension': true,\n 'x-another-extension': {\n nested: 'value',\n },\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n describe('format validation', () => {\n it('validates date format', () => {\n const schema = {\n type: 'string',\n format: 'date',\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates email format', () => {\n const schema = {\n type: 'string',\n format: 'email',\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates uuid format', () => {\n const schema = {\n type: 'string',\n format: 'uuid',\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates int32 format', () => {\n const schema = {\n type: 'integer',\n format: 'int32',\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n describe('OpenAPI extensions', () => {\n it('validates xml configuration', () => {\n const schema = {\n type: 'object',\n xml: {\n name: 'Pet',\n namespace: 'http://example.com/schema',\n prefix: 'p',\n attribute: true,\n wrapped: true,\n },\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates external documentation', () => {\n const schema = {\n type: 'object',\n externalDocs: {\n description: 'Find more info here',\n url: 'https://example.com/docs',\n },\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates custom x- extensions', () => {\n const schema = {\n type: 'string',\n 'x-custom-extension': {\n someValue: 123,\n },\n 'x-another-extension': true,\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n describe('schema composition', () => {\n it('validates allOf composition', () => {\n const schema = {\n allOf: [\n { type: 'object', properties: { name: { type: 'string' } } },\n { type: 'object', properties: { age: { type: 'integer' } } },\n ],\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates oneOf with discriminator', () => {\n const schema = {\n oneOf: [\n { type: 'object', properties: { type: { const: 'dog' }, bark: { type: 'boolean' } } },\n { type: 'object', properties: { type: { const: 'cat' }, meow: { type: 'boolean' } } },\n ],\n discriminator: {\n propertyName: 'type',\n },\n required: ['type'],\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates anyOf with multiple types', () => {\n const schema = {\n anyOf: [{ type: 'string', format: 'email' }, { type: 'string', format: 'uri' }, { type: 'null' }],\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n\n it('validates not with complex schema', () => {\n const schema = {\n not: {\n type: 'object',\n properties: {\n forbidden: { type: 'boolean', const: true },\n restricted: { type: 'string', enum: ['no', 'nope'] },\n },\n required: ['forbidden'],\n },\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true)\n })\n })\n\n describe('validation errors', () => {\n it('rejects invalid type values', () => {\n const schema = { type: 'invalid' }\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(false)\n if (!result.success) {\n expect(result.error.issues[0].path).toContain('type')\n }\n })\n\n it('rejects invalid required fields', () => {\n const schema = {\n type: 'object',\n properties: {\n name: { type: 'string' },\n },\n required: ['age'], // age is not defined in properties\n }\n\n const result = SchemaObjectSchema.safeParse(schema)\n expect(result.success).toBe(true) // OpenAPI allows this as properties might be defined elsewhere\n })\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,37 +1,21 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Security Requirement Object
|
|
5
|
-
*
|
|
6
|
-
* Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a
|
|
7
|
-
* security scheme declared in the Security Schemes under the Components Object.
|
|
8
|
-
*
|
|
9
|
-
* A Security Requirement Object MAY refer to multiple security schemes in which case all schemes MUST be satisfied for
|
|
10
|
-
* a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are
|
|
11
|
-
* required to convey security information.
|
|
12
|
-
*
|
|
13
|
-
* When the security field is defined on the OpenAPI Object or Operation Object and contains multiple Security
|
|
14
|
-
* Requirement Objects, only one of the entries in the list needs to be satisfied to authorize the request. This
|
|
15
|
-
* enables support for scenarios where the API allows multiple, independent security schemes.
|
|
16
|
-
*
|
|
17
|
-
* An empty Security Requirement Object ({}) indicates anonymous access is supported.
|
|
18
|
-
*
|
|
19
|
-
* @see https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#security-requirement-object
|
|
20
|
-
*/
|
|
1
|
+
import { z } from "zod";
|
|
21
2
|
const SecurityRequirementObjectSchema = z.record(
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
z.string(),
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
z.array(z.string())
|
|
36
|
-
|
|
37
|
-
export {
|
|
3
|
+
/**
|
|
4
|
+
* Each name MUST correspond to a security scheme which is declared in the Security Schemes under the Components
|
|
5
|
+
* Object. If the security scheme is of type "oauth2" or "openIdConnect", then the value is a list of scope names
|
|
6
|
+
* required for the execution, and the list MAY be empty if authorization does not require a specified scope.
|
|
7
|
+
*
|
|
8
|
+
* For other security scheme types, the array MAY contain a list of role names which are required for the execution,
|
|
9
|
+
* but are not otherwise defined or exchanged in-band.
|
|
10
|
+
**/
|
|
11
|
+
z.string(),
|
|
12
|
+
/**
|
|
13
|
+
* A list of scope names required for the execution, and the list MAY be empty if authorization does not require a
|
|
14
|
+
* specified scope.
|
|
15
|
+
*/
|
|
16
|
+
z.array(z.string())
|
|
17
|
+
);
|
|
18
|
+
export {
|
|
19
|
+
SecurityRequirementObjectSchema
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=security-requirement-object.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/schemas/3.1/processed/security-requirement-object.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod'\n\n/**\n * Security Requirement Object\n *\n * Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a\n * security scheme declared in the Security Schemes under the Components Object.\n *\n * A Security Requirement Object MAY refer to multiple security schemes in which case all schemes MUST be satisfied for\n * a request to be authorized. This enables support for scenarios where multiple query parameters or HTTP headers are\n * required to convey security information.\n *\n * When the security field is defined on the OpenAPI Object or Operation Object and contains multiple Security\n * Requirement Objects, only one of the entries in the list needs to be satisfied to authorize the request. This\n * enables support for scenarios where the API allows multiple, independent security schemes.\n *\n * An empty Security Requirement Object ({}) indicates anonymous access is supported.\n *\n * @see https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#security-requirement-object\n */\nexport const SecurityRequirementObjectSchema = z.record(\n /**\n * Each name MUST correspond to a security scheme which is declared in the Security Schemes under the Components\n * Object. If the security scheme is of type \"oauth2\" or \"openIdConnect\", then the value is a list of scope names\n * required for the execution, and the list MAY be empty if authorization does not require a specified scope.\n *\n * For other security scheme types, the array MAY contain a list of role names which are required for the execution,\n * but are not otherwise defined or exchanged in-band.\n **/\n z.string(),\n /**\n * A list of scope names required for the execution, and the list MAY be empty if authorization does not require a\n * specified scope.\n */\n z.array(z.string()),\n)\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,SAAS;AAoBX,MAAM,kCAAkC,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS/C,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKT,EAAE,MAAM,EAAE,OAAO,CAAC;AACpB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|