@tsed/platform-express 7.0.0-beta.11 → 7.0.0-beta.14

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.
Files changed (51) hide show
  1. package/jest.config.js +14 -0
  2. package/lib/cjs/components/PlatformExpress.js +66 -66
  3. package/lib/cjs/components/PlatformExpress.js.map +1 -1
  4. package/lib/cjs/index.js +0 -7
  5. package/lib/cjs/index.js.map +1 -1
  6. package/lib/cjs/interfaces/PlatformExpressSettings.js.map +1 -1
  7. package/lib/esm/components/PlatformExpress.js +66 -67
  8. package/lib/esm/components/PlatformExpress.js.map +1 -1
  9. package/lib/esm/index.js +0 -7
  10. package/lib/esm/index.js.map +1 -1
  11. package/lib/esm/interfaces/PlatformExpressSettings.js.map +1 -1
  12. package/lib/types/components/PlatformExpress.d.ts +11 -26
  13. package/lib/types/index.d.ts +0 -7
  14. package/lib/types/interfaces/PlatformExpressSettings.d.ts +4 -4
  15. package/package.json +27 -19
  16. package/readme.md +2 -1
  17. package/lib/cjs/decorators/caseSensitive.js +0 -31
  18. package/lib/cjs/decorators/caseSensitive.js.map +0 -1
  19. package/lib/cjs/decorators/mergeParams.js +0 -31
  20. package/lib/cjs/decorators/mergeParams.js.map +0 -1
  21. package/lib/cjs/decorators/routerSettings.js +0 -32
  22. package/lib/cjs/decorators/routerSettings.js.map +0 -1
  23. package/lib/cjs/decorators/strict.js +0 -31
  24. package/lib/cjs/decorators/strict.js.map +0 -1
  25. package/lib/cjs/services/PlatformExpressHandler.js +0 -31
  26. package/lib/cjs/services/PlatformExpressHandler.js.map +0 -1
  27. package/lib/cjs/services/PlatformExpressRequest.js +0 -12
  28. package/lib/cjs/services/PlatformExpressRequest.js.map +0 -1
  29. package/lib/cjs/services/PlatformExpressResponse.js +0 -12
  30. package/lib/cjs/services/PlatformExpressResponse.js.map +0 -1
  31. package/lib/esm/decorators/caseSensitive.js +0 -27
  32. package/lib/esm/decorators/caseSensitive.js.map +0 -1
  33. package/lib/esm/decorators/mergeParams.js +0 -27
  34. package/lib/esm/decorators/mergeParams.js.map +0 -1
  35. package/lib/esm/decorators/routerSettings.js +0 -28
  36. package/lib/esm/decorators/routerSettings.js.map +0 -1
  37. package/lib/esm/decorators/strict.js +0 -27
  38. package/lib/esm/decorators/strict.js.map +0 -1
  39. package/lib/esm/services/PlatformExpressHandler.js +0 -27
  40. package/lib/esm/services/PlatformExpressHandler.js.map +0 -1
  41. package/lib/esm/services/PlatformExpressRequest.js +0 -8
  42. package/lib/esm/services/PlatformExpressRequest.js.map +0 -1
  43. package/lib/esm/services/PlatformExpressResponse.js +0 -8
  44. package/lib/esm/services/PlatformExpressResponse.js.map +0 -1
  45. package/lib/types/decorators/caseSensitive.d.ts +0 -23
  46. package/lib/types/decorators/mergeParams.d.ts +0 -23
  47. package/lib/types/decorators/routerSettings.d.ts +0 -24
  48. package/lib/types/decorators/strict.d.ts +0 -23
  49. package/lib/types/services/PlatformExpressHandler.d.ts +0 -9
  50. package/lib/types/services/PlatformExpressRequest.d.ts +0 -8
  51. package/lib/types/services/PlatformExpressResponse.d.ts +0 -14
package/jest.config.js ADDED
@@ -0,0 +1,14 @@
1
+ // For a detailed explanation regarding each configuration property, visit:
2
+ // https://jestjs.io/docs/en/configuration.html
3
+
4
+ module.exports = {
5
+ ...require("@tsed/jest-config")(__dirname, "platform-express"),
6
+ coverageThreshold: {
7
+ global: {
8
+ statements: 100,
9
+ branches: 78.94,
10
+ functions: 100,
11
+ lines: 100
12
+ }
13
+ }
14
+ };
@@ -1,39 +1,24 @@
1
1
  "use strict";
2
- var _PlatformExpress_multer;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.PlatformExpress = void 0;
5
4
  const tslib_1 = require("tslib");
6
- const express_1 = tslib_1.__importDefault(require("express"));
7
5
  const common_1 = require("@tsed/common");
8
- const util_1 = require("util");
9
6
  const core_1 = require("@tsed/core");
10
- const PlatformExpressHandler_1 = require("../services/PlatformExpressHandler");
11
- const PlatformExpressResponse_1 = require("../services/PlatformExpressResponse");
12
- const PlatformExpressRequest_1 = require("../services/PlatformExpressRequest");
7
+ const platform_router_1 = require("@tsed/platform-router");
8
+ const express_1 = tslib_1.__importDefault(require("express"));
9
+ const util_1 = require("util");
13
10
  const staticsMiddleware_1 = require("../middlewares/staticsMiddleware");
14
11
  /**
15
12
  * @platform
16
13
  * @express
17
14
  */
