@openaddresses/batch-schema 10.25.0 → 10.27.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/.github/workflows/test.yml +19 -19
- package/CHANGELOG.md +15 -0
- package/README.md +78 -0
- package/dist/lib/openapi.js +16 -6
- package/dist/lib/openapi.js.map +1 -1
- package/dist/lib/schema.d.ts +45 -2
- package/dist/lib/schema.js +177 -192
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/types.d.ts +48 -1
- package/dist/lib/types.js +48 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/test/response.srv.test.d.ts +1 -0
- package/dist/test/response.srv.test.js +95 -0
- package/dist/test/response.srv.test.js.map +1 -0
- package/dist/test/schema.srv.test.js +216 -0
- package/dist/test/schema.srv.test.js.map +1 -1
- package/lib/openapi.ts +14 -6
- package/lib/schema.ts +224 -201
- package/lib/types.ts +86 -1
- package/package.json +1 -1
- package/test/response.srv.test.ts +114 -0
- package/test/schema.srv.test.ts +244 -0
package/dist/lib/schema.js
CHANGED
|
@@ -3,11 +3,12 @@ import path from 'node:path';
|
|
|
3
3
|
import morgan from 'morgan';
|
|
4
4
|
import bodyparser from 'body-parser';
|
|
5
5
|
import Err from '@openaddresses/batch-error';
|
|
6
|
-
import {
|
|
6
|
+
import { Kind } from '@sinclair/typebox';
|
|
7
7
|
import { OpenAPIV3 as Doc } from 'openapi-types';
|
|
8
8
|
import { Router } from 'express';
|
|
9
9
|
import { Ajv } from 'ajv';
|
|
10
10
|
import addFormatsModule from 'ajv-formats';
|
|
11
|
+
import { normalizeBody, matchContentType } from './types.js';
|
|
11
12
|
import SchemaAPI from './api.js';
|
|
12
13
|
import Docs from './openapi.js';
|
|
13
14
|
const ajv = new Ajv({
|
|
@@ -18,6 +19,61 @@ const ajv = new Ajv({
|
|
|
18
19
|
coerceTypes: true
|
|
19
20
|
});
|
|
20
21
|
addFormatsModule.default(ajv);
|
|
22
|
+
const MAX_LOGGED_RESPONSE = 4096;
|
|
23
|
+
/**
|
|
24
|
+
* Deep-clone a value following JSON.stringify semantics: toJSON() support
|
|
25
|
+
* (Date => ISO string), undefined/function/symbol omission, NaN/Infinity
|
|
26
|
+
* => null, and circular reference detection. Response validation needs the
|
|
27
|
+
* serialized shape of the payload (Dates must already be strings), and ajv's
|
|
28
|
+
* removeAdditional/useDefaults mutate the object they validate, so the
|
|
29
|
+
* caller's object must be protected. A single-pass clone does both without
|
|
30
|
+
* the cost of JSON.parse(JSON.stringify()) building an intermediate string.
|
|
31
|
+
*/
|
|
32
|
+
function jsonClone(value, seen) {
|
|
33
|
+
if (value !== null && typeof value === 'object' && typeof value.toJSON === 'function') {
|
|
34
|
+
value = value.toJSON();
|
|
35
|
+
}
|
|
36
|
+
if (value === null)
|
|
37
|
+
return null;
|
|
38
|
+
switch (typeof value) {
|
|
39
|
+
case 'string':
|
|
40
|
+
case 'boolean':
|
|
41
|
+
return value;
|
|
42
|
+
case 'number':
|
|
43
|
+
return Number.isFinite(value) ? value : null;
|
|
44
|
+
case 'bigint':
|
|
45
|
+
throw new TypeError('Do not know how to serialize a BigInt');
|
|
46
|
+
case 'object':
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
return undefined; // undefined | function | symbol are omitted, as in JSON.stringify
|
|
50
|
+
}
|
|
51
|
+
if (!seen)
|
|
52
|
+
seen = new Set();
|
|
53
|
+
if (seen.has(value))
|
|
54
|
+
throw new TypeError('Converting circular structure to JSON');
|
|
55
|
+
seen.add(value);
|
|
56
|
+
let out;
|
|
57
|
+
if (Array.isArray(value)) {
|
|
58
|
+
const arr = new Array(value.length);
|
|
59
|
+
for (let i = 0; i < value.length; i++) {
|
|
60
|
+
const v = jsonClone(value[i], seen);
|
|
61
|
+
arr[i] = v === undefined ? null : v;
|
|
62
|
+
}
|
|
63
|
+
out = arr;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const obj = {};
|
|
67
|
+
for (const key of Object.keys(value)) {
|
|
68
|
+
const v = jsonClone(value[key], seen);
|
|
69
|
+
if (v !== undefined)
|
|
70
|
+
obj[key] = v;
|
|
71
|
+
}
|
|
72
|
+
out = obj;
|
|
73
|
+
}
|
|
74
|
+
seen.delete(value);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
21
77
|
/**
|
|
22
78
|
* @class
|
|
23
79
|
*
|
|
@@ -40,6 +96,58 @@ export default class Schemas {
|
|
|
40
96
|
validationError(method, path) {
|
|
41
97
|
return new Err(400, null, `Validation Error ${String(method).toUpperCase()} ${path}`);
|
|
42
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Compile body validators keyed by content-type. Returns null when no
|
|
101
|
+
* body validation is configured. Each validator entry is either `true`
|
|
102
|
+
* (any body accepted for this content-type) or a compiled ajv validator.
|
|
103
|
+
* The content-type matcher and supported-types error string are
|
|
104
|
+
* precomputed here so no per-request allocation is needed.
|
|
105
|
+
*/
|
|
106
|
+
compileBodyValidators(body) {
|
|
107
|
+
const normalized = normalizeBody(body);
|
|
108
|
+
if (!normalized)
|
|
109
|
+
return null;
|
|
110
|
+
const validators = new Map();
|
|
111
|
+
for (const ct of Object.keys(normalized)) {
|
|
112
|
+
const schema = normalized[ct].schema;
|
|
113
|
+
if (schema === true || schema === undefined) {
|
|
114
|
+
validators.set(ct, true);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
validators.set(ct, ajv.compile(schema));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
validators,
|
|
122
|
+
matcher: normalized,
|
|
123
|
+
supported: Object.keys(normalized).join(', ')
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate the incoming request body against the compiled validation
|
|
128
|
+
* state for the route. Pushes a Body error onto `errors` if validation
|
|
129
|
+
* fails; returns an Err to respond with for an unsupported content-type.
|
|
130
|
+
*
|
|
131
|
+
* If `opts.required` is false and the request has no body / no
|
|
132
|
+
* content-type, validation is skipped.
|
|
133
|
+
*/
|
|
134
|
+
validateBody(req, compiled, errors, opts = {}) {
|
|
135
|
+
const raw = (req.headers['content-type'] || '').split(';')[0].trim().toLowerCase();
|
|
136
|
+
const required = opts.required !== false;
|
|
137
|
+
if (!raw && !required)
|
|
138
|
+
return null;
|
|
139
|
+
const matched = matchContentType(raw, compiled.matcher);
|
|
140
|
+
const validator = matched ? compiled.validators.get(matched) : undefined;
|
|
141
|
+
if (!validator) {
|
|
142
|
+
return new Err(400, null, `Content-Type ${raw || '(none)'} not supported. Supported: ${compiled.supported}`);
|
|
143
|
+
}
|
|
144
|
+
if (validator !== true) {
|
|
145
|
+
if (!validator(req.body)) {
|
|
146
|
+
errors.push({ type: 'Body', errors: validator.errors });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
43
151
|
constructor(router, opts = {}) {
|
|
44
152
|
if (!router)
|
|
45
153
|
throw new Error('Router Param Required');
|
|
@@ -49,8 +157,16 @@ export default class Schemas {
|
|
|
49
157
|
const morganOptions = opts.logging && typeof opts.logging === 'object' ? opts.logging : {};
|
|
50
158
|
this.router.use(morgan('combined', morganOptions));
|
|
51
159
|
}
|
|
52
|
-
this.router.use(bodyparser.urlencoded({ extended: true }));
|
|
160
|
+
this.router.use(bodyparser.urlencoded({ extended: true, limit: `${opts.limit || 50}mb` }));
|
|
53
161
|
this.router.use(bodyparser.json({ limit: `${opts.limit || 50}mb` }));
|
|
162
|
+
this.router.use(bodyparser.text({
|
|
163
|
+
limit: `${opts.limit || 50}mb`,
|
|
164
|
+
type: ['text/*', 'application/xml', 'application/*+xml']
|
|
165
|
+
}));
|
|
166
|
+
this.router.use(bodyparser.raw({
|
|
167
|
+
limit: `${opts.limit || 50}mb`,
|
|
168
|
+
type: ['application/octet-stream']
|
|
169
|
+
}));
|
|
54
170
|
if (opts.error) {
|
|
55
171
|
this.error = opts.error;
|
|
56
172
|
}
|
|
@@ -113,16 +229,40 @@ export default class Schemas {
|
|
|
113
229
|
console.log(`ok - loaded blueprint`);
|
|
114
230
|
await bp_fn(this, config);
|
|
115
231
|
}
|
|
116
|
-
|
|
232
|
+
/**
|
|
233
|
+
* Compile the response validator for a route. Type.Any and Type.Unknown
|
|
234
|
+
* impose no constraints, so they are skipped entirely — routes with an
|
|
235
|
+
* open response schema (or none) bypass response validation and its
|
|
236
|
+
* clone at request time.
|
|
237
|
+
*/
|
|
238
|
+
compileResponseValidation(res) {
|
|
239
|
+
if (!res)
|
|
240
|
+
return null;
|
|
241
|
+
if (res[Kind] === 'Any' || res[Kind] === 'Unknown')
|
|
242
|
+
return null;
|
|
243
|
+
return ajv.compile(res);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Shared route registration: compiles all validators once, then installs
|
|
247
|
+
* a request handler that validates params/query/body and — only when a
|
|
248
|
+
* response schema requires it — wraps res.json with response validation.
|
|
249
|
+
*/
|
|
250
|
+
route(method, path, opts, handler, allowBody) {
|
|
251
|
+
const methodUpper = String(method).toUpperCase();
|
|
117
252
|
try {
|
|
118
253
|
const validation = this.normalizeValidation(opts);
|
|
119
|
-
this.docs.push({ method
|
|
120
|
-
this.schemas.set(
|
|
121
|
-
const resValidation =
|
|
254
|
+
this.docs.push({ method, path }, validation);
|
|
255
|
+
this.schemas.set(`${methodUpper} ${path}`, validation);
|
|
256
|
+
const resValidation = this.compileResponseValidation(validation.res);
|
|
122
257
|
const paramsValidation = validation.params && ajv.compile(validation.params);
|
|
123
258
|
const queryValidation = validation.query && ajv.compile(validation.query);
|
|
124
|
-
|
|
259
|
+
let bodyValidation = null;
|
|
260
|
+
if (allowBody) {
|
|
261
|
+
bodyValidation = this.compileBodyValidators(validation.body);
|
|
262
|
+
}
|
|
263
|
+
else if (validation.body) {
|
|
125
264
|
throw new Error(`Body not allowed`);
|
|
265
|
+
}
|
|
126
266
|
const _handler = (req, res, next) => {
|
|
127
267
|
if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
|
|
128
268
|
Object.defineProperty(req, 'query', {
|
|
@@ -135,206 +275,51 @@ export default class Schemas {
|
|
|
135
275
|
errors.push({ type: 'Params', errors: paramsValidation.errors });
|
|
136
276
|
if (queryValidation && !queryValidation(req.query))
|
|
137
277
|
errors.push({ type: 'Query', errors: queryValidation.errors });
|
|
278
|
+
if (bodyValidation) {
|
|
279
|
+
const ctErr = this.validateBody(req, bodyValidation, errors, { required: validation.bodyRequired });
|
|
280
|
+
if (ctErr)
|
|
281
|
+
return Err.respond(ctErr, res);
|
|
282
|
+
}
|
|
138
283
|
if (errors.length)
|
|
139
|
-
return Err.respond(this.validationError(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
284
|
+
return Err.respond(this.validationError(method, path), res, errors);
|
|
285
|
+
if (resValidation) {
|
|
286
|
+
const json = res.json;
|
|
287
|
+
res.json = function (obj) {
|
|
288
|
+
if (res.statusCode === null || res.statusCode === 200) {
|
|
289
|
+
obj = jsonClone(obj); // Date => String needs to happen before validation
|
|
290
|
+
if (!resValidation(obj)) {
|
|
291
|
+
res.status(400);
|
|
292
|
+
const logged = JSON.stringify(obj);
|
|
293
|
+
console.error(`Response Validation Error: ${methodUpper} ${path}: ${logged && logged.length > MAX_LOGGED_RESPONSE ? logged.slice(0, MAX_LOGGED_RESPONSE) + '... (truncated)' : logged}`);
|
|
294
|
+
return json.call(this, { type: 'Response', errors: resValidation.errors });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
149
297
|
return json.call(this, obj);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
298
|
+
};
|
|
299
|
+
}
|
|
152
300
|
return handler(req, res, next);
|
|
153
301
|
};
|
|
154
|
-
this.router
|
|
302
|
+
this.router[method](path, _handler);
|
|
155
303
|
}
|
|
156
304
|
catch (err) {
|
|
157
|
-
|
|
305
|
+
const label = methodUpper.charAt(0) + methodUpper.slice(1).toLowerCase();
|
|
306
|
+
throw new Error(`${label}: ${path}: ` + String(err), { cause: err });
|
|
158
307
|
}
|
|
159
308
|
}
|
|
309
|
+
async get(path, opts = {}, handler) {
|
|
310
|
+
this.route(Doc.HttpMethods.GET, path, opts, handler, false);
|
|
311
|
+
}
|
|
160
312
|
async delete(path, opts = {}, handler) {
|
|
161
|
-
|
|
162
|
-
const validation = this.normalizeValidation(opts);
|
|
163
|
-
this.docs.push({ method: Doc.HttpMethods.DELETE, path: path }, validation);
|
|
164
|
-
this.schemas.set(`DELETE ${path}`, validation);
|
|
165
|
-
const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
|
|
166
|
-
const paramsValidation = validation.params && ajv.compile(validation.params);
|
|
167
|
-
const queryValidation = validation.query && ajv.compile(validation.query);
|
|
168
|
-
if (validation.body)
|
|
169
|
-
throw new Error(`Body not allowed`);
|
|
170
|
-
const _handler = (req, res, next) => {
|
|
171
|
-
if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
|
|
172
|
-
Object.defineProperty(req, 'query', {
|
|
173
|
-
writable: true,
|
|
174
|
-
value: { ...req.query },
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
const errors = [];
|
|
178
|
-
if (paramsValidation && !paramsValidation(req.params))
|
|
179
|
-
errors.push({ type: 'Params', errors: paramsValidation.errors });
|
|
180
|
-
if (queryValidation && !queryValidation(req.query))
|
|
181
|
-
errors.push({ type: 'Query', errors: queryValidation.errors });
|
|
182
|
-
if (errors.length)
|
|
183
|
-
return Err.respond(this.validationError(Doc.HttpMethods.DELETE, path), res, errors);
|
|
184
|
-
const json = res.json;
|
|
185
|
-
res.json = function (obj) {
|
|
186
|
-
obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
|
|
187
|
-
if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
|
|
188
|
-
res.status(400);
|
|
189
|
-
console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
|
|
190
|
-
return json.call(this, { type: 'Response', errors: resValidation.errors });
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
return json.call(this, obj);
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
return handler(req, res, next);
|
|
197
|
-
};
|
|
198
|
-
this.router.delete(path, _handler);
|
|
199
|
-
}
|
|
200
|
-
catch (err) {
|
|
201
|
-
throw new Error(`Delete: ${path}: ` + String(err), { cause: err });
|
|
202
|
-
}
|
|
313
|
+
this.route(Doc.HttpMethods.DELETE, path, opts, handler, false);
|
|
203
314
|
}
|
|
204
315
|
async post(path, opts = {}, handler) {
|
|
205
|
-
|
|
206
|
-
const validation = this.normalizeValidation(opts);
|
|
207
|
-
this.docs.push({ method: Doc.HttpMethods.POST, path: path }, validation);
|
|
208
|
-
this.schemas.set(`POST ${path}`, validation);
|
|
209
|
-
const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
|
|
210
|
-
const paramsValidation = validation.params && ajv.compile(validation.params);
|
|
211
|
-
const queryValidation = validation.query && ajv.compile(validation.query);
|
|
212
|
-
const bodyValidation = validation.body && ajv.compile(validation.body);
|
|
213
|
-
const _handler = (req, res, next) => {
|
|
214
|
-
if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
|
|
215
|
-
Object.defineProperty(req, 'query', {
|
|
216
|
-
writable: true,
|
|
217
|
-
value: { ...req.query },
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
const errors = [];
|
|
221
|
-
if (paramsValidation && !paramsValidation(req.params))
|
|
222
|
-
errors.push({ type: 'Params', errors: paramsValidation.errors });
|
|
223
|
-
if (queryValidation && !queryValidation(req.query))
|
|
224
|
-
errors.push({ type: 'Query', errors: queryValidation.errors });
|
|
225
|
-
if (bodyValidation && !bodyValidation(req.body))
|
|
226
|
-
errors.push({ type: 'Body', errors: bodyValidation.errors });
|
|
227
|
-
if (errors.length)
|
|
228
|
-
return Err.respond(this.validationError(Doc.HttpMethods.POST, path), res, errors);
|
|
229
|
-
const json = res.json;
|
|
230
|
-
res.json = function (obj) {
|
|
231
|
-
obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
|
|
232
|
-
if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
|
|
233
|
-
res.status(400);
|
|
234
|
-
console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
|
|
235
|
-
return json.call(this, { type: 'Response', errors: resValidation.errors });
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
return json.call(this, obj);
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
return handler(req, res, next);
|
|
242
|
-
};
|
|
243
|
-
this.router.post(path, _handler);
|
|
244
|
-
}
|
|
245
|
-
catch (err) {
|
|
246
|
-
throw new Error(`Post: ${path}: ` + String(err), { cause: err });
|
|
247
|
-
}
|
|
316
|
+
this.route(Doc.HttpMethods.POST, path, opts, handler, true);
|
|
248
317
|
}
|
|
249
318
|
async patch(path, opts = {}, handler) {
|
|
250
|
-
|
|
251
|
-
const validation = this.normalizeValidation(opts);
|
|
252
|
-
this.docs.push({ method: Doc.HttpMethods.PATCH, path: path }, validation);
|
|
253
|
-
this.schemas.set(`PATCH ${path}`, validation);
|
|
254
|
-
const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
|
|
255
|
-
const paramsValidation = validation.params && ajv.compile(validation.params);
|
|
256
|
-
const queryValidation = validation.query && ajv.compile(validation.query);
|
|
257
|
-
const bodyValidation = validation.body && ajv.compile(validation.body);
|
|
258
|
-
const _handler = (req, res, next) => {
|
|
259
|
-
if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
|
|
260
|
-
Object.defineProperty(req, 'query', {
|
|
261
|
-
writable: true,
|
|
262
|
-
value: { ...req.query },
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
const errors = [];
|
|
266
|
-
if (paramsValidation && !paramsValidation(req.params))
|
|
267
|
-
errors.push({ type: 'Params', errors: paramsValidation.errors });
|
|
268
|
-
if (queryValidation && !queryValidation(req.query))
|
|
269
|
-
errors.push({ type: 'Query', errors: queryValidation.errors });
|
|
270
|
-
if (bodyValidation && !bodyValidation(req.body))
|
|
271
|
-
errors.push({ type: 'Body', errors: bodyValidation.errors });
|
|
272
|
-
if (errors.length)
|
|
273
|
-
return Err.respond(this.validationError(Doc.HttpMethods.PATCH, path), res, errors);
|
|
274
|
-
const json = res.json;
|
|
275
|
-
res.json = function (obj) {
|
|
276
|
-
obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
|
|
277
|
-
if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
|
|
278
|
-
res.status(400);
|
|
279
|
-
console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
|
|
280
|
-
return json.call(this, { type: 'Response', errors: resValidation.errors });
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
return json.call(this, obj);
|
|
284
|
-
}
|
|
285
|
-
};
|
|
286
|
-
return handler(req, res, next);
|
|
287
|
-
};
|
|
288
|
-
this.router.patch(path, _handler);
|
|
289
|
-
}
|
|
290
|
-
catch (err) {
|
|
291
|
-
throw new Error(`Patch: ${path}: ` + String(err), { cause: err });
|
|
292
|
-
}
|
|
319
|
+
this.route(Doc.HttpMethods.PATCH, path, opts, handler, true);
|
|
293
320
|
}
|
|
294
321
|
async put(path, opts = {}, handler) {
|
|
295
|
-
|
|
296
|
-
const validation = this.normalizeValidation(opts);
|
|
297
|
-
this.docs.push({ method: Doc.HttpMethods.PUT, path: path }, validation);
|
|
298
|
-
this.schemas.set(`PUT ${path}`, validation);
|
|
299
|
-
const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
|
|
300
|
-
const paramsValidation = validation.params && ajv.compile(validation.params);
|
|
301
|
-
const queryValidation = validation.query && ajv.compile(validation.query);
|
|
302
|
-
const bodyValidation = validation.body && ajv.compile(validation.body);
|
|
303
|
-
const _handler = (req, res, next) => {
|
|
304
|
-
if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
|
|
305
|
-
Object.defineProperty(req, 'query', {
|
|
306
|
-
writable: true,
|
|
307
|
-
value: { ...req.query },
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
const errors = [];
|
|
311
|
-
if (paramsValidation && !paramsValidation(req.params))
|
|
312
|
-
errors.push({ type: 'Params', errors: paramsValidation.errors });
|
|
313
|
-
if (queryValidation && !queryValidation(req.query))
|
|
314
|
-
errors.push({ type: 'Query', errors: queryValidation.errors });
|
|
315
|
-
if (bodyValidation && !bodyValidation(req.body))
|
|
316
|
-
errors.push({ type: 'Body', errors: bodyValidation.errors });
|
|
317
|
-
if (errors.length)
|
|
318
|
-
return Err.respond(this.validationError(Doc.HttpMethods.PUT, path), res, errors);
|
|
319
|
-
const json = res.json;
|
|
320
|
-
res.json = function (obj) {
|
|
321
|
-
obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
|
|
322
|
-
if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
|
|
323
|
-
res.status(400);
|
|
324
|
-
console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
|
|
325
|
-
return json.call(this, { type: 'Response', errors: resValidation.errors });
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
return json.call(this, obj);
|
|
329
|
-
}
|
|
330
|
-
};
|
|
331
|
-
return handler(req, res, next);
|
|
332
|
-
};
|
|
333
|
-
this.router.put(path, _handler);
|
|
334
|
-
}
|
|
335
|
-
catch (err) {
|
|
336
|
-
throw new Error(`Put: ${path}: ` + String(err), { cause: err });
|
|
337
|
-
}
|
|
322
|
+
this.route(Doc.HttpMethods.PUT, path, opts, handler, true);
|
|
338
323
|
}
|
|
339
324
|
not_found() {
|
|
340
325
|
this.router.all('*path', (req, res) => {
|
package/dist/lib/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,4 +1,49 @@
|
|
|
1
1
|
import type { TSchema } from '@sinclair/typebox';
|
|
2
|
+
/**
|
|
3
|
+
* Per-content-type body entry. May be:
|
|
4
|
+
* - a TypeBox schema (validated, no example)
|
|
5
|
+
* - `true` (any body accepted, no validation)
|
|
6
|
+
* - an object with optional `schema` (TSchema | true), `example`, `examples`
|
|
7
|
+
* (forwarded to the OpenAPI media type object)
|
|
8
|
+
*/
|
|
9
|
+
export type BodyEntryConfig = {
|
|
10
|
+
schema?: TSchema | true;
|
|
11
|
+
example?: unknown;
|
|
12
|
+
examples?: Record<string, {
|
|
13
|
+
summary?: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
value: unknown;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
export type BodyEntry = TSchema | true | BodyEntryConfig;
|
|
19
|
+
/**
|
|
20
|
+
* Body validation can either be:
|
|
21
|
+
* - a TypeBox schema (treated as `application/json` for backwards compatibility)
|
|
22
|
+
* - a record mapping content-type strings to a `BodyEntry`. Content-type
|
|
23
|
+
* keys may include wildcards: `text/*`, `application/*`, or `* / *`.
|
|
24
|
+
*/
|
|
25
|
+
export type BodyValidation<TBody extends TSchema> = TBody | Record<string, BodyEntry>;
|
|
26
|
+
/**
|
|
27
|
+
* Normalized internal representation: every entry has the expanded
|
|
28
|
+
* `BodyEntryConfig` shape with `schema` always set (defaulting to `true`).
|
|
29
|
+
*/
|
|
30
|
+
export type NormalizedBody = Record<string, Required<Pick<BodyEntryConfig, 'schema'>> & BodyEntryConfig>;
|
|
31
|
+
/**
|
|
32
|
+
* Detect whether a given value is a TypeBox schema. TypeBox attaches a
|
|
33
|
+
* `[Kind]` symbol to every schema instance which is what we use to
|
|
34
|
+
* distinguish a schema from a content-type-keyed body record.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isTSchema(value: unknown): value is TSchema;
|
|
37
|
+
/**
|
|
38
|
+
* Normalize the body option into a `NormalizedBody` map. A bare TypeBox
|
|
39
|
+
* schema is mapped to `application/json` for backwards compatibility.
|
|
40
|
+
*/
|
|
41
|
+
export declare function normalizeBody(body: TSchema | Record<string, BodyEntry> | undefined): NormalizedBody | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Match an incoming content-type against a normalized body map, honoring
|
|
44
|
+
* wildcard entries like `text/*` or `*\/*`. Exact matches always win.
|
|
45
|
+
*/
|
|
46
|
+
export declare function matchContentType(incoming: string, normalized: NormalizedBody): string | undefined;
|
|
2
47
|
export type RequestValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema> = {
|
|
3
48
|
private?: boolean;
|
|
4
49
|
deprecated?: boolean;
|
|
@@ -7,6 +52,8 @@ export type RequestValidation<TParams extends TSchema, TQuery extends TSchema, T
|
|
|
7
52
|
description?: string;
|
|
8
53
|
params?: TParams;
|
|
9
54
|
query?: TQuery;
|
|
10
|
-
body?: TBody
|
|
55
|
+
body?: BodyValidation<TBody>;
|
|
56
|
+
/** Whether the request body is required. Defaults to true when `body` is set. */
|
|
57
|
+
bodyRequired?: boolean;
|
|
11
58
|
res?: TResponse;
|
|
12
59
|
};
|
package/dist/lib/types.js
CHANGED
|
@@ -1,2 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
import { Kind } from '@sinclair/typebox';
|
|
2
|
+
/**
|
|
3
|
+
* Detect whether a given value is a TypeBox schema. TypeBox attaches a
|
|
4
|
+
* `[Kind]` symbol to every schema instance which is what we use to
|
|
5
|
+
* distinguish a schema from a content-type-keyed body record.
|
|
6
|
+
*/
|
|
7
|
+
export function isTSchema(value) {
|
|
8
|
+
return !!value && typeof value === 'object' && Kind in value;
|
|
9
|
+
}
|
|
10
|
+
function normalizeEntry(entry) {
|
|
11
|
+
if (entry === true)
|
|
12
|
+
return { schema: true };
|
|
13
|
+
if (isTSchema(entry))
|
|
14
|
+
return { schema: entry };
|
|
15
|
+
return { schema: true, ...entry };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Normalize the body option into a `NormalizedBody` map. A bare TypeBox
|
|
19
|
+
* schema is mapped to `application/json` for backwards compatibility.
|
|
20
|
+
*/
|
|
21
|
+
export function normalizeBody(body) {
|
|
22
|
+
if (!body)
|
|
23
|
+
return undefined;
|
|
24
|
+
if (isTSchema(body))
|
|
25
|
+
return { 'application/json': { schema: body } };
|
|
26
|
+
const out = {};
|
|
27
|
+
for (const ct of Object.keys(body)) {
|
|
28
|
+
out[ct.toLowerCase()] = normalizeEntry(body[ct]);
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Match an incoming content-type against a normalized body map, honoring
|
|
34
|
+
* wildcard entries like `text/*` or `*\/*`. Exact matches always win.
|
|
35
|
+
*/
|
|
36
|
+
export function matchContentType(incoming, normalized) {
|
|
37
|
+
if (!incoming) {
|
|
38
|
+
return normalized['*/*'] ? '*/*' : undefined;
|
|
39
|
+
}
|
|
40
|
+
if (normalized[incoming])
|
|
41
|
+
return incoming;
|
|
42
|
+
const [type] = incoming.split('/');
|
|
43
|
+
if (type && normalized[`${type}/*`])
|
|
44
|
+
return `${type}/*`;
|
|
45
|
+
if (normalized['*/*'])
|
|
46
|
+
return '*/*';
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
2
49
|
//# sourceMappingURL=types.js.map
|
package/dist/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAkCzC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACpC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAK,KAAgB,CAAC;AAC7E,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACpC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CACzB,IAAqD;IAErD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;IAErE,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC5B,QAAgB,EAChB,UAA0B;IAE1B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE1C,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IACxD,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|