@openaddresses/batch-schema 10.22.0 → 10.24.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.
@@ -1,32 +1,41 @@
1
1
  name: NPM Release
2
2
 
3
3
  on:
4
- push:
5
- tags:
6
- - '*'
4
+ push:
5
+ tags:
6
+ - '*'
7
+
8
+ permissions:
9
+ id-token: write # Required for OIDC
10
+ contents: write
7
11
 
8
12
  jobs:
9
- build:
10
- runs-on: ubuntu-latest
11
- steps:
12
- - uses: actions/checkout@v3
13
-
14
- - name: Get tag
15
- id: tag
16
- uses: dawidd6/action-get-tag@v1
17
-
18
- - uses: actions/setup-node@v4
19
- with:
20
- node-version: 18
21
- registry-url: https://registry.npmjs.org/
22
-
23
- - name: npm install
24
- run: npm install
25
-
26
- - name: npm build
27
- run: npm run build
28
-
29
- - name: npm publish
30
- run: npm publish
31
- env:
32
- NPM_TOKEN: ${{ secrets.NPM_SECRET }}
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v6
17
+
18
+ - name: Get tag
19
+ id: tag
20
+ uses: dawidd6/action-get-tag@v1
21
+
22
+ - uses: actions/setup-node@v6
23
+ with:
24
+ node-version: 24
25
+
26
+ - name: npm install
27
+ run: npm install
28
+
29
+ - name: npm build
30
+ run: npm run build
31
+
32
+ - name: npm publish
33
+ run: npm publish --provenance --access public
34
+
35
+ - name: Generate CHANGELOG
36
+ run: grep -Pzo "### ${{steps.tag.outputs.tag}}(?s).*?(?=###)" CHANGELOG.md > RELEASE
37
+
38
+ - name: Github Release
39
+ uses: softprops/action-gh-release@v2
40
+ with:
41
+ body_path: RELEASE
package/CHANGELOG.md CHANGED
@@ -10,6 +10,23 @@
10
10
 
11
11
  ## Version History
12
12
 
13
+ ### v10.24.0
14
+
15
+ - :rocket: Update to Typescript 6.0
16
+
17
+ ### v10.23.2
18
+
19
+ - :rocket: Update GH Actions Release
20
+
21
+ ### v10.23.1
22
+
23
+ - :rocket: Update GH Actions Release
24
+
25
+ ### v10.23.0
26
+
27
+ - :rocket: Update Error Cause
28
+ - :arrow_up: Update Core Deps
29
+
13
30
  ### v10.22.0
14
31
 
15
32
  - :rocket: Increase usefulness of schema error messages by including the schema path and the value that failed validation
@@ -0,0 +1,2 @@
1
+ import Schema from './lib/schema.js';
2
+ export default Schema;
@@ -0,0 +1,2 @@
1
+ import Schema from './schema.js';
2
+ export default function router(schema: Schema): Promise<void>;
package/dist/lib/api.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import Err from '@openaddresses/batch-error';
2
+ import Schema from './schema.js';
2
3
  import { OpenAPIV3 as Doc } from 'openapi-types';
3
4
  import { Type } from '@sinclair/typebox';