18
15
  class PlatformExpress {
16
+ injector;
17
+ providers = [];
18
+ #multer;
19
19
  constructor(injector) {
20
20
  this.injector = injector;
21
- this.providers = [
22
- {
23
- provide: common_1.PlatformHandler,
24
- useClass: PlatformExpressHandler_1.PlatformExpressHandler
25
- },
26
- {
27
- provide: common_1.PlatformResponse,
28
- useClass: PlatformExpressResponse_1.PlatformExpressResponse
29
- },
30
- {
31
- provide: common_1.PlatformRequest,
32
- useClass: PlatformExpressRequest_1.PlatformExpressRequest
33
- }
34
- ];
35
- _PlatformExpress_multer.set(this, void 0);
36
- Promise.resolve().then(() => tslib_1.__importStar(require("multer"))).then(({ default: multer }) => (tslib_1.__classPrivateFieldSet(this, _PlatformExpress_multer, multer, "f")));
21
+ Promise.resolve().then(() => tslib_1.__importStar(require("multer"))).then(({ default: multer }) => (this.#multer = multer));
37
22
  }
38
23
  /**
39
24
  * Create new serverless application. In this mode, the component scan are disabled.
@@ -58,21 +43,15 @@ class PlatformExpress {
58
43
  });
59
44
  }
60
45
  onInit() {
61
- this.injector.settings.middlewares = (this.injector.settings.middlewares || []).filter((middleware) => {
46
+ const middlewares = this.injector.settings.get("middlewares", []);
47
+ this.injector.settings.set("middlewares", middlewares.filter((middleware) => {
62
48
  const name = (0, core_1.nameOf)(middleware);
63
49
  if (["textParser", "jsonParser", "rawParser", "urlencodedParser"].includes(name)) {
64
50
  this.injector.settings.set(`express.bodyParser.${name.replace("Parser", "")}`, () => middleware);
65
51
  return false;
66
52
  }
67
53
  return true;
68
- });
69
- }
70
- useRouter() {
71
- const { logger } = this.injector;
72
- const app = this.injector.get(common_1.PlatformApplication);
73
- logger.debug("Mount app router");
74
- app.getApp().use(app.getRouter());
75
- return this;
54
+ }));
76
55
  }
77
56
  async beforeLoadRoutes() {
78
57
  const injector = this.injector;
@@ -80,34 +59,75 @@ class PlatformExpress {
80
59
  // disable x-powered-by header
81
60
  injector.settings.get("env") === core_1.Env.PROD && app.getApp().disable("x-powered-by");
82
61
  await this.configureViewsEngine();
62
+ this.useContext();
83
63
  }
84
64
  async afterLoadRoutes() {
85
- const injector = this.injector;
86
65
  const app = this.injector.get(common_1.PlatformApplication);
66
+ const platformExceptions = this.injector.get(common_1.PlatformExceptions);
87
67
  // NOT FOUND
88
68
  app.use((req, res, next) => {
89
- var _a;
90
- !res.headersSent && ((_a = injector.get(common_1.PlatformExceptions)) === null || _a === void 0 ? void 0 : _a.resourceNotFound(req.$ctx));
69
+ const $ctx = (0, common_1.getContext)();
70
+ !$ctx.isDone() && platformExceptions.resourceNotFound($ctx);
91
71
  });
92
72
  // EXCEPTION FILTERS
93
73
  app.use((err, req, res, next) => {
94
- var _a;
95
- !res.headersSent && ((_a = injector.get(common_1.PlatformExceptions)) === null || _a === void 0 ? void 0 : _a.catch(err, req.$ctx));
74
+ const $ctx = (0, common_1.getContext)();
75
+ !$ctx.isDone() && platformExceptions.catch(err, $ctx);
96
76
  });
97
77
  }
78
+ mapLayers(layers) {
79
+ const app = this.getPlatformApplication();
80
+ const rawApp = app.getApp();
81
+ layers.forEach((layer) => {
82
+ switch (layer.method) {
83
+ case "statics":
84
+ rawApp.use(layer.path, this.statics(layer.path, layer.opts));
85
+ return;
86
+ }
87
+ rawApp[layer.method](...layer.getArgs());
88
+ });
89
+ }
90
+ mapHandler(handler, metadata) {
91
+ switch (metadata.type) {
92
+ case platform_router_1.PlatformHandlerType.RAW_ERR_FN:
93
+ return (error, req, res, next) => handler(error, req, res, (0, common_1.bindContext)(next));
94
+ case platform_router_1.PlatformHandlerType.RAW_FN:
95
+ return (req, res, next) => handler(req, res, (0, common_1.bindContext)(next));
96
+ case platform_router_1.PlatformHandlerType.ERR_MIDDLEWARE:
97
+ return async (error, req, res, next) => {
98
+ const $ctx = (0, common_1.getContext)();
99
+ $ctx.next = next;
100
+ $ctx.error = error;
101
+ await handler($ctx);
102
+ };
103
+ default:
104
+ return async (req, res, next) => {
105
+ const $ctx = (0, common_1.getContext)();
106
+ $ctx.next = next;
107
+ await handler($ctx);
108
+ };
109
+ }
110
+ }
98
111
  useContext() {
99
- const { logger } = this.injector;
100
- logger.debug("Mount app context");
101
- const invoke = (0, common_1.createContext)(this.injector);
102
- const app = this.injector.get(common_1.PlatformApplication);
103
- app.getApp().use(async (request, response, next) => {
104
- await invoke({ request, response });
112
+ const app = this.getPlatformApplication();
113
+ app.use(async (request, response, next) => {
114
+ const $ctx = (0, common_1.getContext)();
115
+ $ctx.upgrade({ request, response });
105
116
  return next();
106
117
  });
107
118
  return this;
108
119
  }
120
+ app() {
121
+ const app = this.injector.settings.get("express.app") || (0, express_1.default)();
122
+ return {
123
+ app,
124
+ callback() {
125
+ return app;
126
+ }
127
+ };
128
+ }
109
129
  multipart(options) {
110
- const m = tslib_1.__classPrivateFieldGet(this, _PlatformExpress_multer, "f").call(this, options);
130
+ const m = this.#multer(options);
111
131
  const makePromise = (multer, name) => {
112
132
  // istanbul ignore next
113
133
  if (!multer[name])
@@ -125,28 +145,6 @@ class PlatformExpress {
125
145
  makePromise(m, "single");
126
146
  return m;
127
147
  }
128
- app() {
129
- const app = this.injector.settings.get("express.app") || (0, express_1.default)();
130
- return {
131
- app,
132
- callback() {
133
- return app;
134
- }
135
- };
136
- }
137
- router(routerOptions = {}) {
138
- var _a;
139
- const options = Object.assign({
140
- mergeParams: true
141
- }, ((_a = this.injector.settings.express) === null || _a === void 0 ? void 0 : _a.router) || {}, routerOptions);
142
- const router = express_1.default.Router(options);
143
- return {
144
- router,
145
- callback() {
146
- return router;
147
- }
148
- };
149
- }
150
148
  statics(endpoint, options) {
151
149
  const { root, ...props } = options;
152
150
  return (0, staticsMiddleware_1.staticsMiddleware)(root, props);
@@ -169,6 +167,9 @@ class PlatformExpress {
169
167
  }
170
168
  return parser({ ...options, ...additionalOptions });
171
169
  }
170
+ getPlatformApplication() {
171
+ return this.injector.get(common_1.PlatformApplication);
172
+ }
172
173
  async configureViewsEngine() {
173
174
  const injector = this.injector;
174
175
  const app = this.injector.get(common_1.PlatformApplication);
@@ -196,5 +197,4 @@ class PlatformExpress {
196
197
  }
197
198
  }
198
199
  exports.PlatformExpress = PlatformExpress;
199
- _PlatformExpress_multer = new WeakMap();
200
200
  //# sourceMappingURL=PlatformExpress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import type multer from \"multer\";\nimport Express, {RouterOptions} from \"express\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {\n createContext,\n InjectorService,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformHandler,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformRequest,\n PlatformResponse,\n PlatformStaticsOptions\n} from \"@tsed/common\";\nimport {promisify} from \"util\";\nimport {Env, isFunction, nameOf, Type} from \"@tsed/core\";\nimport {PlatformExpressHandler} from \"../services/PlatformExpressHandler\";\nimport {PlatformExpressResponse} from \"../services/PlatformExpressResponse\";\nimport {PlatformExpressRequest} from \"../services/PlatformExpressRequest\";\nimport {staticsMiddleware} from \"../middlewares/staticsMiddleware\";\nimport {PlatformExpressStaticsOptions} from \"../interfaces/PlatformExpressStaticsOptions\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\n\ndeclare module \"express\" {\n export interface Request {\n id: string;\n $ctx: PlatformContext;\n }\n}\n\ndeclare global {\n namespace TsED {\n export interface Router extends Express.Router {}\n\n export interface Application extends Express.Application {}\n\n export interface StaticsOptions extends PlatformExpressStaticsOptions {}\n\n export interface Request extends Express.Request {\n id: string;\n $ctx: PlatformContext;\n }\n }\n}\n\n/**\n * @platform\n * @express\n */\nexport class PlatformExpress implements PlatformAdapter<Express.Application, Express.Router> {\n readonly providers = [\n {\n provide: PlatformHandler,\n useClass: PlatformExpressHandler\n },\n {\n provide: PlatformResponse,\n useClass: PlatformExpressResponse\n },\n {\n provide: PlatformRequest,\n useClass: PlatformExpressRequest\n }\n ];\n #multer: typeof multer;\n\n constructor(protected injector: InjectorService) {\n import(\"multer\").then(({default: multer}) => (this.#multer = multer));\n }\n\n /**\n * Create new serverless application. In this mode, the component scan are disabled.\n * @param module\n * @param settings\n */\n static create(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.create<Express.Application, Express.Router>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n /**\n * Bootstrap a server application\n * @param module\n * @param settings\n */\n static async bootstrap(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.bootstrap<Express.Application, Express.Router>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n onInit() {\n this.injector.settings.middlewares = (this.injector.settings.middlewares || []).filter((middleware) => {\n const name = nameOf(middleware);\n if ([\"textParser\", \"jsonParser\", \"rawParser\", \"urlencodedParser\"].includes(name)) {\n this.injector.settings.set(`express.bodyParser.${name.replace(\"Parser\", \"\")}`, () => middleware);\n return false;\n }\n\n return true;\n });\n }\n\n useRouter(): this {\n const {logger} = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n logger.debug(\"Mount app router\");\n app.getApp().use(app.getRouter());\n\n return this;\n }\n\n async beforeLoadRoutes() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n // disable x-powered-by header\n injector.settings.get(\"env\") === Env.PROD && app.getApp().disable(\"x-powered-by\");\n\n await this.configureViewsEngine();\n }\n\n async afterLoadRoutes() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n // NOT FOUND\n app.use((req: any, res: any, next: any) => {\n !res.headersSent && injector.get<PlatformExceptions>(PlatformExceptions)?.resourceNotFound(req.$ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n !res.headersSent && injector.get<PlatformExceptions>(PlatformExceptions)?.catch(err, req.$ctx);\n });\n }\n\n useContext(): this {\n const {logger} = this.injector;\n\n logger.debug(\"Mount app context\");\n\n const invoke = createContext(this.injector);\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n app.getApp().use(async (request: any, response: any, next: any) => {\n await invoke({request, response});\n\n return next();\n });\n\n return this;\n }\n\n multipart(options: PlatformMulterSettings): PlatformMulter {\n const m = this.#multer(options);\n\n const makePromise = (multer: any, name: string) => {\n // istanbul ignore next\n if (!multer[name]) return;\n\n const fn = multer[name];\n\n multer[name] = function apply(...args: any[]) {\n const middleware = Reflect.apply(fn, this, args);\n\n return (req: any, res: any) => promisify(middleware)(req, res);\n };\n };\n\n makePromise(m, \"any\");\n makePromise(m, \"array\");\n makePromise(m, \"fields\");\n makePromise(m, \"none\");\n makePromise(m, \"single\");\n\n return m;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n return {\n app,\n callback() {\n return app;\n }\n };\n }\n\n router(routerOptions: Partial<RouterOptions> = {}) {\n const options = Object.assign(\n {\n mergeParams: true\n },\n this.injector.settings.express?.router || {},\n routerOptions\n );\n\n const router = Express.Router(options);\n\n return {\n router,\n callback() {\n return router;\n }\n };\n }\n\n statics(endpoint: string, options: PlatformStaticsOptions) {\n const {root, ...props} = options;\n\n return staticsMiddleware(root, props);\n }\n\n bodyParser(type: \"json\" | \"raw\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n let parser: any = Express[type];\n let options: OptionsJson & OptionsText & OptionsUrlencoded = {};\n\n if (isFunction(opts)) {\n parser = opts;\n options = {};\n }\n\n switch (type) {\n case \"urlencoded\":\n options.extended = true;\n break;\n case \"raw\":\n options.type = () => true;\n break;\n }\n\n return parser({...options, ...additionalOptions});\n }\n\n private async configureViewsEngine() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n try {\n const {exists, disabled} = this.injector.settings.get(\"views\") || {};\n\n if (exists && !disabled) {\n const {PlatformViews} = await import(\"@tsed/platform-views\");\n const platformViews = injector.get<PlatformViews>(PlatformViews)!;\n const express = app.getApp();\n\n platformViews.getEngines().forEach(({extension, engine}) => {\n express.engine(extension, engine.render);\n });\n\n platformViews.viewEngine && express.set(\"view engine\", platformViews.viewEngine);\n platformViews.root && express.set(\"views\", platformViews.root);\n }\n } catch (error) {\n // istanbul ignore next\n injector.logger.warn({\n event: \"PLATFORM_VIEWS_ERROR\",\n message: \"Unable to configure the PlatformViews service on your environment.\",\n error\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n bindContext,\n getContext,\n InjectorService,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformStaticsOptions\n} from \"@tsed/common\";\nimport {Env, isFunction, nameOf, Type} from \"@tsed/core\";\nimport {PlatformHandlerMetadata, PlatformHandlerType, PlatformLayer} from \"@tsed/platform-router\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\nimport Express from \"express\";\nimport type multer from \"multer\";\nimport {promisify} from \"util\";\nimport {PlatformExpressStaticsOptions} from \"../interfaces/PlatformExpressStaticsOptions\";\nimport {staticsMiddleware} from \"../middlewares/staticsMiddleware\";\n\ndeclare module \"express\" {\n export interface Request {\n id: string;\n $ctx: PlatformContext;\n }\n}\n\ndeclare global {\n namespace TsED {\n // export interface Router extends Express.Router {}\n\n export interface Application extends Express.Application {}\n\n export interface StaticsOptions extends PlatformExpressStaticsOptions {}\n\n export interface Request extends Express.Request {\n id: string;\n $ctx: PlatformContext;\n }\n }\n}\n\n/**\n * @platform\n * @express\n */\nexport class PlatformExpress implements PlatformAdapter<Express.Application> {\n readonly providers = [];\n #multer: typeof multer;\n\n constructor(protected injector: InjectorService) {\n import(\"multer\").then(({default: multer}) => (this.#multer = multer));\n }\n\n /**\n * Create new serverless application. In this mode, the component scan are disabled.\n * @param module\n * @param settings\n */\n static create(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.create<Express.Application>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n /**\n * Bootstrap a server application\n * @param module\n * @param settings\n */\n static async bootstrap(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.bootstrap<Express.Application>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n onInit() {\n const middlewares = this.injector.settings.get(\"middlewares\", []);\n\n this.injector.settings.set(\n \"middlewares\",\n middlewares.filter((middleware) => {\n const name = nameOf(middleware);\n if ([\"textParser\", \"jsonParser\", \"rawParser\", \"urlencodedParser\"].includes(name)) {\n this.injector.settings.set(`express.bodyParser.${name.replace(\"Parser\", \"\")}`, () => middleware);\n return false;\n }\n\n return true;\n })\n );\n }\n\n async beforeLoadRoutes() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n // disable x-powered-by header\n injector.settings.get(\"env\") === Env.PROD && app.getApp().disable(\"x-powered-by\");\n\n await this.configureViewsEngine();\n this.useContext();\n }\n\n async afterLoadRoutes() {\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n const platformExceptions = this.injector.get<PlatformExceptions>(PlatformExceptions)!;\n\n // NOT FOUND\n app.use((req: any, res: any, next: any) => {\n const $ctx = getContext()!;\n !$ctx.isDone() && platformExceptions.resourceNotFound($ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n const $ctx = getContext()!;\n\n !$ctx.isDone() && platformExceptions.catch(err, $ctx);\n });\n }\n\n mapLayers(layers: PlatformLayer[]) {\n const app = this.getPlatformApplication();\n const rawApp: any = app.getApp();\n\n layers.forEach((layer) => {\n switch (layer.method) {\n case \"statics\":\n rawApp.use(layer.path, this.statics(layer.path as string, layer.opts as any));\n return;\n }\n\n rawApp[layer.method](...layer.getArgs());\n });\n }\n\n mapHandler(handler: Function, metadata: PlatformHandlerMetadata) {\n switch (metadata.type) {\n case PlatformHandlerType.RAW_ERR_FN:\n return (error: unknown, req: any, res: any, next: any) => handler(error, req, res, bindContext(next));\n case PlatformHandlerType.RAW_FN:\n return (req: any, res: any, next: any) => handler(req, res, bindContext(next));\n case PlatformHandlerType.ERR_MIDDLEWARE:\n return async (error: unknown, req: any, res: any, next: any) => {\n const $ctx = getContext<PlatformContext>()!;\n $ctx.next = next;\n $ctx.error = error;\n\n await handler($ctx);\n };\n default:\n return async (req: any, res: any, next: any) => {\n const $ctx = getContext<PlatformContext>()!;\n $ctx.next = next;\n\n await handler($ctx);\n };\n }\n }\n\n useContext(): this {\n const app = this.getPlatformApplication();\n\n app.use(async (request: any, response: any, next: any) => {\n const $ctx = getContext<PlatformContext>()!;\n\n $ctx.upgrade({request, response});\n\n return next();\n });\n\n return this;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n return {\n app,\n callback() {\n return app;\n }\n };\n }\n\n multipart(options: PlatformMulterSettings): PlatformMulter {\n const m = this.#multer(options);\n\n const makePromise = (multer: any, name: string) => {\n // istanbul ignore next\n if (!multer[name]) return;\n\n const fn = multer[name];\n\n multer[name] = function apply(...args: any[]) {\n const middleware = Reflect.apply(fn, this, args);\n\n return (req: any, res: any) => promisify(middleware)(req, res);\n };\n };\n\n makePromise(m, \"any\");\n makePromise(m, \"array\");\n makePromise(m, \"fields\");\n makePromise(m, \"none\");\n makePromise(m, \"single\");\n\n return m;\n }\n\n statics(endpoint: string, options: PlatformStaticsOptions) {\n const {root, ...props} = options;\n\n return staticsMiddleware(root, props);\n }\n\n bodyParser(type: \"json\" | \"raw\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n let parser: any = Express[type];\n let options: OptionsJson & OptionsText & OptionsUrlencoded = {};\n\n if (isFunction(opts)) {\n parser = opts;\n options = {};\n }\n\n switch (type) {\n case \"urlencoded\":\n options.extended = true;\n break;\n case \"raw\":\n options.type = () => true;\n break;\n }\n\n return parser({...options, ...additionalOptions});\n }\n\n private getPlatformApplication() {\n return this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n }\n\n private async configureViewsEngine() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n try {\n const {exists, disabled} = this.injector.settings.get(\"views\") || {};\n\n if (exists && !disabled) {\n const {PlatformViews} = await import(\"@tsed/platform-views\");\n const platformViews = injector.get<PlatformViews>(PlatformViews)!;\n const express = app.getApp();\n\n platformViews.getEngines().forEach(({extension, engine}) => {\n express.engine(extension, engine.render);\n });\n\n platformViews.viewEngine && express.set(\"view engine\", platformViews.viewEngine);\n platformViews.root && express.set(\"views\", platformViews.root);\n }\n } catch (error) {\n // istanbul ignore next\n injector.logger.warn({\n event: \"PLATFORM_VIEWS_ERROR\",\n message: \"Unable to configure the PlatformViews service on your environment.\",\n error\n });\n }\n }\n}\n"]}
package/lib/cjs/index.js CHANGED
@@ -6,15 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./exports"), exports);
8
8
  tslib_1.__exportStar(require("./components/PlatformExpress"), exports);
9
- tslib_1.__exportStar(require("./decorators/caseSensitive"), exports);
10
- tslib_1.__exportStar(require("./decorators/mergeParams"), exports);
11
- tslib_1.__exportStar(require("./decorators/routerSettings"), exports);
12
- tslib_1.__exportStar(require("./decorators/strict"), exports);
13
9
  tslib_1.__exportStar(require("./interfaces/PlatformExpressSettings"), exports);
14
10
  tslib_1.__exportStar(require("./interfaces/PlatformExpressStaticsOptions"), exports);
15
11
  tslib_1.__exportStar(require("./interfaces/interfaces"), exports);
16
12
  tslib_1.__exportStar(require("./middlewares/staticsMiddleware"), exports);
17
- tslib_1.__exportStar(require("./services/PlatformExpressHandler"), exports);
18
- tslib_1.__exportStar(require("./services/PlatformExpressRequest"), exports);
19
- tslib_1.__exportStar(require("./services/PlatformExpressResponse"), exports);
20
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAA0B;AAC1B,uEAA6C;AAC7C,qEAA2C;AAC3C,mEAAyC;AACzC,sEAA4C;AAC5C,8DAAoC;AACpC,+EAAqD;AACrD,qFAA2D;AAC3D,kEAAwC;AACxC,0EAAgD;AAChD,4EAAkD;AAClD,4EAAkD;AAClD,6EAAmD","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./exports\";\nexport * from \"./components/PlatformExpress\";\nexport * from \"./decorators/caseSensitive\";\nexport * from \"./decorators/mergeParams\";\nexport * from \"./decorators/routerSettings\";\nexport * from \"./decorators/strict\";\nexport * from \"./interfaces/PlatformExpressSettings\";\nexport * from \"./interfaces/PlatformExpressStaticsOptions\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./middlewares/staticsMiddleware\";\nexport * from \"./services/PlatformExpressHandler\";\nexport * from \"./services/PlatformExpressRequest\";\nexport * from \"./services/PlatformExpressResponse\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oDAA0B;AAC1B,uEAA6C;AAC7C,+EAAqD;AACrD,qFAA2D;AAC3D,kEAAwC;AACxC,0EAAgD","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./exports\";\nexport * from \"./components/PlatformExpress\";\nexport * from \"./interfaces/PlatformExpressSettings\";\nexport * from \"./interfaces/PlatformExpressStaticsOptions\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./middlewares/staticsMiddleware\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformExpressSettings.js","sourceRoot":"","sources":["../../../src/interfaces/PlatformExpressSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {RouterOptions} from \"express\";\nimport type {OptionsJson, OptionsText, Options, OptionsUrlencoded} from \"body-parser\";\nimport type {NextHandleFunction} from \"connect\";\n\nexport interface PlatformExpressSettings {\n /**\n * Global configuration for the Express.Router. See express [documentation](http://expressjs.com/en/api.html#express.router).\n */\n router?: RouterOptions;\n /**\n * Express application\n */\n app?: Express.Application;\n\n /**\n * body parser configuration\n */\n bodyParser?: {\n json?: (opts?: OptionsJson) => NextHandleFunction | OptionsJson;\n text?: (opts?: OptionsText) => NextHandleFunction | OptionsText;\n raw?: (opts?: Options) => NextHandleFunction | Options;\n urlencoded?: (opts?: OptionsUrlencoded) => NextHandleFunction | OptionsUrlencoded;\n };\n}\n"]}
1
+ {"version":3,"file":"PlatformExpressSettings.js","sourceRoot":"","sources":["../../../src/interfaces/PlatformExpressSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {RouterOptions} from \"express\";\nimport type {OptionsJson, OptionsText, Options, OptionsUrlencoded} from \"body-parser\";\nimport type {NextHandleFunction} from \"connect\";\n\nexport interface PlatformExpressSettings {\n /**\n * Global configuration for the Express.Router. See express [documentation](http://expressjs.com/en/api.html#express.router).\n */\n router?: RouterOptions;\n /**\n * Express application\n */\n app?: Express.Application;\n\n /**\n * body parser configuration\n */\n bodyParser?: {\n json?: ((opts?: OptionsJson) => NextHandleFunction) | OptionsJson;\n text?: ((opts?: OptionsText) => NextHandleFunction) | OptionsText;\n raw?: ((opts?: Options) => NextHandleFunction) | Options;\n urlencoded?: ((opts?: OptionsUrlencoded) => NextHandleFunction) | OptionsUrlencoded;\n };\n}\n"]}
@@ -1,36 +1,20 @@
1
- var _PlatformExpress_multer;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
+ import { bindContext, getContext, PlatformApplication, PlatformBuilder, PlatformExceptions } from "@tsed/common";
2
+ import { Env, isFunction, nameOf } from "@tsed/core";
3
+ import { PlatformHandlerType } from "@tsed/platform-router";
3
4
  import Express from "express";
4
- import { createContext, PlatformApplication, PlatformBuilder, PlatformExceptions, PlatformHandler, PlatformRequest, PlatformResponse } from "@tsed/common";
5
5
  import { promisify } from "util";
6
- import { Env, isFunction, nameOf } from "@tsed/core";
7
- import { PlatformExpressHandler } from "../services/PlatformExpressHandler.js";
8
- import { PlatformExpressResponse } from "../services/PlatformExpressResponse.js";
9
- import { PlatformExpressRequest } from "../services/PlatformExpressRequest.js";
10
6
  import { staticsMiddleware } from "../middlewares/staticsMiddleware.js";
11
7
  /**
12
8
  * @platform
13
9
  * @express
14
10
  */
15
11
  export class PlatformExpress {
12
+ injector;
13
+ providers = [];
14
+ #multer;
16
15
  constructor(injector) {
17
16
  this.injector = injector;
18
- this.providers = [
19
- {
20
- provide: PlatformHandler,
21
- useClass: PlatformExpressHandler
22
- },
23
- {
24
- provide: PlatformResponse,
25
- useClass: PlatformExpressResponse
26
- },
27
- {
28
- provide: PlatformRequest,
29
- useClass: PlatformExpressRequest
30
- }
31
- ];
32
- _PlatformExpress_multer.set(this, void 0);
33
- import("multer").then(({ default: multer }) => (__classPrivateFieldSet(this, _PlatformExpress_multer, multer, "f")));
17
+ import("multer").then(({ default: multer }) => (this.#multer = multer));
34
18
  }
35
19
  /**
36
20
  * Create new serverless application. In this mode, the component scan are disabled.
@@ -55,21 +39,15 @@ export class PlatformExpress {
55
39
  });
56
40
  }
57
41
  onInit() {
58
- this.injector.settings.middlewares = (this.injector.settings.middlewares || []).filter((middleware) => {
42
+ const middlewares = this.injector.settings.get("middlewares", []);
43
+ this.injector.settings.set("middlewares", middlewares.filter((middleware) => {
59
44
  const name = nameOf(middleware);
60
45
  if (["textParser", "jsonParser", "rawParser", "urlencodedParser"].includes(name)) {
61
46
  this.injector.settings.set(`express.bodyParser.${name.replace("Parser", "")}`, () => middleware);
62
47
  return false;
63
48
  }
64
49
  return true;
65
- });
66
- }
67
- useRouter() {
68
- const { logger } = this.injector;
69
- const app = this.injector.get(PlatformApplication);
70
- logger.debug("Mount app router");
71
- app.getApp().use(app.getRouter());
72
- return this;
50
+ }));
73
51
  }
74
52
  async beforeLoadRoutes() {
75
53
  const injector = this.injector;
@@ -77,34 +55,75 @@ export class PlatformExpress {
77
55
  // disable x-powered-by header
78
56
  injector.settings.get("env") === Env.PROD && app.getApp().disable("x-powered-by");
79
57
  await this.configureViewsEngine();
58
+ this.useContext();
80
59
  }
81
60
  async afterLoadRoutes() {
82
- const injector = this.injector;
83
61
  const app = this.injector.get(PlatformApplication);
62
+ const platformExceptions = this.injector.get(PlatformExceptions);
84
63
  // NOT FOUND
85
64
  app.use((req, res, next) => {
86
- var _a;
87
- !res.headersSent && ((_a = injector.get(PlatformExceptions)) === null || _a === void 0 ? void 0 : _a.resourceNotFound(req.$ctx));
65
+ const $ctx = getContext();
66
+ !$ctx.isDone() && platformExceptions.resourceNotFound($ctx);
88
67
  });
89
68
  // EXCEPTION FILTERS
90
69
  app.use((err, req, res, next) => {
91
- var _a;
92
- !res.headersSent && ((_a = injector.get(PlatformExceptions)) === null || _a === void 0 ? void 0 : _a.catch(err, req.$ctx));
70
+ const $ctx = getContext();
71
+ !$ctx.isDone() && platformExceptions.catch(err, $ctx);
93
72
  });
94
73
  }
74
+ mapLayers(layers) {
75
+ const app = this.getPlatformApplication();
76
+ const rawApp = app.getApp();
77
+ layers.forEach((layer) => {
78
+ switch (layer.method) {
79
+ case "statics":
80
+ rawApp.use(layer.path, this.statics(layer.path, layer.opts));
81
+ return;
82
+ }
83
+ rawApp[layer.method](...layer.getArgs());
84
+ });
85
+ }
86
+ mapHandler(handler, metadata) {
87
+ switch (metadata.type) {
88
+ case PlatformHandlerType.RAW_ERR_FN:
89
+ return (error, req, res, next) => handler(error, req, res, bindContext(next));
90
+ case PlatformHandlerType.RAW_FN:
91
+ return (req, res, next) => handler(req, res, bindContext(next));
92
+ case PlatformHandlerType.ERR_MIDDLEWARE:
93
+ return async (error, req, res, next) => {
94
+ const $ctx = getContext();
95
+ $ctx.next = next;
96
+ $ctx.error = error;
97
+ await handler($ctx);
98
+ };
99
+ default:
100
+ return async (req, res, next) => {
101
+ const $ctx = getContext();
102
+ $ctx.next = next;
103
+ await handler($ctx);
104
+ };
105
+ }
106
+ }
95
107
  useContext() {
96
- const { logger } = this.injector;
97
- logger.debug("Mount app context");
98
- const invoke = createContext(this.injector);
99
- const app = this.injector.get(PlatformApplication);
100
- app.getApp().use(async (request, response, next) => {
101
- await invoke({ request, response });
108
+ const app = this.getPlatformApplication();
109
+ app.use(async (request, response, next) => {
110
+ const $ctx = getContext();
111
+ $ctx.upgrade({ request, response });
102
112
  return next();
103
113
  });
104
114
  return this;
105
115
  }
116
+ app() {
117
+ const app = this.injector.settings.get("express.app") || Express();
118
+ return {
119
+ app,
120
+ callback() {
121
+ return app;
122
+ }
123
+ };
124
+ }
106
125
  multipart(options) {
107
- const m = __classPrivateFieldGet(this, _PlatformExpress_multer, "f").call(this, options);
126
+ const m = this.#multer(options);
108
127
  const makePromise = (multer, name) => {
109
128
  // istanbul ignore next
110
129
  if (!multer[name])
@@ -122,28 +141,6 @@ export class PlatformExpress {
122
141
  makePromise(m, "single");
123
142
  return m;
124
143
  }
125
- app() {
126
- const app = this.injector.settings.get("express.app") || Express();
127
- return {
128
- app,
129
- callback() {
130
- return app;
131
- }
132
- };
133
- }
134
- router(routerOptions = {}) {
135
- var _a;
136
- const options = Object.assign({
137
- mergeParams: true
138
- }, ((_a = this.injector.settings.express) === null || _a === void 0 ? void 0 : _a.router) || {}, routerOptions);
139
- const router = Express.Router(options);
140
- return {
141
- router,
142
- callback() {
143
- return router;
144
- }
145
- };
146
- }
147
144
  statics(endpoint, options) {
148
145
  const { root, ...props } = options;
149
146
  return staticsMiddleware(root, props);
@@ -166,6 +163,9 @@ export class PlatformExpress {
166
163
  }
167
164
  return parser({ ...options, ...additionalOptions });
168
165
  }
166
+ getPlatformApplication() {
167
+ return this.injector.get(PlatformApplication);
168
+ }
169
169
  async configureViewsEngine() {
170
170
  const injector = this.injector;
171
171
  const app = this.injector.get(PlatformApplication);
@@ -192,5 +192,4 @@ export class PlatformExpress {
192
192
  }
193
193
  }
194
194
  }
195
- _PlatformExpress_multer = new WeakMap();
196
195
  //# sourceMappingURL=PlatformExpress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import type multer from \"multer\";\nimport Express, {RouterOptions} from \"express\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {\n createContext,\n InjectorService,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformHandler,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformRequest,\n PlatformResponse,\n PlatformStaticsOptions\n} from \"@tsed/common\";\nimport {promisify} from \"util\";\nimport {Env, isFunction, nameOf, Type} from \"@tsed/core\";\nimport {PlatformExpressHandler} from \"../services/PlatformExpressHandler\";\nimport {PlatformExpressResponse} from \"../services/PlatformExpressResponse\";\nimport {PlatformExpressRequest} from \"../services/PlatformExpressRequest\";\nimport {staticsMiddleware} from \"../middlewares/staticsMiddleware\";\nimport {PlatformExpressStaticsOptions} from \"../interfaces/PlatformExpressStaticsOptions\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\n\ndeclare module \"express\" {\n export interface Request {\n id: string;\n $ctx: PlatformContext;\n }\n}\n\ndeclare global {\n namespace TsED {\n export interface Router extends Express.Router {}\n\n export interface Application extends Express.Application {}\n\n export interface StaticsOptions extends PlatformExpressStaticsOptions {}\n\n export interface Request extends Express.Request {\n id: string;\n $ctx: PlatformContext;\n }\n }\n}\n\n/**\n * @platform\n * @express\n */\nexport class PlatformExpress implements PlatformAdapter<Express.Application, Express.Router> {\n readonly providers = [\n {\n provide: PlatformHandler,\n useClass: PlatformExpressHandler\n },\n {\n provide: PlatformResponse,\n useClass: PlatformExpressResponse\n },\n {\n provide: PlatformRequest,\n useClass: PlatformExpressRequest\n }\n ];\n #multer: typeof multer;\n\n constructor(protected injector: InjectorService) {\n import(\"multer\").then(({default: multer}) => (this.#multer = multer));\n }\n\n /**\n * Create new serverless application. In this mode, the component scan are disabled.\n * @param module\n * @param settings\n */\n static create(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.create<Express.Application, Express.Router>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n /**\n * Bootstrap a server application\n * @param module\n * @param settings\n */\n static async bootstrap(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.bootstrap<Express.Application, Express.Router>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n onInit() {\n this.injector.settings.middlewares = (this.injector.settings.middlewares || []).filter((middleware) => {\n const name = nameOf(middleware);\n if ([\"textParser\", \"jsonParser\", \"rawParser\", \"urlencodedParser\"].includes(name)) {\n this.injector.settings.set(`express.bodyParser.${name.replace(\"Parser\", \"\")}`, () => middleware);\n return false;\n }\n\n return true;\n });\n }\n\n useRouter(): this {\n const {logger} = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n logger.debug(\"Mount app router\");\n app.getApp().use(app.getRouter());\n\n return this;\n }\n\n async beforeLoadRoutes() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n // disable x-powered-by header\n injector.settings.get(\"env\") === Env.PROD && app.getApp().disable(\"x-powered-by\");\n\n await this.configureViewsEngine();\n }\n\n async afterLoadRoutes() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n // NOT FOUND\n app.use((req: any, res: any, next: any) => {\n !res.headersSent && injector.get<PlatformExceptions>(PlatformExceptions)?.resourceNotFound(req.$ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n !res.headersSent && injector.get<PlatformExceptions>(PlatformExceptions)?.catch(err, req.$ctx);\n });\n }\n\n useContext(): this {\n const {logger} = this.injector;\n\n logger.debug(\"Mount app context\");\n\n const invoke = createContext(this.injector);\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n app.getApp().use(async (request: any, response: any, next: any) => {\n await invoke({request, response});\n\n return next();\n });\n\n return this;\n }\n\n multipart(options: PlatformMulterSettings): PlatformMulter {\n const m = this.#multer(options);\n\n const makePromise = (multer: any, name: string) => {\n // istanbul ignore next\n if (!multer[name]) return;\n\n const fn = multer[name];\n\n multer[name] = function apply(...args: any[]) {\n const middleware = Reflect.apply(fn, this, args);\n\n return (req: any, res: any) => promisify(middleware)(req, res);\n };\n };\n\n makePromise(m, \"any\");\n makePromise(m, \"array\");\n makePromise(m, \"fields\");\n makePromise(m, \"none\");\n makePromise(m, \"single\");\n\n return m;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n return {\n app,\n callback() {\n return app;\n }\n };\n }\n\n router(routerOptions: Partial<RouterOptions> = {}) {\n const options = Object.assign(\n {\n mergeParams: true\n },\n this.injector.settings.express?.router || {},\n routerOptions\n );\n\n const router = Express.Router(options);\n\n return {\n router,\n callback() {\n return router;\n }\n };\n }\n\n statics(endpoint: string, options: PlatformStaticsOptions) {\n const {root, ...props} = options;\n\n return staticsMiddleware(root, props);\n }\n\n bodyParser(type: \"json\" | \"raw\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n let parser: any = Express[type];\n let options: OptionsJson & OptionsText & OptionsUrlencoded = {};\n\n if (isFunction(opts)) {\n parser = opts;\n options = {};\n }\n\n switch (type) {\n case \"urlencoded\":\n options.extended = true;\n break;\n case \"raw\":\n options.type = () => true;\n break;\n }\n\n return parser({...options, ...additionalOptions});\n }\n\n private async configureViewsEngine() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n try {\n const {exists, disabled} = this.injector.settings.get(\"views\") || {};\n\n if (exists && !disabled) {\n const {PlatformViews} = await import(\"@tsed/platform-views\");\n const platformViews = injector.get<PlatformViews>(PlatformViews)!;\n const express = app.getApp();\n\n platformViews.getEngines().forEach(({extension, engine}) => {\n express.engine(extension, engine.render);\n });\n\n platformViews.viewEngine && express.set(\"view engine\", platformViews.viewEngine);\n platformViews.root && express.set(\"views\", platformViews.root);\n }\n } catch (error) {\n // istanbul ignore next\n injector.logger.warn({\n event: \"PLATFORM_VIEWS_ERROR\",\n message: \"Unable to configure the PlatformViews service on your environment.\",\n error\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n bindContext,\n getContext,\n InjectorService,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformStaticsOptions\n} from \"@tsed/common\";\nimport {Env, isFunction, nameOf, Type} from \"@tsed/core\";\nimport {PlatformHandlerMetadata, PlatformHandlerType, PlatformLayer} from \"@tsed/platform-router\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\nimport Express from \"express\";\nimport type multer from \"multer\";\nimport {promisify} from \"util\";\nimport {PlatformExpressStaticsOptions} from \"../interfaces/PlatformExpressStaticsOptions\";\nimport {staticsMiddleware} from \"../middlewares/staticsMiddleware\";\n\ndeclare module \"express\" {\n export interface Request {\n id: string;\n $ctx: PlatformContext;\n }\n}\n\ndeclare global {\n namespace TsED {\n // export interface Router extends Express.Router {}\n\n export interface Application extends Express.Application {}\n\n export interface StaticsOptions extends PlatformExpressStaticsOptions {}\n\n export interface Request extends Express.Request {\n id: string;\n $ctx: PlatformContext;\n }\n }\n}\n\n/**\n * @platform\n * @express\n */\nexport class PlatformExpress implements PlatformAdapter<Express.Application> {\n readonly providers = [];\n #multer: typeof multer;\n\n constructor(protected injector: InjectorService) {\n import(\"multer\").then(({default: multer}) => (this.#multer = multer));\n }\n\n /**\n * Create new serverless application. In this mode, the component scan are disabled.\n * @param module\n * @param settings\n */\n static create(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.create<Express.Application>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n /**\n * Bootstrap a server application\n * @param module\n * @param settings\n */\n static async bootstrap(module: Type<any>, settings: Partial<TsED.Configuration> = {}) {\n return PlatformBuilder.bootstrap<Express.Application>(module, {\n ...settings,\n adapter: PlatformExpress\n });\n }\n\n onInit() {\n const middlewares = this.injector.settings.get(\"middlewares\", []);\n\n this.injector.settings.set(\n \"middlewares\",\n middlewares.filter((middleware) => {\n const name = nameOf(middleware);\n if ([\"textParser\", \"jsonParser\", \"rawParser\", \"urlencodedParser\"].includes(name)) {\n this.injector.settings.set(`express.bodyParser.${name.replace(\"Parser\", \"\")}`, () => middleware);\n return false;\n }\n\n return true;\n })\n );\n }\n\n async beforeLoadRoutes() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n // disable x-powered-by header\n injector.settings.get(\"env\") === Env.PROD && app.getApp().disable(\"x-powered-by\");\n\n await this.configureViewsEngine();\n this.useContext();\n }\n\n async afterLoadRoutes() {\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n const platformExceptions = this.injector.get<PlatformExceptions>(PlatformExceptions)!;\n\n // NOT FOUND\n app.use((req: any, res: any, next: any) => {\n const $ctx = getContext()!;\n !$ctx.isDone() && platformExceptions.resourceNotFound($ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n const $ctx = getContext()!;\n\n !$ctx.isDone() && platformExceptions.catch(err, $ctx);\n });\n }\n\n mapLayers(layers: PlatformLayer[]) {\n const app = this.getPlatformApplication();\n const rawApp: any = app.getApp();\n\n layers.forEach((layer) => {\n switch (layer.method) {\n case \"statics\":\n rawApp.use(layer.path, this.statics(layer.path as string, layer.opts as any));\n return;\n }\n\n rawApp[layer.method](...layer.getArgs());\n });\n }\n\n mapHandler(handler: Function, metadata: PlatformHandlerMetadata) {\n switch (metadata.type) {\n case PlatformHandlerType.RAW_ERR_FN:\n return (error: unknown, req: any, res: any, next: any) => handler(error, req, res, bindContext(next));\n case PlatformHandlerType.RAW_FN:\n return (req: any, res: any, next: any) => handler(req, res, bindContext(next));\n case PlatformHandlerType.ERR_MIDDLEWARE:\n return async (error: unknown, req: any, res: any, next: any) => {\n const $ctx = getContext<PlatformContext>()!;\n $ctx.next = next;\n $ctx.error = error;\n\n await handler($ctx);\n };\n default:\n return async (req: any, res: any, next: any) => {\n const $ctx = getContext<PlatformContext>()!;\n $ctx.next = next;\n\n await handler($ctx);\n };\n }\n }\n\n useContext(): this {\n const app = this.getPlatformApplication();\n\n app.use(async (request: any, response: any, next: any) => {\n const $ctx = getContext<PlatformContext>()!;\n\n $ctx.upgrade({request, response});\n\n return next();\n });\n\n return this;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n return {\n app,\n callback() {\n return app;\n }\n };\n }\n\n multipart(options: PlatformMulterSettings): PlatformMulter {\n const m = this.#multer(options);\n\n const makePromise = (multer: any, name: string) => {\n // istanbul ignore next\n if (!multer[name]) return;\n\n const fn = multer[name];\n\n multer[name] = function apply(...args: any[]) {\n const middleware = Reflect.apply(fn, this, args);\n\n return (req: any, res: any) => promisify(middleware)(req, res);\n };\n };\n\n makePromise(m, \"any\");\n makePromise(m, \"array\");\n makePromise(m, \"fields\");\n makePromise(m, \"none\");\n makePromise(m, \"single\");\n\n return m;\n }\n\n statics(endpoint: string, options: PlatformStaticsOptions) {\n const {root, ...props} = options;\n\n return staticsMiddleware(root, props);\n }\n\n bodyParser(type: \"json\" | \"raw\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n let parser: any = Express[type];\n let options: OptionsJson & OptionsText & OptionsUrlencoded = {};\n\n if (isFunction(opts)) {\n parser = opts;\n options = {};\n }\n\n switch (type) {\n case \"urlencoded\":\n options.extended = true;\n break;\n case \"raw\":\n options.type = () => true;\n break;\n }\n\n return parser({...options, ...additionalOptions});\n }\n\n private getPlatformApplication() {\n return this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n }\n\n private async configureViewsEngine() {\n const injector = this.injector;\n const app = this.injector.get<PlatformApplication<Express.Application>>(PlatformApplication)!;\n\n try {\n const {exists, disabled} = this.injector.settings.get(\"views\") || {};\n\n if (exists && !disabled) {\n const {PlatformViews} = await import(\"@tsed/platform-views\");\n const platformViews = injector.get<PlatformViews>(PlatformViews)!;\n const express = app.getApp();\n\n platformViews.getEngines().forEach(({extension, engine}) => {\n express.engine(extension, engine.render);\n });\n\n platformViews.viewEngine && express.set(\"view engine\", platformViews.viewEngine);\n platformViews.root && express.set(\"views\", platformViews.root);\n }\n } catch (error) {\n // istanbul ignore next\n injector.logger.warn({\n event: \"PLATFORM_VIEWS_ERROR\",\n message: \"Unable to configure the PlatformViews service on your environment.\",\n error\n });\n }\n }\n}\n"]}
package/lib/esm/index.js CHANGED
@@ -3,15 +3,8 @@
3
3
  */
4
4
  export * from "./exports.js";
5
5
  export * from "./components/PlatformExpress.js";
6
- export * from "./decorators/caseSensitive.js";
7
- export * from "./decorators/mergeParams.js";
8
- export * from "./decorators/routerSettings.js";
9
- export * from "./decorators/strict.js";
10
6
  export * from "./interfaces/PlatformExpressSettings.js";
11
7
  export * from "./interfaces/PlatformExpressStaticsOptions.js";
12
8
  export * from "./interfaces/interfaces.js";
13
9
  export * from "./middlewares/staticsMiddleware.js";
14
- export * from "./services/PlatformExpressHandler.js";
15
- export * from "./services/PlatformExpressRequest.js";
16
- export * from "./services/PlatformExpressResponse.js";
17
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./exports\";\nexport * from \"./components/PlatformExpress\";\nexport * from \"./decorators/caseSensitive\";\nexport * from \"./decorators/mergeParams\";\nexport * from \"./decorators/routerSettings\";\nexport * from \"./decorators/strict\";\nexport * from \"./interfaces/PlatformExpressSettings\";\nexport * from \"./interfaces/PlatformExpressStaticsOptions\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./middlewares/staticsMiddleware\";\nexport * from \"./services/PlatformExpressHandler\";\nexport * from \"./services/PlatformExpressRequest\";\nexport * from \"./services/PlatformExpressResponse\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./exports\";\nexport * from \"./components/PlatformExpress\";\nexport * from \"./interfaces/PlatformExpressSettings\";\nexport * from \"./interfaces/PlatformExpressStaticsOptions\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./middlewares/staticsMiddleware\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformExpressSettings.js","sourceRoot":"","sources":["../../../src/interfaces/PlatformExpressSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {RouterOptions} from \"express\";\nimport type {OptionsJson, OptionsText, Options, OptionsUrlencoded} from \"body-parser\";\nimport type {NextHandleFunction} from \"connect\";\n\nexport interface PlatformExpressSettings {\n /**\n * Global configuration for the Express.Router. See express [documentation](http://expressjs.com/en/api.html#express.router).\n */\n router?: RouterOptions;\n /**\n * Express application\n */\n app?: Express.Application;\n\n /**\n * body parser configuration\n */\n bodyParser?: {\n json?: (opts?: OptionsJson) => NextHandleFunction | OptionsJson;\n text?: (opts?: OptionsText) => NextHandleFunction | OptionsText;\n raw?: (opts?: Options) => NextHandleFunction | Options;\n urlencoded?: (opts?: OptionsUrlencoded) => NextHandleFunction | OptionsUrlencoded;\n };\n}\n"]}
1
+ {"version":3,"file":"PlatformExpressSettings.js","sourceRoot":"","sources":["../../../src/interfaces/PlatformExpressSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {RouterOptions} from \"express\";\nimport type {OptionsJson, OptionsText, Options, OptionsUrlencoded} from \"body-parser\";\nimport type {NextHandleFunction} from \"connect\";\n\nexport interface PlatformExpressSettings {\n /**\n * Global configuration for the Express.Router. See express [documentation](http://expressjs.com/en/api.html#express.router).\n */\n router?: RouterOptions;\n /**\n * Express application\n */\n app?: Express.Application;\n\n /**\n * body parser configuration\n */\n bodyParser?: {\n json?: ((opts?: OptionsJson) => NextHandleFunction) | OptionsJson;\n text?: ((opts?: OptionsText) => NextHandleFunction) | OptionsText;\n raw?: ((opts?: Options) => NextHandleFunction) | Options;\n urlencoded?: ((opts?: OptionsUrlencoded) => NextHandleFunction) | OptionsUrlencoded;\n };\n}\n"]}