@zuplo/openapi-tools 6.65.9 → 6.66.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +13 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +25 -0
- package/dist/constants.js.map +1 -0
- package/dist/file-format.d.ts +59 -0
- package/dist/file-format.d.ts.map +1 -0
- package/dist/file-format.js +142 -0
- package/dist/file-format.js.map +1 -0
- package/dist/file-format.spec.d.ts +2 -0
- package/dist/file-format.spec.d.ts.map +1 -0
- package/dist/file-format.spec.js +289 -0
- package/dist/file-format.spec.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +32 -5
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +0 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/merge-fixtures.spec.d.ts +2 -0
- package/dist/merge-fixtures.spec.d.ts.map +1 -0
- package/dist/merge-fixtures.spec.js +181 -0
- package/dist/merge-fixtures.spec.js.map +1 -0
- package/dist/{openapi-utils.d.ts → merge.d.ts} +2 -22
- package/dist/merge.d.ts.map +1 -0
- package/dist/{openapi-utils.js → merge.js} +6 -186
- package/dist/merge.js.map +1 -0
- package/dist/merge.spec.d.ts +2 -0
- package/dist/merge.spec.d.ts.map +1 -0
- package/dist/merge.spec.js +399 -0
- package/dist/merge.spec.js.map +1 -0
- package/dist/operation-utils.d.ts +29 -0
- package/dist/operation-utils.d.ts.map +1 -0
- package/dist/operation-utils.js +123 -0
- package/dist/operation-utils.js.map +1 -0
- package/dist/overlay.d.ts +78 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +477 -0
- package/dist/overlay.js.map +1 -0
- package/dist/overlay.spec.d.ts +2 -0
- package/dist/overlay.spec.d.ts.map +1 -0
- package/dist/overlay.spec.js +697 -0
- package/dist/overlay.spec.js.map +1 -0
- package/dist/parsing.d.ts +17 -0
- package/dist/parsing.d.ts.map +1 -0
- package/dist/parsing.js +32 -0
- package/dist/parsing.js.map +1 -0
- package/dist/path-transform.d.ts +11 -0
- package/dist/path-transform.d.ts.map +1 -0
- package/dist/path-transform.js +51 -0
- package/dist/path-transform.js.map +1 -0
- package/dist/path-transform.spec.d.ts +2 -0
- package/dist/path-transform.spec.d.ts.map +1 -0
- package/dist/path-transform.spec.js +269 -0
- package/dist/path-transform.spec.js.map +1 -0
- package/dist/url-utils.d.ts +14 -0
- package/dist/url-utils.d.ts.map +1 -0
- package/dist/url-utils.js +40 -0
- package/dist/url-utils.js.map +1 -0
- package/dist/url-utils.spec.d.ts +2 -0
- package/dist/url-utils.spec.d.ts.map +1 -0
- package/dist/url-utils.spec.js +93 -0
- package/dist/url-utils.spec.js.map +1 -0
- package/dist/validation.d.ts +210 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +119 -0
- package/dist/validation.js.map +1 -0
- package/package.json +9 -10
- package/dist/index.spec.d.ts +0 -2
- package/dist/index.spec.d.ts.map +0 -1
- package/dist/index.spec.js +0 -526
- package/dist/index.spec.js.map +0 -1
- package/dist/openapi-utils.d.ts.map +0 -1
- package/dist/openapi-utils.js.map +0 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { guessFileNameFromUrl, isUrl } from "./url-utils.js";
|
|
4
|
+
describe("OpenAPI Utils", () => {
|
|
5
|
+
describe("isUrl", () => {
|
|
6
|
+
it("should return true for valid HTTP URLs", () => {
|
|
7
|
+
assert.strictEqual(isUrl("http://example.com"), true);
|
|
8
|
+
assert.strictEqual(isUrl("http://example.com/api.json"), true);
|
|
9
|
+
assert.strictEqual(isUrl("http://api.example.com/v1/openapi.yaml"), true);
|
|
10
|
+
});
|
|
11
|
+
it("should return true for valid HTTPS URLs", () => {
|
|
12
|
+
assert.strictEqual(isUrl("https://example.com"), true);
|
|
13
|
+
assert.strictEqual(isUrl("https://example.com/api.json"), true);
|
|
14
|
+
assert.strictEqual(isUrl("https://api.example.com/v1/openapi.yaml"), true);
|
|
15
|
+
});
|
|
16
|
+
it("should return true for URLs with query parameters", () => {
|
|
17
|
+
assert.strictEqual(isUrl("https://example.com/api?version=1.0"), true);
|
|
18
|
+
assert.strictEqual(isUrl("https://example.com/api?format=json&version=2"), true);
|
|
19
|
+
});
|
|
20
|
+
it("should return true for URLs with fragments", () => {
|
|
21
|
+
assert.strictEqual(isUrl("https://example.com/api#section"), true);
|
|
22
|
+
assert.strictEqual(isUrl("https://example.com/api.json#definitions"), true);
|
|
23
|
+
});
|
|
24
|
+
it("should return true for URLs with ports", () => {
|
|
25
|
+
assert.strictEqual(isUrl("https://example.com:8080/api"), true);
|
|
26
|
+
assert.strictEqual(isUrl("http://localhost:3000/openapi.json"), true);
|
|
27
|
+
});
|
|
28
|
+
it("should return false for relative file paths", () => {
|
|
29
|
+
assert.strictEqual(isUrl("./api.json"), false);
|
|
30
|
+
assert.strictEqual(isUrl("../specs/openapi.yaml"), false);
|
|
31
|
+
assert.strictEqual(isUrl("docs/api.json"), false);
|
|
32
|
+
});
|
|
33
|
+
it("should return false for absolute file paths", () => {
|
|
34
|
+
assert.strictEqual(isUrl("/path/to/api.json"), false);
|
|
35
|
+
assert.strictEqual(isUrl("/Users/name/docs/openapi.yaml"), false);
|
|
36
|
+
// Windows absolute paths with drive letters may be interpreted as URLs with protocol
|
|
37
|
+
// This is expected behavior from the URL constructor
|
|
38
|
+
});
|
|
39
|
+
it("should return false for filenames without paths", () => {
|
|
40
|
+
assert.strictEqual(isUrl("api.json"), false);
|
|
41
|
+
assert.strictEqual(isUrl("openapi.yaml"), false);
|
|
42
|
+
});
|
|
43
|
+
it("should return false for empty strings", () => {
|
|
44
|
+
assert.strictEqual(isUrl(""), false);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe("guessFileNameFromUrl", () => {
|
|
48
|
+
it("should extract filename from URL path", () => {
|
|
49
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/api.json"), "api");
|
|
50
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/openapi.yaml"), "openapi");
|
|
51
|
+
});
|
|
52
|
+
it("should extract filename from URL with multiple path segments", () => {
|
|
53
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/v1/specs/api.json"), "api");
|
|
54
|
+
assert.strictEqual(guessFileNameFromUrl("https://api.example.com/docs/v2/openapi.yaml"), "openapi");
|
|
55
|
+
});
|
|
56
|
+
it("should extract filename from URL with query parameters", () => {
|
|
57
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/api.json?version=1"), "api");
|
|
58
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/openapi.yaml?format=json&v=2"), "openapi");
|
|
59
|
+
});
|
|
60
|
+
it("should extract filename from URL with fragments", () => {
|
|
61
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/api.json#section"), "api");
|
|
62
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/spec.yaml#definitions"), "spec");
|
|
63
|
+
});
|
|
64
|
+
it("should handle URLs with no file extension", () => {
|
|
65
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/api"), "api");
|
|
66
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/v1/openapi"), "openapi");
|
|
67
|
+
});
|
|
68
|
+
it("should handle URLs ending with slash", () => {
|
|
69
|
+
// When URL ends with slash, pop() returns empty string, should use base64
|
|
70
|
+
const result = guessFileNameFromUrl("https://example.com/api/");
|
|
71
|
+
assert.strictEqual(result.startsWith("imported-"), true);
|
|
72
|
+
});
|
|
73
|
+
it("should generate base64 name for root URLs", () => {
|
|
74
|
+
const result = guessFileNameFromUrl("https://example.com/");
|
|
75
|
+
assert.strictEqual(result.startsWith("imported-"), true);
|
|
76
|
+
assert.strictEqual(result.length > 9, true); // "imported-" is 9 chars
|
|
77
|
+
});
|
|
78
|
+
it("should handle filenames with multiple dots", () => {
|
|
79
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/api.v1.0.json"), "api.v1.0");
|
|
80
|
+
assert.strictEqual(guessFileNameFromUrl("https://example.com/my.api.spec.yaml"), "my.api.spec");
|
|
81
|
+
});
|
|
82
|
+
it("should handle complex URLs", () => {
|
|
83
|
+
assert.strictEqual(guessFileNameFromUrl("https://api.example.com:8080/v2/specs/openapi.json?auth=token#info"), "openapi");
|
|
84
|
+
});
|
|
85
|
+
it("should generate consistent base64 names for same URL", () => {
|
|
86
|
+
const url = "https://example.com/";
|
|
87
|
+
const name1 = guessFileNameFromUrl(url);
|
|
88
|
+
const name2 = guessFileNameFromUrl(url);
|
|
89
|
+
assert.strictEqual(name1, name2);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=url-utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-utils.spec.js","sourceRoot":"","sources":["../src/url-utils.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation schemas for OpenAPI documents and overlays
|
|
3
|
+
* Using Zod for runtime validation with actionable error messages
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
/**
|
|
7
|
+
* Schema for remove condition - used for conditional removal of elements
|
|
8
|
+
*/
|
|
9
|
+
declare const RemoveConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
10
|
+
empty: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
missing: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, "strict", z.ZodTypeAny, {
|
|
13
|
+
empty?: boolean | undefined;
|
|
14
|
+
missing?: string | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
empty?: boolean | undefined;
|
|
17
|
+
missing?: string | undefined;
|
|
18
|
+
}>, {
|
|
19
|
+
empty?: boolean | undefined;
|
|
20
|
+
missing?: string | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
empty?: boolean | undefined;
|
|
23
|
+
missing?: string | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Schema for overlay action - defines a single modification to apply
|
|
27
|
+
*/
|
|
28
|
+
declare const OverlayActionSchema: z.ZodEffects<z.ZodObject<{
|
|
29
|
+
target: z.ZodString;
|
|
30
|
+
description: z.ZodOptional<z.ZodString>;
|
|
31
|
+
update: z.ZodOptional<z.ZodUnknown>;
|
|
32
|
+
remove: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodObject<{
|
|
33
|
+
empty: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
missing: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, "strict", z.ZodTypeAny, {
|
|
36
|
+
empty?: boolean | undefined;
|
|
37
|
+
missing?: string | undefined;
|
|
38
|
+
}, {
|
|
39
|
+
empty?: boolean | undefined;
|
|
40
|
+
missing?: string | undefined;
|
|
41
|
+
}>, {
|
|
42
|
+
empty?: boolean | undefined;
|
|
43
|
+
missing?: string | undefined;
|
|
44
|
+
}, {
|
|
45
|
+
empty?: boolean | undefined;
|
|
46
|
+
missing?: string | undefined;
|
|
47
|
+
}>]>>;
|
|
48
|
+
}, "strict", z.ZodTypeAny, {
|
|
49
|
+
target: string;
|
|
50
|
+
description?: string | undefined;
|
|
51
|
+
update?: unknown;
|
|
52
|
+
remove?: boolean | {
|
|
53
|
+
empty?: boolean | undefined;
|
|
54
|
+
missing?: string | undefined;
|
|
55
|
+
} | undefined;
|
|
56
|
+
}, {
|
|
57
|
+
target: string;
|
|
58
|
+
description?: string | undefined;
|
|
59
|
+
update?: unknown;
|
|
60
|
+
remove?: boolean | {
|
|
61
|
+
empty?: boolean | undefined;
|
|
62
|
+
missing?: string | undefined;
|
|
63
|
+
} | undefined;
|
|
64
|
+
}>, {
|
|
65
|
+
target: string;
|
|
66
|
+
description?: string | undefined;
|
|
67
|
+
update?: unknown;
|
|
68
|
+
remove?: boolean | {
|
|
69
|
+
empty?: boolean | undefined;
|
|
70
|
+
missing?: string | undefined;
|
|
71
|
+
} | undefined;
|
|
72
|
+
}, {
|
|
73
|
+
target: string;
|
|
74
|
+
description?: string | undefined;
|
|
75
|
+
update?: unknown;
|
|
76
|
+
remove?: boolean | {
|
|
77
|
+
empty?: boolean | undefined;
|
|
78
|
+
missing?: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Schema for OpenAPI Overlay document
|
|
83
|
+
* Based on: https://github.com/OAI/Overlay-Specification v1.0.0
|
|
84
|
+
*/
|
|
85
|
+
export declare const OverlayDocumentSchema: z.ZodObject<{
|
|
86
|
+
overlay: z.ZodEffects<z.ZodString, string, string>;
|
|
87
|
+
info: z.ZodObject<{
|
|
88
|
+
title: z.ZodString;
|
|
89
|
+
version: z.ZodString;
|
|
90
|
+
}, "strict", z.ZodTypeAny, {
|
|
91
|
+
title: string;
|
|
92
|
+
version: string;
|
|
93
|
+
}, {
|
|
94
|
+
title: string;
|
|
95
|
+
version: string;
|
|
96
|
+
}>;
|
|
97
|
+
actions: z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
98
|
+
target: z.ZodString;
|
|
99
|
+
description: z.ZodOptional<z.ZodString>;
|
|
100
|
+
update: z.ZodOptional<z.ZodUnknown>;
|
|
101
|
+
remove: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodObject<{
|
|
102
|
+
empty: z.ZodOptional<z.ZodBoolean>;
|
|
103
|
+
missing: z.ZodOptional<z.ZodString>;
|
|
104
|
+
}, "strict", z.ZodTypeAny, {
|
|
105
|
+
empty?: boolean | undefined;
|
|
106
|
+
missing?: string | undefined;
|
|
107
|
+
}, {
|
|
108
|
+
empty?: boolean | undefined;
|
|
109
|
+
missing?: string | undefined;
|
|
110
|
+
}>, {
|
|
111
|
+
empty?: boolean | undefined;
|
|
112
|
+
missing?: string | undefined;
|
|
113
|
+
}, {
|
|
114
|
+
empty?: boolean | undefined;
|
|
115
|
+
missing?: string | undefined;
|
|
116
|
+
}>]>>;
|
|
117
|
+
}, "strict", z.ZodTypeAny, {
|
|
118
|
+
target: string;
|
|
119
|
+
description?: string | undefined;
|
|
120
|
+
update?: unknown;
|
|
121
|
+
remove?: boolean | {
|
|
122
|
+
empty?: boolean | undefined;
|
|
123
|
+
missing?: string | undefined;
|
|
124
|
+
} | undefined;
|
|
125
|
+
}, {
|
|
126
|
+
target: string;
|
|
127
|
+
description?: string | undefined;
|
|
128
|
+
update?: unknown;
|
|
129
|
+
remove?: boolean | {
|
|
130
|
+
empty?: boolean | undefined;
|
|
131
|
+
missing?: string | undefined;
|
|
132
|
+
} | undefined;
|
|
133
|
+
}>, {
|
|
134
|
+
target: string;
|
|
135
|
+
description?: string | undefined;
|
|
136
|
+
update?: unknown;
|
|
137
|
+
remove?: boolean | {
|
|
138
|
+
empty?: boolean | undefined;
|
|
139
|
+
missing?: string | undefined;
|
|
140
|
+
} | undefined;
|
|
141
|
+
}, {
|
|
142
|
+
target: string;
|
|
143
|
+
description?: string | undefined;
|
|
144
|
+
update?: unknown;
|
|
145
|
+
remove?: boolean | {
|
|
146
|
+
empty?: boolean | undefined;
|
|
147
|
+
missing?: string | undefined;
|
|
148
|
+
} | undefined;
|
|
149
|
+
}>, "many">;
|
|
150
|
+
extends: z.ZodOptional<z.ZodString>;
|
|
151
|
+
}, "strict", z.ZodTypeAny, {
|
|
152
|
+
info: {
|
|
153
|
+
title: string;
|
|
154
|
+
version: string;
|
|
155
|
+
};
|
|
156
|
+
overlay: string;
|
|
157
|
+
actions: {
|
|
158
|
+
target: string;
|
|
159
|
+
description?: string | undefined;
|
|
160
|
+
update?: unknown;
|
|
161
|
+
remove?: boolean | {
|
|
162
|
+
empty?: boolean | undefined;
|
|
163
|
+
missing?: string | undefined;
|
|
164
|
+
} | undefined;
|
|
165
|
+
}[];
|
|
166
|
+
extends?: string | undefined;
|
|
167
|
+
}, {
|
|
168
|
+
info: {
|
|
169
|
+
title: string;
|
|
170
|
+
version: string;
|
|
171
|
+
};
|
|
172
|
+
overlay: string;
|
|
173
|
+
actions: {
|
|
174
|
+
target: string;
|
|
175
|
+
description?: string | undefined;
|
|
176
|
+
update?: unknown;
|
|
177
|
+
remove?: boolean | {
|
|
178
|
+
empty?: boolean | undefined;
|
|
179
|
+
missing?: string | undefined;
|
|
180
|
+
} | undefined;
|
|
181
|
+
}[];
|
|
182
|
+
extends?: string | undefined;
|
|
183
|
+
}>;
|
|
184
|
+
/**
|
|
185
|
+
* Schema for OpenAPI document structure
|
|
186
|
+
* This is intentionally lenient to work with imperfect/incomplete OpenAPI files.
|
|
187
|
+
* The overlay tool is often used to fix incomplete specs, so we shouldn't be too strict.
|
|
188
|
+
*/
|
|
189
|
+
export declare const OpenApiDocumentSchema: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
190
|
+
/**
|
|
191
|
+
* Type exports matching Zod schemas
|
|
192
|
+
*/
|
|
193
|
+
export type OverlayDocument = z.infer<typeof OverlayDocumentSchema>;
|
|
194
|
+
export type OverlayAction = z.infer<typeof OverlayActionSchema>;
|
|
195
|
+
export type RemoveCondition = z.infer<typeof RemoveConditionSchema>;
|
|
196
|
+
export type OpenApiDocument = z.infer<typeof OpenApiDocumentSchema>;
|
|
197
|
+
/**
|
|
198
|
+
* Validate an OpenAPI Overlay document
|
|
199
|
+
* @throws {Error} with actionable error message if validation fails
|
|
200
|
+
*/
|
|
201
|
+
export declare function validateOverlayDocument(value: unknown): OverlayDocument;
|
|
202
|
+
/**
|
|
203
|
+
* Validate an OpenAPI document
|
|
204
|
+
* This validation is intentionally lenient - we only check that it's a valid object.
|
|
205
|
+
* The overlay tool should work with imperfect OpenAPI files.
|
|
206
|
+
* @throws {Error} if the document is not a valid object
|
|
207
|
+
*/
|
|
208
|
+
export declare function validateOpenApiDocument(value: unknown): OpenApiDocument;
|
|
209
|
+
export {};
|
|
210
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAYvB,CAAC;AAEL;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCtB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBvB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,uJAKkB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAcvE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CASvE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation schemas for OpenAPI documents and overlays
|
|
3
|
+
* Using Zod for runtime validation with actionable error messages
|
|
4
|
+
*/
|
|
5
|
+
import semver from "semver";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
/**
|
|
8
|
+
* Schema for remove condition - used for conditional removal of elements
|
|
9
|
+
*/
|
|
10
|
+
const RemoveConditionSchema = z
|
|
11
|
+
.object({
|
|
12
|
+
empty: z.boolean().optional().describe("Remove if object/array is empty"),
|
|
13
|
+
missing: z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Remove if specified property path is missing"),
|
|
17
|
+
})
|
|
18
|
+
.strict()
|
|
19
|
+
.refine((data) => data.empty !== undefined || data.missing !== undefined, {
|
|
20
|
+
message: "Remove condition must specify either 'empty' or 'missing' property",
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Schema for overlay action - defines a single modification to apply
|
|
24
|
+
*/
|
|
25
|
+
const OverlayActionSchema = z
|
|
26
|
+
.object({
|
|
27
|
+
target: z
|
|
28
|
+
.string()
|
|
29
|
+
.min(1, "Action target cannot be empty")
|
|
30
|
+
.startsWith("$", "Action target must be a valid JSONPath starting with '$'")
|
|
31
|
+
.describe("JSONPath expression pointing to the target element(s) in the OpenAPI document"),
|
|
32
|
+
description: z
|
|
33
|
+
.string()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Human-readable description of what this action does"),
|
|
36
|
+
update: z
|
|
37
|
+
.unknown()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Value to merge/add at the target location"),
|
|
40
|
+
remove: z
|
|
41
|
+
.union([z.boolean(), RemoveConditionSchema])
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("If true or condition met, remove the target element(s)"),
|
|
44
|
+
})
|
|
45
|
+
.strict()
|
|
46
|
+
.refine((data) => (data.update !== undefined) !== (data.remove !== undefined), {
|
|
47
|
+
message: "Action must specify exactly one of 'update' or 'remove' (not both, not neither)",
|
|
48
|
+
path: ["update", "remove"],
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Schema for OpenAPI Overlay document
|
|
52
|
+
* Based on: https://github.com/OAI/Overlay-Specification v1.0.0
|
|
53
|
+
*/
|
|
54
|
+
export const OverlayDocumentSchema = z
|
|
55
|
+
.object({
|
|
56
|
+
overlay: z
|
|
57
|
+
.string()
|
|
58
|
+
.refine((value) => semver.valid(value) !== null, "Overlay version must be a valid semver version (e.g., '1.0.0', '1.0.0-alpha.1', '1.0.0+build.123')")
|
|
59
|
+
.describe("Version of the OpenAPI Overlay specification being used"),
|
|
60
|
+
info: z
|
|
61
|
+
.object({
|
|
62
|
+
title: z.string().min(1, "Overlay title cannot be empty"),
|
|
63
|
+
version: z.string().min(1, "Overlay version cannot be empty"),
|
|
64
|
+
})
|
|
65
|
+
.strict()
|
|
66
|
+
.describe("Metadata about this overlay"),
|
|
67
|
+
actions: z
|
|
68
|
+
.array(OverlayActionSchema)
|
|
69
|
+
.min(1, "Overlay must contain at least one action")
|
|
70
|
+
.describe("Array of modifications to apply to the OpenAPI document"),
|
|
71
|
+
extends: z
|
|
72
|
+
.string()
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("URL or path to another overlay to extend"),
|
|
75
|
+
})
|
|
76
|
+
.strict();
|
|
77
|
+
/**
|
|
78
|
+
* Schema for OpenAPI document structure
|
|
79
|
+
* This is intentionally lenient to work with imperfect/incomplete OpenAPI files.
|
|
80
|
+
* The overlay tool is often used to fix incomplete specs, so we shouldn't be too strict.
|
|
81
|
+
*/
|
|
82
|
+
export const OpenApiDocumentSchema = z
|
|
83
|
+
.object({
|
|
84
|
+
// Accept any object - we just need it to be valid JSON/YAML that we can manipulate
|
|
85
|
+
})
|
|
86
|
+
.passthrough()
|
|
87
|
+
.describe("OpenAPI document (lenient validation)");
|
|
88
|
+
/**
|
|
89
|
+
* Validate an OpenAPI Overlay document
|
|
90
|
+
* @throws {Error} with actionable error message if validation fails
|
|
91
|
+
*/
|
|
92
|
+
export function validateOverlayDocument(value) {
|
|
93
|
+
const result = OverlayDocumentSchema.safeParse(value);
|
|
94
|
+
if (!result.success) {
|
|
95
|
+
const errors = result.error.errors
|
|
96
|
+
.map((err) => {
|
|
97
|
+
const path = err.path.length > 0 ? ` at '${err.path.join(".")}'` : "";
|
|
98
|
+
return ` • ${err.message}${path}`;
|
|
99
|
+
})
|
|
100
|
+
.join("\n");
|
|
101
|
+
throw new Error(`Invalid OpenAPI Overlay document:\n${errors}\n\nThe overlay must conform to the OpenAPI Overlay Specification v1.0.0`);
|
|
102
|
+
}
|
|
103
|
+
return result.data;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validate an OpenAPI document
|
|
107
|
+
* This validation is intentionally lenient - we only check that it's a valid object.
|
|
108
|
+
* The overlay tool should work with imperfect OpenAPI files.
|
|
109
|
+
* @throws {Error} if the document is not a valid object
|
|
110
|
+
*/
|
|
111
|
+
export function validateOpenApiDocument(value) {
|
|
112
|
+
const result = OpenApiDocumentSchema.safeParse(value);
|
|
113
|
+
if (!result.success) {
|
|
114
|
+
throw new Error(`OpenAPI document must be a valid JSON or YAML object. ` +
|
|
115
|
+
`The file appears to be empty or contains invalid data.`);
|
|
116
|
+
}
|
|
117
|
+
return result.data;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@zuplo/openapi-tools",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "6.
|
|
5
|
+
"version": "6.66.2",
|
|
6
6
|
"description": "Tooling for OpenAPI files",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -23,22 +23,21 @@
|
|
|
23
23
|
"license": "Copyright 2021",
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsc --build",
|
|
26
|
-
"test": "
|
|
27
|
-
"test:debug": "
|
|
26
|
+
"test": "node --test dist/**/*.spec.js",
|
|
27
|
+
"test:debug": "node --test --test-timeout 0 dist/**/*.spec.js"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@zuplo/runtime": "6.65.9",
|
|
31
|
-
"ajv": "^8.17.1",
|
|
32
30
|
"js-yaml": "^4.1.0",
|
|
31
|
+
"jsonpath-plus": "^10.3.0",
|
|
33
32
|
"openapi-types": "^12.1.3",
|
|
34
|
-
"
|
|
33
|
+
"semver": "^7.6.3",
|
|
34
|
+
"uuid": "^11.1.0",
|
|
35
|
+
"zod": "^3.24.1"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
|
-
"@types/
|
|
38
|
-
"@types/mocha": "^10.0.7",
|
|
38
|
+
"@types/js-yaml": "^4.0.9",
|
|
39
39
|
"@types/node": "^20.14.8",
|
|
40
|
-
"
|
|
41
|
-
"mocha": "^10.7.3",
|
|
40
|
+
"@types/semver": "^7.5.8",
|
|
42
41
|
"typescript": "^5.6.2"
|
|
43
42
|
}
|
|
44
43
|
}
|
package/dist/index.spec.d.ts
DELETED
package/dist/index.spec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":""}
|