@tsed/platform-express 7.12.0 → 7.13.1

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.
@@ -42,22 +42,6 @@ let PlatformExpress = PlatformExpress_1 = class PlatformExpress {
42
42
  adapter: PlatformExpress_1
43
43
  });
44
44
  }
45
- // onInit() {
46
- // const middlewares = this.injector.settings.get("middlewares", []);
47
- //
48
- // this.injector.settings.set(
49
- // "middlewares"
50
- // // middlewares.filter((middleware) => {
51
- // // const name = nameOf(middleware);
52
- // // if (["textParser", "jsonParser", "rawParser", "urlencodedParser"].includes(name)) {
53
- // // this.injector.settings.set(`express.bodyParser.${name.replace("Parser", "")}`, () => middleware);
54
- // // return false;
55
- // // }
56
- // //
57
- // // return true;
58
- // // })
59
- // );
60
- // }
61
45
  async beforeLoadRoutes() {
62
46
  const injector = this.injector;
63
47
  const app = this.injector.get(common_1.PlatformApplication);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n InjectorService,\n PlatformProvider,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformHandlerType,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformStaticsOptions,\n runInContext\n} from \"@tsed/common\";\nimport {Env, isFunction, Type} from \"@tsed/core\";\nimport {PlatformHandlerMetadata, PlatformLayer} from \"@tsed/platform-router\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\nimport Express from \"express\";\nimport {IncomingMessage, ServerResponse} from \"http\";\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 */\n@PlatformProvider()\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 }\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} = req;\n !$ctx.isDone() && platformExceptions?.resourceNotFound(req.$ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n const {$ctx} = req;\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_FN:\n case PlatformHandlerType.RAW_ERR_FN:\n return handler;\n case PlatformHandlerType.ERR_MIDDLEWARE:\n return async (error: unknown, req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n const {$ctx} = req;\n\n $ctx.next = next;\n $ctx.error = error;\n\n return handler($ctx);\n });\n };\n default:\n return (req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n req.$ctx.next = next;\n handler(req.$ctx);\n });\n };\n }\n }\n\n useContext(): this {\n const app = this.getPlatformApplication();\n const invoke = createContext(this.injector);\n\n this.injector.logger.debug(\"Mount app context\");\n\n app.use(async (request: any, response: any, next: any) => {\n const $ctx = await invoke({request, response});\n await $ctx.start();\n\n $ctx.response.getRes().on(\"finish\", () => $ctx.finish());\n\n return runInContext($ctx, next);\n });\n\n return this;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n\n return {\n app,\n callback: () => app\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\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n\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 if (type === \"urlencoded\") {\n options.extended = true;\n }\n\n options.verify = (req: IncomingMessage & {rawBody: Buffer}, _res: ServerResponse, buffer: Buffer) => {\n const rawBody = this.injector.settings.get(`rawBody`);\n\n if (rawBody) {\n req.rawBody = buffer;\n }\n\n return true;\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"]}
1
+ {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n InjectorService,\n PlatformProvider,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformHandlerType,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformStaticsOptions,\n runInContext\n} from \"@tsed/common\";\nimport {Env, isFunction, Type} from \"@tsed/core\";\nimport {PlatformHandlerMetadata, PlatformLayer} from \"@tsed/platform-router\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\nimport Express from \"express\";\nimport {IncomingMessage, ServerResponse} from \"http\";\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 */\n@PlatformProvider()\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 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 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} = req;\n !$ctx.isDone() && platformExceptions?.resourceNotFound(req.$ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n const {$ctx} = req;\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_FN:\n case PlatformHandlerType.RAW_ERR_FN:\n return handler;\n case PlatformHandlerType.ERR_MIDDLEWARE:\n return async (error: unknown, req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n const {$ctx} = req;\n\n $ctx.next = next;\n $ctx.error = error;\n\n return handler($ctx);\n });\n };\n default:\n return (req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n req.$ctx.next = next;\n handler(req.$ctx);\n });\n };\n }\n }\n\n useContext(): this {\n const app = this.getPlatformApplication();\n const invoke = createContext(this.injector);\n\n this.injector.logger.debug(\"Mount app context\");\n\n app.use(async (request: any, response: any, next: any) => {\n const $ctx = await invoke({request, response});\n await $ctx.start();\n\n $ctx.response.getRes().on(\"finish\", () => $ctx.finish());\n\n return runInContext($ctx, next);\n });\n\n return this;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n\n return {\n app,\n callback: () => app\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\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n\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 if (type === \"urlencoded\") {\n options.extended = true;\n }\n\n options.verify = (req: IncomingMessage & {rawBody: Buffer}, _res: ServerResponse, buffer: Buffer) => {\n const rawBody = this.injector.settings.get(`rawBody`);\n\n if (rawBody) {\n req.rawBody = buffer;\n }\n\n return true;\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"]}
@@ -39,22 +39,6 @@ let PlatformExpress = PlatformExpress_1 = class PlatformExpress {
39
39
  adapter: PlatformExpress_1
40
40
  });