4
5
  export default async function router(schema) {
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,MAAM,CAAC,MAAc;IAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACpC,CAAC;QACF,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACf,WAAW,EAAE;;;;;;SAMZ;KACJ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,2CAA2C,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;QACzB,WAAW,EAAE,qCAAqC;QAClD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;KAClB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,MAAM,CAAC,MAAc;IAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACpC,CAAC;QACF,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACf,WAAW,EAAE;;;;;;SAMZ;KACJ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,2CAA2C,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;QACzB,WAAW,EAAE,qCAAqC;QAClD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;KAClB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { OpenAPIV3 as Doc } from 'openapi-types';
2
+ import type { RequestValidation } from './types.js';
3
+ import type { TSchema } from '@sinclair/typebox';
4
+ export type OpenAPIDocumentInput = {
5
+ openapi?: string;
6
+ info?: {
7
+ title: string;
8
+ version: string;
9
+ [k: string]: string;
10
+ };
11
+ paths?: Record<string, Record<string, unknown>>;
12
+ components?: {
13
+ schemas?: Record<string, object>;
14
+ securitySchemes?: Record<string, object>;
15
+ };
16
+ security?: Array<unknown>;
17
+ };
18
+ export type OpenAPIDocument = {
19
+ openapi: string;
20
+ info: {
21
+ title: string;
22
+ version: string;
23
+ [k: string]: string;
24
+ };
25
+ paths: Record<string, Record<string, unknown>>;
26
+ components: {
27
+ schemas?: Record<string, object>;
28
+ securitySchemes?: Record<string, object>;
29
+ };
30
+ security?: Array<unknown>;
31
+ };
32
+ /**
33
+ * @class
34
+ */
35
+ export default class Docs {
36
+ base: OpenAPIDocument;
37
+ prefix: string;
38
+ error: Record<string, TSchema>;
39
+ constructor(base?: OpenAPIDocumentInput, opts?: {
40
+ prefix?: string;
41
+ error?: Record<string, TSchema>;
42
+ });
43
+ push(parsed: {
44
+ method: Doc.HttpMethods;
45
+ path: string;
46
+ }, schemas: RequestValidation<TSchema, TSchema, TSchema, TSchema>): void;
47
+ }
@@ -1,3 +1,4 @@
1
+ import { OpenAPIV3 as Doc } from 'openapi-types';
1
2
  /**
2
3
  * @class
3
4
  */
@@ -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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"}
@@ -0,0 +1,83 @@
1
+ import type { Request, Response } from 'express';
2
+ import morgan from 'morgan';
3
+ import type { Static, TSchema } from '@sinclair/typebox';
4
+ import { OpenAPIV3 as Doc } from 'openapi-types';
5
+ import { Router } from 'express';
6
+ import type { RequestHandler } from 'express';
7
+ import type { ErrorObject } from 'ajv';
8
+ import type { RequestValidation } from './types.js';
9
+ import type { OpenAPIDocumentInput } from './openapi.js';
10
+ import Docs from './openapi.js';
11
+ export type ErrorListItem = {
12
+ type: 'Body' | 'Query' | 'Params';
13
+ errors: ErrorObject[];
14
+ };
15
+ /**
16
+ * @class
17
+ *
18
+ * @param {Object} router Express Router Object
19
+ * @param {Object} opts Options Object
20
+ * @param {object} [opts.logging] disable logging with false
21
+ * @param {number} [opts.limit=50] body size limit in mb
22
+ * @param {object} [opts.openapi] OpenAPI Base Document
23
+ * @param {object} [opts.prefix] API string Prefix
24
+ * @param {object} [opts.error] Error Schemas
25
+ *
26
+ * @param {URL} [opts.apidoc] apidoc file location
27
+ */
28
+ export default class Schemas {
29
+ router: Router;
30
+ docs: Docs;
31
+ prefix: string;
32
+ error: Record<number, TSchema>;
33
+ schemas: Map<string, RequestValidation<TSchema, TSchema, TSchema, TSchema>>;
34
+ constructor(router: Router, opts?: {
35
+ prefix?: string;
36
+ logging?: boolean | morgan.Options<Request, Response>;
37
+ limit?: number;
38
+ error?: Record<number, TSchema>;
39
+ openapi?: OpenAPIDocumentInput;
40
+ });
41
+ api(): Promise<void>;
42
+ /**
43
+ * Load routes directory. All .js files in the given directory will be loaded (ES Module)
44
+ * and the default method run
45
+ *
46
+ * @param {String} dirpath Directory to load
47
+ * @param {object} config Config Object
48
+ * @param {Object} opts Options Object
49
+ * @param {boolean} opts.silent Squelch StdOut
50
+ */
51
+ load<T>(dirpath: string | URL, config: T, opts?: {
52
+ silent: boolean;
53
+ }): Promise<void>;
54
+ /**
55
+ * Load a blueprint into the router
56
+ *
57
+ * @param {Object} bp_funcion Blueprint Function to init instances
58
+ * @param {object} config Config Object
59
+ * @param {Object} opts Options Object
60
+ * @param {boolean} opts.silent Squelch StdOut
61
+ */
62
+ blueprint<T>(bp_fn: (schema: Schemas, config?: T) => Promise<void>, config?: T, opts?: {
63
+ silent: boolean;
64
+ }): Promise<void>;
65
+ get<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>;
66
+ delete<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>;
67
+ post<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>;
68
+ patch<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>;
69
+ 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
+ not_found(): void;
71
+ query(method: Doc.HttpMethods, url: string): {
72
+ query?: object;
73
+ body?: object;
74
+ res?: object;
75
+ };
76
+ list(): {
77
+ [k: string]: {
78
+ body: boolean;
79
+ query: boolean;
80
+ res: boolean;
81
+ };
82
+ };
83
+ }
@@ -5,6 +5,7 @@ import bodyparser from 'body-parser';
5
5
  import Err from '@openaddresses/batch-error';
6
6
  import { Type } from '@sinclair/typebox';
7
7
  import { OpenAPIV3 as Doc } from 'openapi-types';
8
+ import { Router } from 'express';
8
9
  import { Ajv } from 'ajv';
9
10
  import addFormatsModule from 'ajv-formats';
10
11
  import SchemaAPI from './api.js';
@@ -131,6 +132,7 @@ export default class Schemas {
131
132
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
132
133
  if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
133
134
  res.status(400);
135
+ console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
134
136
  return json.call(this, { type: 'Response', errors: resValidation.errors });
135
137
  }
136
138
  else {
@@ -142,7 +144,7 @@ export default class Schemas {
142
144
  this.router.get(path, _handler);
143
145
  }
144
146
  catch (err) {
145
- throw new Error(`Get: ${path}: ` + err);
147
+ throw new Error(`Get: ${path}: ` + err, { cause: err });
146
148
  }
147
149
  }
148
150
  async delete(path, opts = {}, handler) {
@@ -173,6 +175,7 @@ export default class Schemas {
173
175
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
174
176
  if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
175
177
  res.status(400);
178
+ console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
176
179
  return json.call(this, { type: 'Response', errors: resValidation.errors });
177
180
  }
178
181
  else {
@@ -184,7 +187,7 @@ export default class Schemas {
184
187
  this.router.delete(path, _handler);
185
188
  }
186
189
  catch (err) {
187
- throw new Error(`Delete: ${path}: ` + String(err));
190
+ throw new Error(`Delete: ${path}: ` + String(err), { cause: err });
188
191
  }
189
192
  }
190
193
  async post(path, opts = {}, handler) {
@@ -216,6 +219,7 @@ export default class Schemas {
216
219
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
217
220
  if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
218
221
  res.status(400);
222
+ console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
219
223
  return json.call(this, { type: 'Response', errors: resValidation.errors });
220
224
  }
221
225
  else {
@@ -227,7 +231,7 @@ export default class Schemas {
227
231
  this.router.post(path, _handler);
228
232
  }
229
233
  catch (err) {
230
- throw new Error(`Post: ${path}: ` + String(err));
234
+ throw new Error(`Post: ${path}: ` + String(err), { cause: err });
231
235
  }
232
236
  }
233
237
  async patch(path, opts = {}, handler) {
@@ -259,6 +263,7 @@ export default class Schemas {
259
263
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
260
264
  if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
261
265
  res.status(400);
266
+ console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
262
267
  return json.call(this, { type: 'Response', errors: resValidation.errors });
263
268
  }
264
269
  else {
@@ -270,7 +275,7 @@ export default class Schemas {
270
275
  this.router.patch(path, _handler);
271
276
  }
272
277
  catch (err) {
273
- throw new Error(`Patch: ${path}: ` + String(err));
278
+ throw new Error(`Patch: ${path}: ` + String(err), { cause: err });
274
279
  }
275
280
  }
276
281
  async put(path, opts = {}, handler) {
@@ -302,6 +307,7 @@ export default class Schemas {
302
307
  obj = JSON.parse(JSON.stringify(obj)); // Here as Date => String needs to happen
303
308
  if ((res.statusCode === null || res.statusCode === 200) && resValidation && !resValidation(obj)) {
304
309
  res.status(400);
310
+ console.error(`Response Validation Error: ${JSON.stringify(obj)}`);
305
311
  return json.call(this, { type: 'Response', errors: resValidation.errors });
306
312
  }
307
313
  else {
@@ -313,7 +319,7 @@ export default class Schemas {
313
319
  this.router.put(path, _handler);
314
320
  }
315
321
  catch (err) {
316
- throw new Error(`Put: ${path}: ` + String(err));
322
+ throw new Error(`Put: ${path}: ` + String(err), { cause: err });
317
323
  }
318
324
  }
319
325
  not_found() {
@@ -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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"}
@@ -0,0 +1,11 @@
1
+ import type { TSchema } from '@sinclair/typebox';
2
+ export type RequestValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema> = {
3
+ private?: boolean;
4
+ name?: string;
5
+ group?: string;
6
+ description?: string;
7
+ params?: TParams;
8
+ query?: TQuery;
9
+ body?: TBody;
10
+ res?: TResponse;
11
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,21 +1,25 @@
1
- import test from 'tape';
1
+ import { describe, it, before, after } from 'node:test';
2
+ import assert from 'node:assert';
2
3
  import express from 'express';
3
4
  import Schema from '../index.js';
4
5
  const app = express();
5
6
  const schema = new Schema(express.Router());
6
7
  app.use('/api', schema.router);
7
8
  let server;
8
- test('start', (t) => {
9
- server = app.listen(2000, async () => {
10
- await schema.api();
11
- t.end();
9
+ describe('Schema Server', () => {
10
+ before((_, done) => {
11
+ server = app.listen(2000, async () => {
12
+ await schema.api();
13
+ done();
14
+ });
12
15
  });
13
- });
14
- test('GET: api/schema', async (t) => {
15
- try {
16
+ after(() => {
17
+ server.close();
18
+ });
19
+ it('GET: api/schema', async () => {
16
20
  const res = await fetch('http://localhost:2000/api/schema');
17
21
  const body = await res.json();
18
- t.deepEquals(body, {
22
+ assert.deepStrictEqual(body, {
19
23
  'GET /schema': {
20
24
  body: false,
21
25
  query: true,
@@ -27,72 +31,40 @@ test('GET: api/schema', async (t) => {
27
31
  res: true
28
32
  }
29
33
  });
30
- }
31
- catch (err) {
32
- t.error(err, 'no error');
33
- }
34
- t.end();
35
- });
36
- test('GET: api/schema?method=FAKE', async (t) => {
37
- try {
34
+ });
35
+ it('GET: api/schema?method=FAKE', async () => {
38
36
  const res = await fetch('http://localhost:2000/api/schema?method=fake');
39
- t.notOk(res.ok);
40
- t.deepEquals(await res.json(), {
37
+ assert.strictEqual(res.ok, false);
38
+ assert.deepStrictEqual(await res.json(), {
41
39
  status: 400,
42
40
  message: 'Validation Error',
43
41
  messages: [
44
42
  { "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" }] }
45
43
  ]
46
44
  });
47
- }
48
- catch (err) {
49
- t.error(err);
50
- }
51
- t.end();
52
- });
53
- test('GET: api/schema?method=GET', async (t) => {
54
- try {
45
+ });
46
+ it('GET: api/schema?method=GET', async () => {
55
47
  const res = await fetch('http://localhost:2000/api/schema?method=GET');
56
- t.notOk(res.ok);
57
- t.deepEquals(await res.json(), {
48
+ assert.strictEqual(res.ok, false);
49
+ assert.deepStrictEqual(await res.json(), {
58
50
  status: 400,
59
51
  message: 'url & method params must be used together',
60
52
  messages: []
61
53
  });
62
- }
63
- catch (err) {
64
- t.error(err);
65
- }
66
- t.end();
67
- });
68
- test('GET: api/schema?url=123', async (t) => {
69
- try {
54
+ });
55
+ it('GET: api/schema?url=123', async () => {
70
56
  const res = await fetch('http://localhost:2000/api/schema?url=123');
71
- t.notOk(res.ok);
72
- t.deepEquals(await res.json(), {
57
+ assert.strictEqual(res.ok, false);
58
+ assert.deepStrictEqual(await res.json(), {
73
59
  status: 400,
74
60
  message: 'url & method params must be used together',
75
61
  messages: []
76
62
  });
77
- }
78
- catch (err) {
79
- t.error(err);
80
- }
81
- t.end();
82
- });
83
- test('GET: api/schema?method=GET&url=/schema', async (t) => {
84
- try {
63
+ });
64
+ it('GET: api/schema?method=GET&url=/schema', async () => {
85
65
  const res = await fetch('http://localhost:2000/api/schema?method=GET&url=/schema');
86
- t.equals(res.status, 200, 'http: 200');
87
- t.deepEquals(Object.keys(await res.json()).sort(), ['query', 'res'].sort());
88
- }
89
- catch (err) {
90
- t.error(err, 'no error');
91
- }
92
- t.end();
93
- });
94
- test('End', async (t) => {
95
- await server.close();
96
- t.end();
66
+ assert.strictEqual(res.status, 200, 'http: 200');
67
+ assert.deepStrictEqual(Object.keys(await res.json()).sort(), ['query', 'res'].sort());
68
+ });
97
69
  });
98
70
  //# 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":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5C,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAE/B,IAAI,MAAM,CAAC;AAEX,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;IAChB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAChC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;YACf,aAAa,EAAC;gBACV,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,IAAI;aACZ;YACD,cAAc,EAAE;gBACZ,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;gBACZ,GAAG,EAAE,IAAI;aACZ;SACJ,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC5C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAExE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE;gBACN,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,EAAC,CAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,KAAK,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,KAAK,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,MAAM,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,QAAQ,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,MAAM,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,OAAO,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,mCAAmC,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAC,cAAc,EAAC,OAAO,EAAC,EAAC,SAAS,EAAC,2BAA2B,EAAC,EAAC,EAAC,cAAc,EAAC,SAAS,EAAC,YAAY,EAAC,2BAA2B,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,EAAC,8BAA8B,EAAC,CAAC,EAAC;aACt9C;SACJ,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC3C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACvE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,2CAA2C;YACpD,QAAQ,EAAE,EAAE;SACf,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACxC,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACpE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,2CAA2C;YACpD,QAAQ,EAAE,EAAE;SACf,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAEnF,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  import { OpenAPIV3 as Doc } from 'openapi-types'
2
- import { RequestValidation } from './types.js';
3
- import { TSchema } from '@sinclair/typebox';
2
+ import type { RequestValidation } from './types.js';
3
+ import type { TSchema } from '@sinclair/typebox';
4
4
 
5
5
  export type OpenAPIDocumentInput = {
6
6
  openapi?: string,
@@ -76,7 +76,7 @@ export default class Docs {
76
76
  method: Doc.HttpMethods
77
77
  path: string;
78
78
  },
79
- schemas: RequestValidation<any, any, any, any>
79
+ schemas: RequestValidation<TSchema, TSchema, TSchema, TSchema>
80
80
  ): void {
81
81
  const path: Array<string> = [];
82
82
 
package/lib/schema.ts CHANGED
@@ -4,12 +4,15 @@ import path from 'node:path';
4
4
  import morgan from 'morgan';
5
5
  import bodyparser from 'body-parser';
6
6
  import Err from '@openaddresses/batch-error';
7
- import { Static, Type, TSchema } from '@sinclair/typebox';
7
+ import { Type } from '@sinclair/typebox';
8
+ import type { Static, TSchema } from '@sinclair/typebox';
8
9
  import { OpenAPIV3 as Doc } from 'openapi-types'
9
- import { Router, RequestHandler } from 'express'
10
- import { Ajv, ErrorObject } from 'ajv'
10
+ import { Router } from 'express'
11
+ import type { RequestHandler } from 'express'
12
+ import { Ajv } from 'ajv'
13
+ import type { ErrorObject } from 'ajv'
11
14
  import addFormatsModule from 'ajv-formats'
12
- import { RequestValidation } from './types.js';
15
+ import type { RequestValidation } from './types.js';
13
16
  import type { OpenAPIDocumentInput } from './openapi.js'
14
17
  import SchemaAPI from './api.js';
15
18
  import Docs from './openapi.js';
@@ -44,7 +47,7 @@ export default class Schemas {
44
47
  docs: Docs;
45
48
  prefix: string;
46
49
  error: Record<number, TSchema>;
47
- schemas: Map<string, RequestValidation<any, any, any, any>>
50
+ schemas: Map<string, RequestValidation<TSchema, TSchema, TSchema, TSchema>>
48
51
 
49
52
  constructor(
50
53
  router: Router,
@@ -159,11 +162,7 @@ export default class Schemas {
159
162
  const errors: Array<ErrorListItem> = [];
160
163
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
161
164
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
162
- if (errors.length) {
163
- return Err.respond(new Err(
164
- 400, null, `Validation Error GET ${path}`
165
- ), res, errors);
166
- }
165
+ if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
167
166
 
168
167
  const json = res.json;
169
168
  res.json = function(obj) {
@@ -182,7 +181,7 @@ export default class Schemas {
182
181
 
183
182
  this.router.get(path, _handler);
184
183
  } catch (err) {
185
- throw new Error(`Get: ${path}: ` + err)
184
+ throw new Error(`Get: ${path}: ` + err, { cause: err })
186
185
  }
187
186
  }
188
187
 
@@ -211,11 +210,7 @@ export default class Schemas {
211
210
  const errors: Array<ErrorListItem> = [];
212
211
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
213
212
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
214
- if (errors.length) {
215
- return Err.respond(new Err(
216
- 400, null, `Validation Error DELETE ${path}`
217
- ), res, errors);
218
- }
213
+ if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
219
214
 
220
215
  const json = res.json;
221
216
  res.json = function(obj) {
@@ -234,7 +229,7 @@ export default class Schemas {
234
229
 
235
230
  this.router.delete(path, _handler);
236
231
  } catch (err) {
237
- throw new Error(`Delete: ${path}: ` + String(err))
232
+ throw new Error(`Delete: ${path}: ` + String(err), { cause: err })
238
233
  }
239
234
  }
240
235
 
@@ -264,11 +259,7 @@ export default class Schemas {
264
259
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
265
260
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
266
261
  if (bodyValidation && !bodyValidation(req.body)) errors.push({ type: 'Body', errors: bodyValidation.errors as ErrorObject[] });
267
- if (errors.length) {
268
- return Err.respond(new Err(
269
- 400, null, `Validation Error POST ${path}`
270
- ), res, errors);
271
- }
262
+ if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
272
263
 
273
264
  const json = res.json;
274
265
  res.json = function(obj) {
@@ -287,7 +278,7 @@ export default class Schemas {
287
278
 
288
279
  this.router.post(path, _handler);
289
280
  } catch (err) {
290
- throw new Error(`Post: ${path}: ` + String(err))
281
+ throw new Error(`Post: ${path}: ` + String(err), { cause: err })
291
282
  }
292
283
  }
293
284
 
@@ -317,11 +308,7 @@ export default class Schemas {
317
308
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
318
309
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
319
310
  if (bodyValidation && !bodyValidation(req.body)) errors.push({ type: 'Body', errors: bodyValidation.errors as ErrorObject[] });
320
- if (errors.length) {
321
- return Err.respond(new Err(
322
- 400, null, `Validation Error PATCH ${path}`
323
- ), res, errors);
324
- }
311
+ if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
325
312
 
326
313
  const json = res.json;
327
314
  res.json = function(obj) {
@@ -340,7 +327,7 @@ export default class Schemas {
340
327
 
341
328
  this.router.patch(path, _handler);
342
329
  } catch (err) {
343
- throw new Error(`Patch: ${path}: ` + String(err))
330
+ throw new Error(`Patch: ${path}: ` + String(err), { cause: err })
344
331
  }
345
332
  }
346
333
 
@@ -370,11 +357,7 @@ export default class Schemas {
370
357
  if (paramsValidation && !paramsValidation(req.params)) errors.push({ type: 'Params', errors: paramsValidation.errors as ErrorObject[] });
371
358
  if (queryValidation && !queryValidation(req.query)) errors.push({ type: 'Query', errors: queryValidation.errors as ErrorObject[] });
372
359
  if (bodyValidation && !bodyValidation(req.body)) errors.push({ type: 'Body', errors: bodyValidation.errors as ErrorObject[] });
373
- if (errors.length) {
374
- return Err.respond(new Err(
375
- 400, null, `Validation Error PUT ${path}`
376
- ), res, errors);
377
- }
360
+ if (errors.length) return Err.respond(new Err(400, null, 'Validation Error'), res, errors);
378
361
 
379
362
  const json = res.json;
380
363
  res.json = function(obj) {
@@ -393,7 +376,7 @@ export default class Schemas {
393
376
 
394
377
  this.router.put(path, _handler);
395
378
  } catch (err) {
396
- throw new Error(`Put: ${path}: ` + String(err))
379
+ throw new Error(`Put: ${path}: ` + String(err), { cause: err })
397
380
  }
398
381
  }
399
382
 
package/lib/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { TSchema } from '@sinclair/typebox';
1
+ import type { TSchema } from '@sinclair/typebox';
2
2
 
3
3
  export type RequestValidation<
4
4
  TParams extends TSchema,
package/package.json CHANGED
@@ -4,9 +4,12 @@
4
4
  "root": true,
5
5
  "main": "dist/index.js",
6
6
  "types": "index.ts",
7
- "version": "10.22.0",
7
+ "version": "10.24.0",
8
8
  "description": "Strongly Validated JSON Schema support for address",
9
- "repository": "git@github.com:openaddresses/batch-schema",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/openaddresses/batch-schema.git"
12
+ },
10
13
  "author": "ingalls <nick@ingalls.ca>",
11
14
  "license": "MIT",
12
15
  "private": false,
@@ -14,7 +17,7 @@
14
17
  "node": ">= 18"
15
18
  },
16
19
  "scripts": {
17
- "test": "ts-node-test test/**.test.ts",
20
+ "test": "node --import tsx --test test/*.test.ts",
18
21
  "lint": "eslint index.ts lib/ test/",
19
22
  "build": "tsc",
20
23
  "doc": "typedoc index.ts"
@@ -34,11 +37,11 @@
34
37
  "openapi-types": "^12.1.3"
35
38
  },
36
39
  "devDependencies": {
37
- "eslint": "^9.0.0",
38
- "tape": "^5.3.1",
39
- "ts-node-test": "^0.4.3",
40
+ "@eslint/js": "^10.0.1",
41
+ "eslint": "^10.0.0",
42
+ "tsx": "^4.0.0",
40
43
  "typedoc": "^0.28.0",
41
- "typescript": "^5.7.0",
44
+ "typescript": "^6.0.0",
42
45
  "typescript-eslint": "^8.3.0"
43
46
  }
44
47
  }
@@ -1,4 +1,5 @@
1
- import test from 'tape';
1
+ import { describe, it, before, after } from 'node:test';
2
+ import assert from 'node:assert';
2
3
  import express from 'express';
3
4
  import Schema from '../index.js';
4
5
 
@@ -7,21 +8,25 @@ const schema = new Schema(express.Router());
7
8
 
8
9
  app.use('/api', schema.router);
9
10
 
10
- let server;
11
+ let server: ReturnType<typeof app.listen>;
11
12
 
12
- test('start', (t) => {
13
- server = app.listen(2000, async () => {
14
- await schema.api();
15
- t.end();
13
+ describe('Schema Server', () => {
14
+ before((_, done) => {
15
+ server = app.listen(2000, async () => {
16
+ await schema.api();
17
+ done();
18
+ });
16
19
  });
17
- });
18
20
 
19
- test('GET: api/schema', async (t) => {
20
- try {
21
+ after(() => {
22
+ server.close();
23
+ });
24
+
25
+ it('GET: api/schema', async () => {
21
26
  const res = await fetch('http://localhost:2000/api/schema');
22
27
  const body = await res.json();
23
28
 
24
- t.deepEquals(body, {
29
+ assert.deepStrictEqual(body, {
25
30
  'GET /schema':{
26
31
  body: false,
27
32
  query: true,
@@ -33,79 +38,46 @@ test('GET: api/schema', async (t) => {
33
38
  res: true
34
39
  }
35
40
  });
36
- } catch (err) {
37
- t.error(err, 'no error');
38
- }
39
-
40
- t.end();
41
- });
41
+ });
42
42
 
43
- test('GET: api/schema?method=FAKE', async (t) => {
44
- try {
43
+ it('GET: api/schema?method=FAKE', async () => {
45
44
  const res = await fetch('http://localhost:2000/api/schema?method=fake');
46
45
 
47
- t.notOk(res.ok);
46
+ assert.strictEqual(res.ok, false);
48
47
 
49
- t.deepEquals(await res.json(), {
48
+ assert.deepStrictEqual(await res.json(), {
50
49
  status: 400,
51
- message: 'Validation Error GET /schema',
50
+ message: 'Validation Error',
52
51
  messages: [
53
52
  {"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"}]}
54
53
  ]
55
54
  });
56
- } catch (err) {
57
- t.error(err);
58
- }
59
-
60
- t.end();
61
- });
55
+ });
62
56
 
63
- test('GET: api/schema?method=GET', async (t) => {
64
- try {
57
+ it('GET: api/schema?method=GET', async () => {
65
58
  const res = await fetch('http://localhost:2000/api/schema?method=GET');
66
- t.notOk(res.ok);
67
- t.deepEquals(await res.json(), {
59
+ assert.strictEqual(res.ok, false);
60
+ assert.deepStrictEqual(await res.json(), {
68
61
  status: 400,
69
62
  message: 'url & method params must be used together',
70
63
  messages: []
71
64
  });
72
- } catch (err) {
73
- t.error(err);
74
- }
65
+ });
75
66
 
76
- t.end();
77
- });
78
- test('GET: api/schema?url=123', async (t) => {
79
- try {
67
+ it('GET: api/schema?url=123', async () => {
80
68
  const res = await fetch('http://localhost:2000/api/schema?url=123');
81
- t.notOk(res.ok);
82
- t.deepEquals(await res.json(), {
69
+ assert.strictEqual(res.ok, false);
70
+ assert.deepStrictEqual(await res.json(), {
83
71
  status: 400,
84
72
  message: 'url & method params must be used together',
85
73
  messages: []
86
74
  });
87
- } catch (err) {
88
- t.error(err);
89
- }
90
-
91
- t.end();
92
- });
75
+ });
93
76
 
94
- test('GET: api/schema?method=GET&url=/schema', async (t) => {
95
- try {
77
+ it('GET: api/schema?method=GET&url=/schema', async () => {
96
78
  const res = await fetch('http://localhost:2000/api/schema?method=GET&url=/schema');
97
79
 
98
- t.equals(res.status, 200, 'http: 200');
99
- t.deepEquals(Object.keys(await res.json()).sort(), ['query', 'res'].sort());
100
-
101
- } catch (err) {
102
- t.error(err, 'no error');
103
- }
104
-
105
- t.end();
106
- });
107
-
108
- test('End', async (t) => {
109
- await server.close();
110
- t.end();
80
+ assert.strictEqual(res.status, 200, 'http: 200');
81
+ assert.deepStrictEqual(Object.keys(await res.json()).sort(), ['query', 'res'].sort());
82
+ });
111
83
  });
package/tsconfig.json CHANGED
@@ -1,26 +1,23 @@
1
1
  {
2
- "ts-node": {
3
- "esm": true
4
- },
5
2
  "compilerOptions": {
6
3
  "strict": true,
4
+ "strictNullChecks": true,
5
+ "declaration": true,
7
6
  "module": "es2022",
8
- "target": "es2022",
9
7
  "esModuleInterop": true,
10
- "noImplicitAny": false,
11
- "moduleResolution": "node",
8
+ "target": "es2022",
9
+ "lib": ["es2022", "dom"],
10
+ "skipLibCheck": true,
11
+ "noImplicitAny": true,
12
+ "moduleResolution": "bundler",
13
+ "resolveJsonModule": true,
14
+ "verbatimModuleSyntax": true,
12
15
  "sourceMap": true,
13
- "outDir": "dist",
14
- "baseUrl": ".",
15
- "paths": {
16
- "*": [
17
- "node_modules/*"
18
- ]
19
- }
16
+ "outDir": "dist"
20
17
  },
21
18
  "include": [
22
19
  "index.ts",
23
- "lib/**.ts",
24
- "test/**.ts"
20
+ "test/**/*",
21
+ "lib/**/*"
25
22
  ]
26
23
  }