@openaddresses/batch-schema 10.24.0 → 10.25.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/CHANGELOG.md CHANGED
@@ -10,6 +10,14 @@
10
10
 
11
11
  ## Version History
12
12
 
13
+ ### v10.25.0
14
+
15
+ - :rocket: Add `deprecated` Boolean
16
+
17
+ ### v10.24.1
18
+
19
+ - :bug: Restore per-route error message
20
+
13
21
  ### v10.24.0
14
22
 
15
23
  - :rocket: Update to Typescript 6.0
package/README.md CHANGED
@@ -41,6 +41,7 @@ async function server() {
41
41
  res: Type.Object({
42
42
  token: Type.String()
43
43
  }),
44
+ deprecated: false,
44
45
  }, (req, res) => {
45
46
  return res.json({
46
47
  token: 'I only return if the request meets the query & body schemas'
@@ -49,6 +50,8 @@ async function server() {
49
50
  }
50
51
  ```
51
52
 
53
+ Set `deprecated: true` on a route schema to mark the generated OpenAPI operation as deprecated.
54
+
52
55
  ## API
53
56
 
54
57
  ```js
@@ -49,6 +49,7 @@ export default class Docs {
49
49
  this.base.paths[pathstr] = {};
50
50
  const document = {
51
51
  summary: schemas.description || 'No Description',
52
+ deprecated: schemas.deprecated,
52
53
  parameters: [],
53
54
  tags: [schemas.group || 'Default'],
54
55
  responses: {}
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../lib/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../lib/openapi.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Request, Response } from 'express';
2
2
  import morgan from 'morgan';
3
+ import Err from '@openaddresses/batch-error';
3
4
  import type { Static, TSchema } from '@sinclair/typebox';
4
5
  import { OpenAPIV3 as Doc } from 'openapi-types';
5
6
  import { Router } from 'express';
@@ -31,6 +32,7 @@ export default class Schemas {
31
32
  prefix: string;
32
33
  error: Record<number, TSchema>;
33
34
  schemas: Map<string, RequestValidation<TSchema, TSchema, TSchema, TSchema>>;
35
+ validationError(method: Doc.HttpMethods, path: string): Err;
34
36
  constructor(router: Router, opts?: {
35
37
  prefix?: string;
36
38
  logging?: boolean | morgan.Options<Request, Response>;
@@ -38,6 +40,7 @@ export default class Schemas {
38
40
  error?: Record<number, TSchema>;
39
41
  openapi?: OpenAPIDocumentInput;
40
42
  });
43
+ normalizeValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema>(opts?: RequestValidation<TParams, TQuery, TBody, TResponse>): RequestValidation<TParams, TQuery, TBody, TResponse>;
41
44
  api(): Promise<void>;
42
45
  /**
43
46
  * Load routes directory. All .js files in the given directory will be loaded (ES Module)
@@ -69,6 +72,7 @@ export default class Schemas {
69
72
  put<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema>(path: string, opts: RequestValidation<TParams, TQuery, TBody, TResponse> | undefined, handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>): Promise<void>;
70
73
  not_found(): void;
71
74
  query(method: Doc.HttpMethods, url: string): {
75
+ deprecated?: boolean;
72
76
  query?: object;
73
77
  body?: object;
74
78
  res?: object;
@@ -37,6 +37,9 @@ export default class Schemas {
37
37
  prefix;
38
38
  error;
39
39
  schemas;
40
+ validationError(method, path) {
41
+ return new Err(400, null, `Validation Error ${String(method).toUpperCase()} ${path}`);
42
+ }
40
43
  constructor(router, opts = {}) {
41
44
  if (!router)
42
45
  throw new Error('Router Param Required');
@@ -60,6 +63,12 @@ export default class Schemas {
60
63
  });
61
64
  this.schemas = new Map();
62
65
  }
66
+ normalizeValidation(opts = {}) {
67
+ return {
68
+ deprecated: false,
69
+ ...opts
70
+ };
71
+ }
63
72
  async api() {
64
73
  await SchemaAPI(this);
65
74
  }
@@ -106,12 +115,13 @@ export default class Schemas {
106
115
  }
107
116
  async get(path, opts = {}, handler) {
108
117
  try {
109
- this.docs.push({ method: Doc.HttpMethods.GET, path: path }, opts);
110
- this.schemas.set(`GET ${path}`, opts);
111
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
112
- const paramsValidation = opts.params && ajv.compile(opts.params);
113
- const queryValidation = opts.query && ajv.compile(opts.query);
114
- if (opts.body)
118
+ const validation = this.normalizeValidation(opts);
119
+ this.docs.push({ method: Doc.HttpMethods.GET, path: path }, validation);
120
+ this.schemas.set(`GET ${path}`, validation);
121
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
122
+ const paramsValidation = validation.params && ajv.compile(validation.params);
123
+ const queryValidation = validation.query && ajv.compile(validation.query);
124
+ if (validation.body)
115
125
  throw new Error(`Body not allowed`);
116
126
  const _handler = (req, res, next) => {
117
127
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -126,7 +136,7 @@ export default class Schemas {
126
136
  if (queryValidation && !queryValidation(req.query))
127
137
  errors.push({ type: 'Query', errors: queryValidation.errors });
128
138
  if (errors.length)
129
- return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
139
+ return Err.respond(this.validationError(Doc.HttpMethods.GET, path), res, errors);
130
140
  const json = res.json;
131
141
  res.json = function (obj) {
132
142
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
@@ -149,12 +159,13 @@ export default class Schemas {
149
159
  }
150
160
  async delete(path, opts = {}, handler) {
151
161
  try {
152
- this.docs.push({ method: Doc.HttpMethods.DELETE, path: path }, opts);
153
- this.schemas.set(`DELETE ${path}`, opts);
154
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
155
- const paramsValidation = opts.params && ajv.compile(opts.params);
156
- const queryValidation = opts.query && ajv.compile(opts.query);
157
- if (opts.body)
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)
158
169
  throw new Error(`Body not allowed`);
159
170
  const _handler = (req, res, next) => {
160
171
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -169,7 +180,7 @@ export default class Schemas {
169
180
  if (queryValidation && !queryValidation(req.query))
170
181
  errors.push({ type: 'Query', errors: queryValidation.errors });
171
182
  if (errors.length)
172
- return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
183
+ return Err.respond(this.validationError(Doc.HttpMethods.DELETE, path), res, errors);
173
184
  const json = res.json;
174
185
  res.json = function (obj) {
175
186
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
@@ -192,12 +203,13 @@ export default class Schemas {
192
203
  }
193
204
  async post(path, opts = {}, handler) {
194
205
  try {
195
- this.docs.push({ method: Doc.HttpMethods.POST, path: path }, opts);
196
- this.schemas.set(`POST ${path}`, opts);
197
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
198
- const paramsValidation = opts.params && ajv.compile(opts.params);
199
- const queryValidation = opts.query && ajv.compile(opts.query);
200
- const bodyValidation = opts.body && ajv.compile(opts.body);
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);
201
213
  const _handler = (req, res, next) => {
202
214
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
203
215
  Object.defineProperty(req, 'query', {
@@ -213,7 +225,7 @@ export default class Schemas {
213
225
  if (bodyValidation && !bodyValidation(req.body))
214
226
  errors.push({ type: 'Body', errors: bodyValidation.errors });
215
227
  if (errors.length)
216
- return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
228
+ return Err.respond(this.validationError(Doc.HttpMethods.POST, path), res, errors);
217
229
  const json = res.json;
218
230
  res.json = function (obj) {
219
231
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
@@ -236,12 +248,13 @@ export default class Schemas {
236
248
  }
237
249
  async patch(path, opts = {}, handler) {
238
250
  try {
239
- this.docs.push({ method: Doc.HttpMethods.PATCH, path: path }, opts);
240
- this.schemas.set(`PATCH ${path}`, opts);
241
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
242
- const paramsValidation = opts.params && ajv.compile(opts.params);
243
- const queryValidation = opts.query && ajv.compile(opts.query);
244
- const bodyValidation = opts.body && ajv.compile(opts.body);
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);
245
258
  const _handler = (req, res, next) => {
246
259
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
247
260
  Object.defineProperty(req, 'query', {
@@ -257,7 +270,7 @@ export default class Schemas {
257
270
  if (bodyValidation && !bodyValidation(req.body))
258
271
  errors.push({ type: 'Body', errors: bodyValidation.errors });
259
272
  if (errors.length)
260
- return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
273
+ return Err.respond(this.validationError(Doc.HttpMethods.PATCH, path), res, errors);
261
274
  const json = res.json;
262
275
  res.json = function (obj) {
263
276
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
@@ -280,12 +293,13 @@ export default class Schemas {
280
293
  }
281
294
  async put(path, opts = {}, handler) {
282
295
  try {
283
- this.docs.push({ method: Doc.HttpMethods.PUT, path: path }, opts);
284
- this.schemas.set(`PUT ${path}`, opts);
285
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
286
- const paramsValidation = opts.params && ajv.compile(opts.params);
287
- const queryValidation = opts.query && ajv.compile(opts.query);
288
- const bodyValidation = opts.body && ajv.compile(opts.body);
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);
289
303
  const _handler = (req, res, next) => {
290
304
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
291
305
  Object.defineProperty(req, 'query', {
@@ -301,7 +315,7 @@ export default class Schemas {
301
315
  if (bodyValidation && !bodyValidation(req.body))
302
316
  errors.push({ type: 'Body', errors: bodyValidation.errors });
303
317
  if (errors.length)
304
- return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
318
+ return Err.respond(this.validationError(Doc.HttpMethods.PUT, path), res, errors);
305
319
  const json = res.json;
306
320
  res.json = function (obj) {
307
321
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
@@ -337,6 +351,7 @@ export default class Schemas {
337
351
  }
338
352
  const schema = JSON.parse(JSON.stringify(this.schemas.get(`${method} ${url}`)));
339
353
  return {
354
+ deprecated: schema.deprecated,
340
355
  query: schema.query,
341
356
  body: schema.body,
342
357
  res: schema.res
@@ -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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"}
@@ -1,6 +1,7 @@
1
1
  import type { TSchema } from '@sinclair/typebox';
2
2
  export type RequestValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema> = {
3
3
  private?: boolean;
4
+ deprecated?: boolean;
4
5
  name?: string;
5
6
  group?: string;
6
7
  description?: string;
@@ -1,6 +1,7 @@
1
1
  import { describe, it, before, after } from 'node:test';
2
2
  import assert from 'node:assert';
3
3
  import express from 'express';
4
+ import { Type } from '@sinclair/typebox';
4
5
  import Schema from '../index.js';
5
6
  const app = express();
6
7
  const schema = new Schema(express.Router());
@@ -9,6 +10,15 @@ let server;
9
10
  describe('Schema Server', () => {
10
11
  before((_, done) => {
11
12
  server = app.listen(2000, async () => {
13
+ await schema.get('/legacy', {
14
+ deprecated: true,
15
+ description: 'Legacy route',
16
+ res: Type.Object({
17
+ ok: Type.Boolean()
18
+ })
19
+ }, async (_, res) => {
20
+ res.json({ ok: true });
21
+ });
12
22
  await schema.api();
13
23
  done();
14
24
  });
@@ -20,6 +30,11 @@ describe('Schema Server', () => {
20
30
  const res = await fetch('http://localhost:2000/api/schema');
21
31
  const body = await res.json();
22
32
  assert.deepStrictEqual(body, {
33
+ 'GET /legacy': {
34
+ body: false,
35
+ query: false,
36
+ res: true
37
+ },
23
38
  'GET /schema': {
24
39
  body: false,
25
40
  query: true,
@@ -37,7 +52,7 @@ describe('Schema Server', () => {
37
52
  assert.strictEqual(res.ok, false);
38
53
  assert.deepStrictEqual(await res.json(), {
39
54
  status: 400,
40
- message: 'Validation Error',
55
+ message: 'Validation Error GET /schema',
41
56
  messages: [
42
57
  { "type": "Query", "errors": [{ "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/0/const", "keyword": "const", "params": { "allowedValue": "GET" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/1/const", "keyword": "const", "params": { "allowedValue": "PUT" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/2/const", "keyword": "const", "params": { "allowedValue": "POST" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/3/const", "keyword": "const", "params": { "allowedValue": "DELETE" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/4/const", "keyword": "const", "params": { "allowedValue": "OPTIONS" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/5/const", "keyword": "const", "params": { "allowedValue": "HEAD" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/6/const", "keyword": "const", "params": { "allowedValue": "PATCH" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf/7/const", "keyword": "const", "params": { "allowedValue": "TRACE" }, "message": "must be equal to constant" }, { "instancePath": "/method", "schemaPath": "#/properties/method/anyOf", "keyword": "anyOf", "params": {}, "message": "must match a schema in anyOf" }] }
43
58
  ]
@@ -64,7 +79,30 @@ describe('Schema Server', () => {
64
79
  it('GET: api/schema?method=GET&url=/schema', async () => {
65
80
  const res = await fetch('http://localhost:2000/api/schema?method=GET&url=/schema');
66
81
  assert.strictEqual(res.status, 200, 'http: 200');
67
- assert.deepStrictEqual(Object.keys(await res.json()).sort(), ['query', 'res'].sort());
82
+ assert.deepStrictEqual(Object.keys(await res.json()).sort(), ['deprecated', 'query', 'res'].sort());
83
+ });
84
+ it('GET: api/schema?method=GET&url=/legacy', async () => {
85
+ const res = await fetch('http://localhost:2000/api/schema?method=GET&url=/legacy');
86
+ assert.strictEqual(res.status, 200, 'http: 200');
87
+ assert.deepStrictEqual(await res.json(), {
88
+ deprecated: true,
89
+ res: {
90
+ type: 'object',
91
+ properties: {
92
+ ok: {
93
+ type: 'boolean'
94
+ }
95
+ },
96
+ required: ['ok']
97
+ }
98
+ });
99
+ });
100
+ it('GET: api/openapi marks deprecated operations', async () => {
101
+ const res = await fetch('http://localhost:2000/api/openapi');
102
+ const body = await res.json();
103
+ assert.strictEqual(res.status, 200, 'http: 200');
104
+ assert.strictEqual(body.paths['/legacy'].get.deprecated, true);
105
+ assert.strictEqual(body.paths['/schema'].get.deprecated, false);
68
106
  });
69
107
  });
70
108
  //# sourceMappingURL=schema.srv.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.srv.test.js","sourceRoot":"","sources":["../../test/schema.srv.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.srv.test.js","sourceRoot":"","sources":["../../test/schema.srv.test.ts"],"names":[],"mappings":"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"}
package/lib/openapi.ts CHANGED
@@ -102,6 +102,7 @@ export default class Docs {
102
102
 
103
103
  const document: Doc.OperationObject = {
104
104
  summary: schemas.description || 'No Description',
105
+ deprecated: schemas.deprecated,
105
106
  parameters: [],
106
107
  tags: [schemas.group || 'Default'],
107
108
  responses: {}
package/lib/schema.ts CHANGED
@@ -49,6 +49,10 @@ export default class Schemas {
49
49
  error: Record<number, TSchema>;
50
50
  schemas: Map<string, RequestValidation<TSchema, TSchema, TSchema, TSchema>>
51
51
 
52
+ validationError(method: Doc.HttpMethods, path: string) {
53
+ return new Err(400, null, `Validation Error ${String(method).toUpperCase()} ${path}`);
54
+ }
55
+
52
56
  constructor(
53
57
  router: Router,
54
58
  opts: {
@@ -87,6 +91,15 @@ export default class Schemas {
87
91
  this.schemas = new Map();
88
92
  }
89
93
 
94
+ normalizeValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema>(
95
+ opts: RequestValidation<TParams, TQuery, TBody, TResponse> = {}
96
+ ): RequestValidation<TParams, TQuery, TBody, TResponse> {
97
+ return {
98
+ deprecated: false,
99
+ ...opts
100
+ };
101
+ }
102
+
90
103
  async api() {
91
104
  await SchemaAPI(this);
92
105
  }
@@ -143,13 +156,15 @@ export default class Schemas {
143
156
  handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>
144
157
  ) {
145
158
  try {
146
- this.docs.push({ method: Doc.HttpMethods.GET, path: path }, opts);
147
- this.schemas.set(`GET ${path}`, opts);
159
+ const validation = this.normalizeValidation(opts);
148
160
 
149
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
150
- const paramsValidation = opts.params && ajv.compile(opts.params);
151
- const queryValidation = opts.query && ajv.compile(opts.query);
152
- if (opts.body) throw new Error(`Body not allowed`);
161
+ this.docs.push({ method: Doc.HttpMethods.GET, path: path }, validation);
162
+ this.schemas.set(`GET ${path}`, validation);
163
+
164
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
165
+ const paramsValidation = validation.params && ajv.compile(validation.params);
166
+ const queryValidation = validation.query && ajv.compile(validation.query);
167
+ if (validation.body) throw new Error(`Body not allowed`);
153
168
 
154
169
  const _handler: RequestHandler = (req, res, next) => {
155
170
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -162,7 +177,7 @@ export default class Schemas {
162
177
  const errors: Array<ErrorListItem> = [];
163
178
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
164
179
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
165
- if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
180
+ if (errors.length) return Err.respond(this.validationError(Doc.HttpMethods.GET, path), res, errors);
166
181
 
167
182
  const json = res.json;
168
183
  res.json = function(obj) {
@@ -191,13 +206,15 @@ export default class Schemas {
191
206
  handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>
192
207
  ) {
193
208
  try {
194
- this.docs.push({ method: Doc.HttpMethods.DELETE, path: path }, opts);
195
- this.schemas.set(`DELETE ${path}`, opts);
209
+ const validation = this.normalizeValidation(opts);
210
+
211
+ this.docs.push({ method: Doc.HttpMethods.DELETE, path: path }, validation);
212
+ this.schemas.set(`DELETE ${path}`, validation);
196
213
 
197
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
198
- const paramsValidation = opts.params && ajv.compile(opts.params);
199
- const queryValidation = opts.query && ajv.compile(opts.query);
200
- if (opts.body) throw new Error(`Body not allowed`);
214
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
215
+ const paramsValidation = validation.params && ajv.compile(validation.params);
216
+ const queryValidation = validation.query && ajv.compile(validation.query);
217
+ if (validation.body) throw new Error(`Body not allowed`);
201
218
 
202
219
  const _handler: RequestHandler = (req, res, next) => {
203
220
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -210,7 +227,7 @@ export default class Schemas {
210
227
  const errors: Array<ErrorListItem> = [];
211
228
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
212
229
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
213
- if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
230
+ if (errors.length) return Err.respond(this.validationError(Doc.HttpMethods.DELETE, path), res, errors);
214
231
 
215
232
  const json = res.json;
216
233
  res.json = function(obj) {
@@ -239,13 +256,15 @@ export default class Schemas {
239
256
  handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>
240
257
  ) {
241
258
  try {
242
- this.docs.push({ method: Doc.HttpMethods.POST, path: path }, opts);
243
- this.schemas.set(`POST ${path}`, opts);
259
+ const validation = this.normalizeValidation(opts);
260
+
261
+ this.docs.push({ method: Doc.HttpMethods.POST, path: path }, validation);
262
+ this.schemas.set(`POST ${path}`, validation);
244
263
 
245
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
246
- const paramsValidation = opts.params && ajv.compile(opts.params);
247
- const queryValidation = opts.query && ajv.compile(opts.query);
248
- const bodyValidation = opts.body && ajv.compile(opts.body);
264
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
265
+ const paramsValidation = validation.params && ajv.compile(validation.params);
266
+ const queryValidation = validation.query && ajv.compile(validation.query);
267
+ const bodyValidation = validation.body && ajv.compile(validation.body);
249
268
 
250
269
  const _handler: RequestHandler = (req, res, next) => {
251
270
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -259,7 +278,7 @@ export default class Schemas {
259
278
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
260
279
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
261
280
  if (bodyValidation && !bodyValidation(req.body)) errors.push({ type: 'Body', errors: bodyValidation.errors as ErrorObject[] });
262
- if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
281
+ if (errors.length) return Err.respond(this.validationError(Doc.HttpMethods.POST, path), res, errors);
263
282
 
264
283
  const json = res.json;
265
284
  res.json = function(obj) {
@@ -288,13 +307,15 @@ export default class Schemas {
288
307
  handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>
289
308
  ) {
290
309
  try {
291
- this.docs.push({ method: Doc.HttpMethods.PATCH, path: path }, opts);
292
- this.schemas.set(`PATCH ${path}`, opts);
310
+ const validation = this.normalizeValidation(opts);
293
311
 
294
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
295
- const paramsValidation = opts.params && ajv.compile(opts.params);
296
- const queryValidation = opts.query && ajv.compile(opts.query);
297
- const bodyValidation = opts.body && ajv.compile(opts.body);
312
+ this.docs.push({ method: Doc.HttpMethods.PATCH, path: path }, validation);
313
+ this.schemas.set(`PATCH ${path}`, validation);
314
+
315
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
316
+ const paramsValidation = validation.params && ajv.compile(validation.params);
317
+ const queryValidation = validation.query && ajv.compile(validation.query);
318
+ const bodyValidation = validation.body && ajv.compile(validation.body);
298
319
 
299
320
  const _handler: RequestHandler = (req, res, next) => {
300
321
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -308,7 +329,7 @@ export default class Schemas {
308
329
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
309
330
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
310
331
  if (bodyValidation && !bodyValidation(req.body)) errors.push({ type: 'Body', errors: bodyValidation.errors as ErrorObject[] });
311
- if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
332
+ if (errors.length) return Err.respond(this.validationError(Doc.HttpMethods.PATCH, path), res, errors);
312
333
 
313
334
  const json = res.json;
314
335
  res.json = function(obj) {
@@ -337,13 +358,15 @@ export default class Schemas {
337
358
  handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>
338
359
  ) {
339
360
  try {
340
- this.docs.push({ method: Doc.HttpMethods.PUT, path: path }, opts);
341
- this.schemas.set(`PUT ${path}`, opts);
361
+ const validation = this.normalizeValidation(opts);
362
+
363
+ this.docs.push({ method: Doc.HttpMethods.PUT, path: path }, validation);
364
+ this.schemas.set(`PUT ${path}`, validation);
342
365
 
343
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
344
- const paramsValidation = opts.params && ajv.compile(opts.params);
345
- const queryValidation = opts.query && ajv.compile(opts.query);
346
- const bodyValidation = opts.body && ajv.compile(opts.body);
366
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
367
+ const paramsValidation = validation.params && ajv.compile(validation.params);
368
+ const queryValidation = validation.query && ajv.compile(validation.query);
369
+ const bodyValidation = validation.body && ajv.compile(validation.body);
347
370
 
348
371
  const _handler: RequestHandler = (req, res, next) => {
349
372
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -357,7 +380,7 @@ export default class Schemas {
357
380
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
358
381
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
359
382
  if (bodyValidation && !bodyValidation(req.body)) errors.push({ type: 'Body', errors: bodyValidation.errors as ErrorObject[] });
360
- if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
383
+ if (errors.length) return Err.respond(this.validationError(Doc.HttpMethods.PUT, path), res, errors);
361
384
 
362
385
  const json = res.json;
363
386
  res.json = function(obj) {
@@ -392,6 +415,7 @@ export default class Schemas {
392
415
 
393
416
 
394
417
  query(method: Doc.HttpMethods, url: string): {
418
+ deprecated?: boolean;
395
419
  query?: object;
396
420
  body?: object;
397
421
  res?: object;
@@ -403,6 +427,7 @@ export default class Schemas {
403
427
  const schema = JSON.parse(JSON.stringify(this.schemas.get(`${method} ${url}`)));
404
428
 
405
429
  return {
430
+ deprecated: schema.deprecated,
406
431
  query: schema.query,
407
432
  body: schema.body,
408
433
  res: schema.res
package/lib/types.ts CHANGED
@@ -7,6 +7,7 @@ export type RequestValidation<
7
7
  TResponse extends TSchema
8
8
  > = {
9
9
  private?: boolean;
10
+ deprecated?: boolean;
10
11
  name?: string;
11
12
  group?: string;
12
13
  description?: string;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "root": true,
5
5
  "main": "dist/index.js",
6
6
  "types": "index.ts",
7
- "version": "10.24.0",
7
+ "version": "10.25.0",
8
8
  "description": "Strongly Validated JSON Schema support for address",
9
9
  "repository": {
10
10
  "type": "git",
@@ -1,6 +1,7 @@
1
1
  import { describe, it, before, after } from 'node:test';
2
2
  import assert from 'node:assert';
3
3
  import express from 'express';
4
+ import { Type } from '@sinclair/typebox';
4
5
  import Schema from '../index.js';
5
6
 
6
7
  const app = express();
@@ -13,6 +14,16 @@ let server: ReturnType<typeof app.listen>;
13
14
  describe('Schema Server', () => {
14
15
  before((_, done) => {
15
16
  server = app.listen(2000, async () => {
17
+ await schema.get('/legacy', {
18
+ deprecated: true,
19
+ description: 'Legacy route',
20
+ res: Type.Object({
21
+ ok: Type.Boolean()
22
+ })
23
+ }, async (_, res) => {
24
+ res.json({ ok: true });
25
+ });
26
+
16
27
  await schema.api();
17
28
  done();
18
29
  });
@@ -27,6 +38,11 @@ describe('Schema Server', () => {
27
38
  const body = await res.json();
28
39
 
29
40
  assert.deepStrictEqual(body, {
41
+ 'GET /legacy': {
42
+ body: false,
43
+ query: false,
44
+ res: true
45
+ },
30
46
  'GET /schema':{
31
47
  body: false,
32
48
  query: true,
@@ -47,7 +63,7 @@ describe('Schema Server', () => {
47
63
 
48
64
  assert.deepStrictEqual(await res.json(), {
49
65
  status: 400,
50
- message: 'Validation Error',
66
+ message: 'Validation Error GET /schema',
51
67
  messages: [
52
68
  {"type":"Query","errors":[{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/0/const","keyword":"const","params":{"allowedValue":"GET"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/1/const","keyword":"const","params":{"allowedValue":"PUT"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/2/const","keyword":"const","params":{"allowedValue":"POST"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/3/const","keyword":"const","params":{"allowedValue":"DELETE"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/4/const","keyword":"const","params":{"allowedValue":"OPTIONS"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/5/const","keyword":"const","params":{"allowedValue":"HEAD"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/6/const","keyword":"const","params":{"allowedValue":"PATCH"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf/7/const","keyword":"const","params":{"allowedValue":"TRACE"},"message":"must be equal to constant"},{"instancePath":"/method","schemaPath":"#/properties/method/anyOf","keyword":"anyOf","params":{},"message":"must match a schema in anyOf"}]}
53
69
  ]
@@ -78,6 +94,33 @@ describe('Schema Server', () => {
78
94
  const res = await fetch('http://localhost:2000/api/schema?method=GET&url=/schema');
79
95
 
80
96
  assert.strictEqual(res.status, 200, 'http: 200');
81
- assert.deepStrictEqual(Object.keys(await res.json()).sort(), ['query', 'res'].sort());
97
+ assert.deepStrictEqual(Object.keys(await res.json()).sort(), ['deprecated', 'query', 'res'].sort());
98
+ });
99
+
100
+ it('GET: api/schema?method=GET&url=/legacy', async () => {
101
+ const res = await fetch('http://localhost:2000/api/schema?method=GET&url=/legacy');
102
+
103
+ assert.strictEqual(res.status, 200, 'http: 200');
104
+ assert.deepStrictEqual(await res.json(), {
105
+ deprecated: true,
106
+ res: {
107
+ type: 'object',
108
+ properties: {
109
+ ok: {
110
+ type: 'boolean'
111
+ }
112
+ },
113
+ required: ['ok']
114
+ }
115
+ });
116
+ });
117
+
118
+ it('GET: api/openapi marks deprecated operations', async () => {
119
+ const res = await fetch('http://localhost:2000/api/openapi');
120
+ const body = await res.json();
121
+
122
+ assert.strictEqual(res.status, 200, 'http: 200');
123
+ assert.strictEqual(body.paths['/legacy'].get.deprecated, true);
124
+ assert.strictEqual(body.paths['/schema'].get.deprecated, false);
82
125
  });
83
126
  });