41
41
  }
42
- // onInit() {
43
- // const middlewares = this.injector.settings.get("middlewares", []);
44
- //
45
- // this.injector.settings.set(
46
- // "middlewares"
47
- // // middlewares.filter((middleware) => {
48
- // // const name = nameOf(middleware);
49
- // // if (["textParser", "jsonParser", "rawParser", "urlencodedParser"].includes(name)) {
50
- // // this.injector.settings.set(`express.bodyParser.${name.replace("Parser", "")}`, () => middleware);
51
- // // return false;
52
- // // }
53
- // //
54
- // // return true;
55
- // // })
56
- // );
57
- // }
58
42
  async beforeLoadRoutes() {
59
43
  const injector = this.injector;
60
44
  const app = this.injector.get(PlatformApplication);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n InjectorService,\n PlatformProvider,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformHandlerType,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformStaticsOptions,\n runInContext\n} from \"@tsed/common\";\nimport {Env, isFunction, Type} from \"@tsed/core\";\nimport {PlatformHandlerMetadata, PlatformLayer} from \"@tsed/platform-router\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\nimport Express from \"express\";\nimport {IncomingMessage, ServerResponse} from \"http\";\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 */\n@PlatformProvider()\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 }\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} = req;\n !$ctx.isDone() && platformExceptions?.resourceNotFound(req.$ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n const {$ctx} = req;\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_FN:\n case PlatformHandlerType.RAW_ERR_FN:\n return handler;\n case PlatformHandlerType.ERR_MIDDLEWARE:\n return async (error: unknown, req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n const {$ctx} = req;\n\n $ctx.next = next;\n $ctx.error = error;\n\n return handler($ctx);\n });\n };\n default:\n return (req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n req.$ctx.next = next;\n handler(req.$ctx);\n });\n };\n }\n }\n\n useContext(): this {\n const app = this.getPlatformApplication();\n const invoke = createContext(this.injector);\n\n this.injector.logger.debug(\"Mount app context\");\n\n app.use(async (request: any, response: any, next: any) => {\n const $ctx = await invoke({request, response});\n await $ctx.start();\n\n $ctx.response.getRes().on(\"finish\", () => $ctx.finish());\n\n return runInContext($ctx, next);\n });\n\n return this;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n\n return {\n app,\n callback: () => app\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\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n\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 if (type === \"urlencoded\") {\n options.extended = true;\n }\n\n options.verify = (req: IncomingMessage & {rawBody: Buffer}, _res: ServerResponse, buffer: Buffer) => {\n const rawBody = this.injector.settings.get(`rawBody`);\n\n if (rawBody) {\n req.rawBody = buffer;\n }\n\n return true;\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"]}
