express-zod-api 5.5.3 → 5.6.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 +37 -0
- package/README.md +33 -10
- package/dist/endpoints-factory.d.ts +5 -1
- package/dist/endpoints-factory.js +18 -0
- package/dist/endpoints-factory.js.map +1 -1
- package/dist/middleware.d.ts +6 -0
- package/dist/middleware.js.map +1 -1
- package/dist-esm/endpoints-factory.js +19 -1
- package/dist-esm/endpoints-factory.js.map +1 -1
- package/dist-esm/middleware.js.map +1 -1
- package/dist-esm/package.json +1 -1
- package/package.json +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
## Version 5
|
|
4
4
|
|
|
5
|
+
### v5.6.0
|
|
6
|
+
|
|
7
|
+
- Feature #311. `EndpointsFactory::addExpressMiddleware()` or its alias `use()`.
|
|
8
|
+
- A method to connect a native (regular) `express` middleware to your endpoint(s).
|
|
9
|
+
- You can connect any middleware that has a regular express middleware signature
|
|
10
|
+
`(req, res, next) => void | Promise<void>` and can be supplied to `app.use()`.
|
|
11
|
+
- You can also specify a provider of options for endpoint handlers and next middlewares.
|
|
12
|
+
- You can also specify an error transformer so that the `ResultHandler` would send the status you need.
|
|
13
|
+
- In case the error is not a `HttpError`, the `ResultHandler` will send the status `500`.
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { defaultEndpointsFactory, createHttpError } from "express-zod-api";
|
|
17
|
+
import cors from "cors";
|
|
18
|
+
import { auth } from "express-oauth2-jwt-bearer";
|
|
19
|
+
|
|
20
|
+
const simpleUsage = defaultEndpointsFactory.addExpressMiddleware(
|
|
21
|
+
cors({ credentials: true })
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const advancedUsage = defaultEndpointsFactory.use(auth(), {
|
|
25
|
+
provider: (req) => ({ auth: req.auth }), // optional, can be async
|
|
26
|
+
transformer: (err) => createHttpError(401, err.message), // optional
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### v5.5.6
|
|
31
|
+
|
|
32
|
+
- `winston` version is 3.6.0.
|
|
33
|
+
|
|
34
|
+
### v5.5.5
|
|
35
|
+
|
|
36
|
+
- `winston-transport` version is 4.5.0.
|
|
37
|
+
|
|
38
|
+
### v5.5.4
|
|
39
|
+
|
|
40
|
+
- `express-fileupload` version is 1.3.1.
|
|
41
|
+
|
|
5
42
|
### v5.5.3
|
|
6
43
|
|
|
7
44
|
- `winston` version is 3.5.1.
|
package/README.md
CHANGED
|
@@ -34,16 +34,17 @@ Start your API server with I/O schema validation and custom middlewares in minut
|
|
|
34
34
|
6. [Route path params](#route-path-params)
|
|
35
35
|
7. [Response customization](#response-customization)
|
|
36
36
|
8. [Non-object response](#non-object-response) including file downloads
|
|
37
|
-
9. [
|
|
38
|
-
10. [
|
|
39
|
-
11. [
|
|
40
|
-
12. [
|
|
41
|
-
13. [
|
|
42
|
-
14. [
|
|
43
|
-
15. [
|
|
44
|
-
16. [Enabling
|
|
45
|
-
17. [
|
|
46
|
-
18. [
|
|
37
|
+
9. [Using native express middlewares](#using-native-express-middlewares)
|
|
38
|
+
10. [File uploads](#file-uploads)
|
|
39
|
+
11. [Customizing logger](#customizing-logger)
|
|
40
|
+
12. [Connect to your own express app](#connect-to-your-own-express-app)
|
|
41
|
+
13. [Multiple schemas for one route](#multiple-schemas-for-one-route)
|
|
42
|
+
14. [Serving static files](#serving-static-files)
|
|
43
|
+
15. [Customizing input sources](#customizing-input-sources)
|
|
44
|
+
16. [Enabling compression](#enabling-compression)
|
|
45
|
+
17. [Enabling HTTPS](#enabling-https)
|
|
46
|
+
18. [Informing the frontend about the API](#informing-the-frontend-about-the-api)
|
|
47
|
+
19. [Creating a documentation](#creating-a-documentation)
|
|
47
48
|
5. [Additional hints](#additional-hints)
|
|
48
49
|
1. [How to test endpoints](#how-to-test-endpoints)
|
|
49
50
|
2. [Excessive properties in endpoint output](#excessive-properties-in-endpoint-output)
|
|
@@ -510,6 +511,28 @@ const fileStreamingEndpointsFactory = new EndpointsFactory(
|
|
|
510
511
|
);
|
|
511
512
|
```
|
|
512
513
|
|
|
514
|
+
## Using native express middlewares
|
|
515
|
+
|
|
516
|
+
You can connect any native `express` middleware that can be supplied to `express` method `app.use()`.
|
|
517
|
+
For this purpose the `EndpointsFactory` provides method `addExpressMiddleware()` and its alias `use()`.
|
|
518
|
+
There are also two optional features available: a provider of options and an error transformer for `ResultHandler`.
|
|
519
|
+
In case the error in middleware is not a `HttpError`, the `ResultHandler` will send the status `500`.
|
|
520
|
+
|
|
521
|
+
```typescript
|
|
522
|
+
import { defaultEndpointsFactory, createHttpError } from "express-zod-api";
|
|
523
|
+
import cors from "cors";
|
|
524
|
+
import { auth } from "express-oauth2-jwt-bearer";
|
|
525
|
+
|
|
526
|
+
const simpleUsage = defaultEndpointsFactory.addExpressMiddleware(
|
|
527
|
+
cors({ credentials: true })
|
|
528
|
+
);
|
|
529
|
+
|
|
530
|
+
const advancedUsage = defaultEndpointsFactory.use(auth(), {
|
|
531
|
+
provider: (req) => ({ auth: req.auth }), // optional, can be async
|
|
532
|
+
transformer: (err) => createHttpError(401, err.message), // optional
|
|
533
|
+
});
|
|
534
|
+
```
|
|
535
|
+
|
|
513
536
|
## File uploads
|
|
514
537
|
|
|
515
538
|
You can switch the `Endpoint` to handle requests with the `multipart/form-data` content type instead of JSON by using
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/// <reference types="qs" />
|
|
2
|
+
import { Request, Response } from "express";
|
|
1
3
|
import { z } from "zod";
|
|
2
4
|
import { ApiResponse } from "./api-response";
|
|
3
5
|
import { Endpoint, Handler } from "./endpoint";
|
|
4
6
|
import { FlatObject, IOSchema, Merge } from "./common-helpers";
|
|
5
7
|
import { Method, MethodsDefinition } from "./method";
|
|
6
|
-
import { MiddlewareDefinition } from "./middleware";
|
|
8
|
+
import { ExpressMiddleware, ExpressMiddlewareFeatures, MiddlewareDefinition } from "./middleware";
|
|
7
9
|
import { ResultHandlerDefinition } from "./result-handler";
|
|
8
10
|
declare type BuildProps<IN extends IOSchema, OUT extends IOSchema, MwIN, MwOUT, M extends Method> = {
|
|
9
11
|
input: IN;
|
|
@@ -17,6 +19,8 @@ export declare class EndpointsFactory<MwIN, MwOUT, POS extends ApiResponse, NEG
|
|
|
17
19
|
protected middlewares: MiddlewareDefinition<any, any, any>[];
|
|
18
20
|
constructor(resultHandler: ResultHandlerDefinition<POS, NEG>);
|
|
19
21
|
addMiddleware<IN extends IOSchema, OUT extends FlatObject>(definition: MiddlewareDefinition<IN, MwOUT, OUT>): EndpointsFactory<Merge<IN, MwIN>, MwOUT & OUT, POS, NEG>;
|
|
22
|
+
use: <R extends Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, S extends Response<any, Record<string, any>>, OUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, OUT> | undefined) => EndpointsFactory<MwIN, MwOUT & OUT, POS, NEG>;
|
|
23
|
+
addExpressMiddleware<R extends Request, S extends Response, OUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, OUT>): EndpointsFactory<MwIN, MwOUT & OUT, POS, NEG>;
|
|
20
24
|
addOptions<OUT extends FlatObject>(options: OUT): EndpointsFactory<MwIN, MwOUT & OUT, POS, NEG>;
|
|
21
25
|
build<IN extends IOSchema, OUT extends IOSchema, M extends Method>({ input, output, handler, description, ...rest }: BuildProps<IN, OUT, MwIN, MwOUT, M>): Endpoint<IN, OUT, MwIN, MwOUT, M, POS, NEG>;
|
|
22
26
|
}
|
|
@@ -17,11 +17,29 @@ class EndpointsFactory {
|
|
|
17
17
|
constructor(resultHandler) {
|
|
18
18
|
this.resultHandler = resultHandler;
|
|
19
19
|
this.middlewares = [];
|
|
20
|
+
this.use = this.addExpressMiddleware;
|
|
20
21
|
this.resultHandler = resultHandler;
|
|
21
22
|
}
|
|
22
23
|
addMiddleware(definition) {
|
|
23
24
|
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat(definition), this.resultHandler);
|
|
24
25
|
}
|
|
26
|
+
addExpressMiddleware(middleware, features) {
|
|
27
|
+
const transformer = (features === null || features === void 0 ? void 0 : features.transformer) || ((err) => err);
|
|
28
|
+
const provider = (features === null || features === void 0 ? void 0 : features.provider) || (() => ({}));
|
|
29
|
+
const definition = (0, middleware_1.createMiddleware)({
|
|
30
|
+
input: zod_1.z.object({}),
|
|
31
|
+
middleware: async ({ request, response }) => new Promise((resolve, reject) => {
|
|
32
|
+
const next = (err) => {
|
|
33
|
+
if (err && err instanceof Error) {
|
|
34
|
+
return reject(transformer(err));
|
|
35
|
+
}
|
|
36
|
+
resolve(provider(request, response));
|
|
37
|
+
};
|
|
38
|
+
middleware(request, response, next);
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat(definition), this.resultHandler);
|
|
42
|
+
}
|
|
25
43
|
addOptions(options) {
|
|
26
44
|
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat((0, middleware_1.createMiddleware)({
|
|
27
45
|
input: zod_1.z.object({}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":";;;;;;;;;AACA,6BAAwB;AAExB,yCAA+C;AAC/C,qDAA0E;AAE1E,6CAKsB;AACtB,iCAAiD;AACjD,qDAG0B;AAe1B,MAAa,gBAAgB;IAQ3B,YAAsB,aAAgD;QAAhD,kBAAa,GAAb,aAAa,CAAmC;QAF5D,gBAAW,GAA0C,EAAE,CAAC;QA+B3D,QAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;QA5BrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAkBM,aAAa,CAClB,UAAgD;QAEhD,OAAO,uBAAA,gBAAgB,oCAAQ,MAAxB,gBAAgB,EACrB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EACnC,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAIM,oBAAoB,CAKzB,UAAmC,EACnC,QAA+C;QAE/C,MAAM,WAAW,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,KAAI,CAAC,CAAC,GAAU,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAU,CAAA,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAA,6BAAgB,EAAC;YAClC,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC1C,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnC,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE,EAAE;oBACzB,IAAI,GAAG,IAAI,GAAG,YAAY,KAAK,EAAE;wBAC/B,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjC;oBACD,OAAO,CAAC,QAAQ,CAAC,OAAY,EAAE,QAAa,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC;gBACF,UAAU,CAAC,OAAY,EAAE,QAAa,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC,CAAC;SACL,CAAC,CAAC;QACH,OAAO,uBAAA,gBAAgB,oCAAQ,MAAxB,gBAAgB,EACrB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EACnC,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAEM,UAAU,CAAyB,OAAY;QACpD,OAAO,uBAAA,gBAAgB,oCAAQ,MAAxB,gBAAgB,EACrB,IAAI,CAAC,WAAW,CAAC,MAAM,CACrB,IAAA,6BAAgB,EAAC;YACf,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;SAChC,CAAC,CACH,EACD,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAEM,KAAK,CAA8D,EACxE,KAAK,EACL,MAAM,EACN,OAAO,EACP,WAAW,EACX,GAAG,IAAI,EAC6B;QACpC,OAAO,IAAI,mBAAQ,CAAoC;YACrD,OAAO;YACP,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,MAAM;YACpB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAA,0BAAS,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAQ,CAAC;YAC1D,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAlGD,4CAkGC;oFAhFG,WAAkD,EAClD,aAAoD;IAEpD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAClC,aAAa,CACd,CAAC;IACF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AA0EU,QAAA,uBAAuB,GAAG,IAAI,gBAAgB,CACzD,qCAAoB,CACrB,CAAC"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Request, Response } from "express";
|
|
2
|
+
import { HttpError } from "http-errors";
|
|
2
3
|
import { Logger } from "winston";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
import { FlatObject, IOSchema } from "./common-helpers";
|
|
@@ -15,4 +16,9 @@ export interface MiddlewareDefinition<IN extends IOSchema, OPT, OUT extends Flat
|
|
|
15
16
|
middleware: Middleware<z.output<IN>, OPT, OUT>;
|
|
16
17
|
}
|
|
17
18
|
export declare const createMiddleware: <IN extends IOSchema, OPT, OUT extends FlatObject>(definition: MiddlewareDefinition<IN, OPT, OUT>) => MiddlewareDefinition<IN, OPT, OUT>;
|
|
19
|
+
export declare type ExpressMiddleware<R extends Request, S extends Response> = (request: R, response: S, next: (error?: any) => void) => void | Promise<void>;
|
|
20
|
+
export interface ExpressMiddlewareFeatures<R extends Request, S extends Response, OUT extends FlatObject> {
|
|
21
|
+
provider?: (request: R, response: S) => OUT | Promise<OUT>;
|
|
22
|
+
transformer?: (err: Error) => HttpError | Error;
|
|
23
|
+
}
|
|
18
24
|
export {};
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AA2BO,MAAM,gBAAgB,GAAG,CAK9B,UAA8C,EAC9C,EAAE,CAAC,UAAU,CAAC;AANH,QAAA,gBAAgB,oBAMb"}
|
|
@@ -7,18 +7,36 @@ var _a, _EndpointsFactory_create;
|
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
import { Endpoint } from "./endpoint.js";
|
|
9
9
|
import { hasUpload } from "./common-helpers.js";
|
|
10
|
-
import { createMiddleware } from "./middleware.js";
|
|
10
|
+
import { createMiddleware, } from "./middleware.js";
|
|
11
11
|
import { mimeJson, mimeMultipart } from "./mime.js";
|
|
12
12
|
import { defaultResultHandler, } from "./result-handler.js";
|
|
13
13
|
export class EndpointsFactory {
|
|
14
14
|
constructor(resultHandler) {
|
|
15
15
|
this.resultHandler = resultHandler;
|
|
16
16
|
this.middlewares = [];
|
|
17
|
+
this.use = this.addExpressMiddleware;
|
|
17
18
|
this.resultHandler = resultHandler;
|
|
18
19
|
}
|
|
19
20
|
addMiddleware(definition) {
|
|
20
21
|
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat(definition), this.resultHandler);
|
|
21
22
|
}
|
|
23
|
+
addExpressMiddleware(middleware, features) {
|
|
24
|
+
const transformer = (features === null || features === void 0 ? void 0 : features.transformer) || ((err) => err);
|
|
25
|
+
const provider = (features === null || features === void 0 ? void 0 : features.provider) || (() => ({}));
|
|
26
|
+
const definition = createMiddleware({
|
|
27
|
+
input: z.object({}),
|
|
28
|
+
middleware: async ({ request, response }) => new Promise((resolve, reject) => {
|
|
29
|
+
const next = (err) => {
|
|
30
|
+
if (err && err instanceof Error) {
|
|
31
|
+
return reject(transformer(err));
|
|
32
|
+
}
|
|
33
|
+
resolve(provider(request, response));
|
|
34
|
+
};
|
|
35
|
+
middleware(request, response, next);
|
|
36
|
+
}),
|
|
37
|
+
});
|
|
38
|
+
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat(definition), this.resultHandler);
|
|
39
|
+
}
|
|
22
40
|
addOptions(options) {
|
|
23
41
|
return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat(createMiddleware({
|
|
24
42
|
input: z.object({}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAK9B,UAA8C,EAC9C,EAAE,CAAC,UAAU,CAAC"}
|
package/dist-esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","version":"5.
|
|
1
|
+
{"type":"module","version":"5.6.0"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-zod-api",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.6.0",
|
|
4
4
|
"description": "A Typescript library to help you get an API server up and running with I/O schema validation and custom middlewares in minutes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"@types/node": "*",
|
|
42
42
|
"compression": "1.7.4",
|
|
43
43
|
"express": "4.17.2",
|
|
44
|
-
"express-fileupload": "1.
|
|
44
|
+
"express-fileupload": "1.3.1",
|
|
45
45
|
"http-errors": "2.0.0",
|
|
46
46
|
"mime": "3.0.0",
|
|
47
47
|
"openapi3-ts": "2.0.1",
|
|
48
48
|
"ramda": "0.28.0",
|
|
49
49
|
"triple-beam": "1.3.0",
|
|
50
|
-
"winston": "3.
|
|
50
|
+
"winston": "3.6.0",
|
|
51
51
|
"zod": "3.11.6"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@tsconfig/node12": "^1.0.9",
|
|
67
|
+
"@types/cors": "^2.8.12",
|
|
67
68
|
"@types/jest": "^27.0.2",
|
|
68
69
|
"@types/mime": "^2.0.3",
|
|
69
70
|
"@types/node-fetch": "^2.5.12",
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
"@types/triple-beam": "^1.3.2",
|
|
72
73
|
"@typescript-eslint/eslint-plugin": "^5.4.0",
|
|
73
74
|
"@typescript-eslint/parser": "^5.4.0",
|
|
75
|
+
"cors": "^2.8.5",
|
|
74
76
|
"eslint": "^8.2.0",
|
|
75
77
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
76
78
|
"eslint-config-airbnb-typescript": "^16.0.0",
|