1
+ {"version":3,"file":"PlatformExpress.js","sourceRoot":"","sources":["../../../src/components/PlatformExpress.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAEhB,mBAAmB,EACnB,eAAe,EAEf,kBAAkB,EAClB,mBAAmB,EAInB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,GAAG,EAAE,UAAU,EAAO,MAAM,YAAY,CAAC;AAIjD,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AAwBnE;;;GAGG;AAEH,IAAa,eAAe,uBAA5B,MAAa,eAAe;IAIJ;IAHb,SAAS,GAAG,EAAE,CAAC;IACxB,OAAO,CAAgB;IAEvB,YAAsB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,MAAiB,EAAE,WAAwC,EAAE;QACzE,OAAO,eAAe,CAAC,MAAM,CAAsB,MAAM,EAAE;YACzD,GAAG,QAAQ;YACX,OAAO,EAAE,iBAAe;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,WAAwC,EAAE;QAClF,OAAO,eAAe,CAAC,SAAS,CAAsB,MAAM,EAAE;YAC5D,GAAG,QAAQ;YACX,OAAO,EAAE,iBAAe;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAA2C,mBAAmB,CAAE,CAAC;QAE9F,8BAA8B;QAC9B,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElF,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAA2C,mBAAmB,CAAE,CAAC;QAC9F,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAqB,kBAAkB,CAAE,CAAC;QAEtF,YAAY;QACZ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;YACxC,MAAM,EAAC,IAAI,EAAC,GAAG,GAAG,CAAC;YACnB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;YAClD,MAAM,EAAC,IAAI,EAAC,GAAG,GAAG,CAAC;YACnB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAuB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,QAAQ,KAAK,CAAC,MAAM,EAAE;gBACpB,KAAK,SAAS;oBACZ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAc,EAAE,KAAK,CAAC,IAAW,CAAC,CAAC,CAAC;oBAC9E,OAAO;aACV;YAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,OAAiB,EAAE,QAAiC;QAC7D,QAAQ,QAAQ,CAAC,IAAI,EAAE;YACrB,KAAK,mBAAmB,CAAC,MAAM,CAAC;YAChC,KAAK,mBAAmB,CAAC,UAAU;gBACjC,OAAO,OAAO,CAAC;YACjB,KAAK,mBAAmB,CAAC,cAAc;gBACrC,OAAO,KAAK,EAAE,KAAc,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;oBAC7D,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;wBACjC,MAAM,EAAC,IAAI,EAAC,GAAG,GAAG,CAAC;wBAEnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;wBACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBAEnB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;YACJ;gBACE,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;oBACvC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;wBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;SACL;IACH,CAAC;IAED,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEhD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAY,EAAE,QAAa,EAAE,IAAS,EAAE,EAAE;YACvD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAEnB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAEzD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,EAAE,CAAC;QAEnE,OAAO;YACL,GAAG;YACH,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG;SACpB,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhC,MAAM,WAAW,GAAG,CAAC,MAAW,EAAE,IAAY,EAAE,EAAE;YAChD,uBAAuB;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO;YAE1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,IAAW;gBAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAEjD,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtB,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACxB,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACzB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACvB,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEzB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,OAA+B;QACvD,MAAM,EAAC,IAAI,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QAEjC,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,IAAoC,EAAE,oBAAyB,EAAE;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAEtE,IAAI,MAAM,GAAQ,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,OAAO,GAAkD,EAAE,CAAC;QAEhE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YACpB,MAAM,GAAG,IAAI,CAAC;YACd,OAAO,GAAG,EAAE,CAAC;SACd;QAED,IAAI,IAAI,KAAK,YAAY,EAAE;YACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;SACzB;QAED,OAAO,CAAC,MAAM,GAAG,CAAC,GAAwC,EAAE,IAAoB,EAAE,MAAc,EAAE,EAAE;YAClG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEtD,IAAI,OAAO,EAAE;gBACX,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;aACtB;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC,EAAC,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAC,CAAC,CAAC;IACpD,CAAC;IAEO,sBAAsB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAA2C,mBAAmB,CAAE,CAAC;IAC3F,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAA2C,mBAAmB,CAAE,CAAC;QAE9F,IAAI;YACF,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAErE,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;gBACvB,MAAM,EAAC,aAAa,EAAC,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAgB,aAAa,CAAE,CAAC;gBAClE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBAE7B,aAAa,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,EAAE,EAAE;oBACzD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBAEH,aAAa,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;gBACjF,aAAa,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;aAChE;SACF;QAAC,OAAO,KAAK,EAAE;YACd,uBAAuB;YACvB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,oEAAoE;gBAC7E,KAAK;aACN,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AA1NY,eAAe;IAD3B,gBAAgB,EAAE;qCAKe,eAAe;GAJpC,eAAe,CA0N3B;SA1NY,eAAe","sourcesContent":["import {\n createContext,\n InjectorService,\n PlatformProvider,\n PlatformAdapter,\n PlatformApplication,\n PlatformBuilder,\n PlatformContext,\n PlatformExceptions,\n PlatformHandlerType,\n PlatformMulter,\n PlatformMulterSettings,\n PlatformStaticsOptions,\n runInContext\n} from \"@tsed/common\";\nimport {Env, isFunction, Type} from \"@tsed/core\";\nimport {PlatformHandlerMetadata, PlatformLayer} from \"@tsed/platform-router\";\nimport type {PlatformViews} from \"@tsed/platform-views\";\nimport {OptionsJson, OptionsText, OptionsUrlencoded} from \"body-parser\";\nimport Express from \"express\";\nimport {IncomingMessage, ServerResponse} from \"http\";\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 */\n@PlatformProvider()\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 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 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} = req;\n !$ctx.isDone() && platformExceptions?.resourceNotFound(req.$ctx);\n });\n\n // EXCEPTION FILTERS\n app.use((err: any, req: any, res: any, next: any) => {\n const {$ctx} = req;\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_FN:\n case PlatformHandlerType.RAW_ERR_FN:\n return handler;\n case PlatformHandlerType.ERR_MIDDLEWARE:\n return async (error: unknown, req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n const {$ctx} = req;\n\n $ctx.next = next;\n $ctx.error = error;\n\n return handler($ctx);\n });\n };\n default:\n return (req: any, res: any, next: any) => {\n return runInContext(req.$ctx, () => {\n req.$ctx.next = next;\n handler(req.$ctx);\n });\n };\n }\n }\n\n useContext(): this {\n const app = this.getPlatformApplication();\n const invoke = createContext(this.injector);\n\n this.injector.logger.debug(\"Mount app context\");\n\n app.use(async (request: any, response: any, next: any) => {\n const $ctx = await invoke({request, response});\n await $ctx.start();\n\n $ctx.response.getRes().on(\"finish\", () => $ctx.finish());\n\n return runInContext($ctx, next);\n });\n\n return this;\n }\n\n app() {\n const app = this.injector.settings.get(\"express.app\") || Express();\n\n return {\n app,\n callback: () => app\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\" | \"text\" | \"urlencoded\", additionalOptions: any = {}): any {\n const opts = this.injector.settings.get(`express.bodyParser.${type}`);\n\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 if (type === \"urlencoded\") {\n options.extended = true;\n }\n\n options.verify = (req: IncomingMessage & {rawBody: Buffer}, _res: ServerResponse, buffer: Buffer) => {\n const rawBody = this.injector.settings.get(`rawBody`);\n\n if (rawBody) {\n req.rawBody = buffer;\n }\n\n return true;\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/platform-express",
3
- "version": "7.12.0",
3
+ "version": "7.13.1",
4
4
  "description": "A TypeScript Framework on top of Express",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
@@ -57,11 +57,11 @@
57
57
  "tslib": "2.4.0"
58
58
  },
59
59
  "devDependencies": {
60
- "@tsed/common": "7.12.0",
61
- "@tsed/core": "7.12.0",
62
- "@tsed/di": "7.12.0",
63
- "@tsed/platform-test-sdk": "7.12.0",
64
- "@tsed/platform-views": "7.12.0",
60
+ "@tsed/common": "7.13.1",
61
+ "@tsed/core": "7.13.1",
62
+ "@tsed/di": "7.13.1",
63
+ "@tsed/platform-test-sdk": "7.13.1",
64
+ "@tsed/platform-views": "7.13.1",
65
65
  "@types/body-parser": "1.19.2",
66
66
  "@types/compression": "1.7.2",
67
67
  "@types/cookie-parser": "1.4.2",
@@ -77,14 +77,14 @@
77
77
  "method-override": "3.0.0"
78
78
  },
79
79
  "peerDependencies": {
80
- "@tsed/common": "^7.12.0",
81
- "@tsed/core": "^7.12.0",
82
- "@tsed/di": "^7.12.0",
83
- "@tsed/json-mapper": "^7.12.0",
80
+ "@tsed/common": "^7.13.1",
81
+ "@tsed/core": "^7.13.1",
82
+ "@tsed/di": "^7.13.1",
83
+ "@tsed/json-mapper": "^7.13.1",
84
84
  "@tsed/logger": ">=6.2.2",
85
- "@tsed/openspec": "^7.12.0",
86
- "@tsed/platform-views": "^7.12.0",
87
- "@tsed/schema": "^7.12.0",
85
+ "@tsed/openspec": "^7.13.1",
86
+ "@tsed/platform-views": "^7.13.1",
87
+ "@tsed/schema": "^7.13.1",
88
88
  "@types/multer": "^1.4.5",
89
89
  "body-parser": "^1.19.0",
90
90
  "multer": "^1.4.5-lts.1"
@@ -102,9 +102,6 @@
102
102
  "@tsed/json-mapper": {
103
103
  "optional": false
104
104
  },
105
- "@tsed/openspec": {
106
- "optional": false
107
- },
108
105
  "@tsed/platform-views": {
109
106
  "optional": true
110
107
  },