@decaf-ts/for-nest 0.11.2 → 0.12.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.
- package/README.md +274 -2
- package/dist/for-nest.cjs +1 -1
- package/dist/for-nest.cjs.map +1 -1
- package/dist/for-nest.js +1 -1
- package/dist/for-nest.js.map +1 -1
- package/lib/cjs/auth/AuthInterceptor.cjs +93 -0
- package/lib/cjs/auth/AuthInterceptor.cjs.map +1 -0
- package/lib/cjs/auth/DecafAuthHandler.cjs +37 -0
- package/lib/cjs/auth/DecafAuthHandler.cjs.map +1 -0
- package/lib/cjs/auth/DecafAuthModule.cjs +50 -0
- package/lib/cjs/auth/DecafAuthModule.cjs.map +1 -0
- package/lib/cjs/auth/constants.cjs +10 -0
- package/lib/cjs/auth/constants.cjs.map +1 -0
- package/lib/cjs/auth/decorators.cjs +28 -0
- package/lib/cjs/auth/decorators.cjs.map +1 -0
- package/lib/cjs/{ram → auth}/index.cjs +6 -2
- package/lib/cjs/auth/index.cjs.map +1 -0
- package/lib/cjs/bin/cli.cjs +1 -1
- package/lib/cjs/bin/cli.cjs.map +1 -1
- package/lib/cjs/cli-module.cjs +63 -6
- package/lib/cjs/cli-module.cjs.map +1 -1
- package/lib/cjs/constants.cjs +4 -5
- package/lib/cjs/constants.cjs.map +1 -1
- package/lib/cjs/controllers.cjs +15 -112
- package/lib/cjs/controllers.cjs.map +1 -1
- package/lib/cjs/core-module.cjs +7 -7
- package/lib/cjs/core-module.cjs.map +1 -1
- package/lib/cjs/decaf-model/DecafModelModule.cjs +27 -3
- package/lib/cjs/decaf-model/DecafModelModule.cjs.map +1 -1
- package/lib/cjs/decaf-model/FromModelController.cjs +618 -792
- package/lib/cjs/decaf-model/FromModelController.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/ApiOperationFromModel.cjs +52 -15
- package/lib/cjs/decaf-model/decorators/ApiOperationFromModel.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/ApiParamsFromModel.cjs +1 -1
- package/lib/cjs/decaf-model/decorators/ApiParamsFromModel.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/DecafBody.cjs +1 -1
- package/lib/cjs/decaf-model/decorators/DecafBody.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/DecafParams.cjs +1 -1
- package/lib/cjs/decaf-model/decorators/DecafParams.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/controller-config.cjs +29 -0
- package/lib/cjs/decaf-model/decorators/controller-config.cjs.map +1 -0
- package/lib/cjs/decaf-model/decorators/decorators.cjs +4 -44
- package/lib/cjs/decaf-model/decorators/decorators.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/expose.cjs +13 -0
- package/lib/cjs/decaf-model/decorators/expose.cjs.map +1 -0
- package/lib/cjs/decaf-model/decorators/index.cjs +2 -1
- package/lib/cjs/decaf-model/decorators/index.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/types.cjs +1 -1
- package/lib/cjs/decaf-model/decorators/types.cjs.map +1 -1
- package/lib/cjs/decaf-model/decorators/utils.cjs +3 -2
- package/lib/cjs/decaf-model/decorators/utils.cjs.map +1 -1
- package/lib/cjs/decaf-model/index.cjs +27 -18
- package/lib/cjs/decaf-model/index.cjs.map +1 -1
- package/lib/cjs/decaf-model/types.cjs +1 -1
- package/lib/cjs/decaf-model/types.cjs.map +1 -1
- package/lib/cjs/decaf-model/utils.cjs +10 -4
- package/lib/cjs/decaf-model/utils.cjs.map +1 -1
- package/lib/cjs/decoration.cjs +1 -1
- package/lib/cjs/decoration.cjs.map +1 -1
- package/lib/cjs/decorators.cjs +93 -0
- package/lib/cjs/decorators.cjs.map +1 -0
- package/lib/cjs/events-module/DecafStreamModule.cjs +1 -1
- package/lib/cjs/events-module/DecafStreamModule.cjs.map +1 -1
- package/lib/cjs/events-module/EventsController.cjs +1 -1
- package/lib/cjs/events-module/EventsController.cjs.map +1 -1
- package/lib/cjs/events-module/constant.cjs +1 -1
- package/lib/cjs/events-module/constant.cjs.map +1 -1
- package/lib/cjs/events-module/index.cjs +1 -1
- package/lib/cjs/events-module/index.cjs.map +1 -1
- package/lib/cjs/events-module/utils.cjs +1 -1
- package/lib/cjs/events-module/utils.cjs.map +1 -1
- package/lib/cjs/factory/NestBootstraper.cjs +11 -4
- package/lib/cjs/factory/NestBootstraper.cjs.map +1 -1
- package/lib/cjs/factory/errors/cors.cjs +1 -1
- package/lib/cjs/factory/errors/cors.cjs.map +1 -1
- package/lib/cjs/factory/errors/index.cjs +1 -1
- package/lib/cjs/factory/errors/index.cjs.map +1 -1
- package/lib/cjs/factory/errors/throttling.cjs +1 -1
- package/lib/cjs/factory/errors/throttling.cjs.map +1 -1
- package/lib/cjs/factory/exceptions/DecafErrorFilter.cjs +105 -6
- package/lib/cjs/factory/exceptions/DecafErrorFilter.cjs.map +1 -1
- package/lib/cjs/factory/exceptions/decorators.cjs +4 -1
- package/lib/cjs/factory/exceptions/decorators.cjs.map +1 -1
- package/lib/cjs/factory/exceptions/index.cjs +1 -1
- package/lib/cjs/factory/exceptions/index.cjs.map +1 -1
- package/lib/cjs/factory/index.cjs +1 -1
- package/lib/cjs/factory/index.cjs.map +1 -1
- package/lib/cjs/factory/openapi/DtoBuilder.cjs +36 -5
- package/lib/cjs/factory/openapi/DtoBuilder.cjs.map +1 -1
- package/lib/cjs/factory/openapi/SwaggerBuilder.cjs +1 -1
- package/lib/cjs/factory/openapi/SwaggerBuilder.cjs.map +1 -1
- package/lib/cjs/factory/openapi/SwaggerCustomUI.cjs +1 -1
- package/lib/cjs/factory/openapi/SwaggerCustomUI.cjs.map +1 -1
- package/lib/cjs/factory/openapi/constants.cjs +1 -1
- package/lib/cjs/factory/openapi/constants.cjs.map +1 -1
- package/lib/cjs/factory/openapi/index.cjs +1 -1
- package/lib/cjs/factory/openapi/index.cjs.map +1 -1
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs +24 -20
- package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs.map +1 -1
- package/lib/cjs/interceptors/index.cjs +2 -3
- package/lib/cjs/interceptors/index.cjs.map +1 -1
- package/lib/cjs/module.cjs +4 -1
- package/lib/cjs/module.cjs.map +1 -1
- package/lib/cjs/overrides/Adapter.cjs +1 -1
- package/lib/cjs/overrides/Adapter.cjs.map +1 -1
- package/lib/cjs/overrides/ModelBuilderExtensions.cjs +1 -1
- package/lib/cjs/overrides/ModelBuilderExtensions.cjs.map +1 -1
- package/lib/cjs/overrides/constants.cjs +1 -1
- package/lib/cjs/overrides/constants.cjs.map +1 -1
- package/lib/cjs/overrides/decoration.cjs +1 -1
- package/lib/cjs/overrides/decoration.cjs.map +1 -1
- package/lib/cjs/overrides/helpers.cjs +1 -1
- package/lib/cjs/overrides/helpers.cjs.map +1 -1
- package/lib/cjs/overrides/index.cjs +2 -1
- package/lib/cjs/overrides/index.cjs.map +1 -1
- package/lib/cjs/overrides/logging.cjs +5 -0
- package/lib/cjs/overrides/logging.cjs.map +1 -0
- package/lib/cjs/overrides/overrides.cjs +1 -1
- package/lib/cjs/overrides/overrides.cjs.map +1 -1
- package/lib/cjs/request/DecafAuthHandler.cjs +4 -38
- package/lib/cjs/request/DecafAuthHandler.cjs.map +1 -1
- package/lib/cjs/request/DecafHandlerExecutor.cjs +1 -1
- package/lib/cjs/request/DecafHandlerExecutor.cjs.map +1 -1
- package/lib/cjs/request/DecafRequestContext.cjs +12 -19
- package/lib/cjs/request/DecafRequestContext.cjs.map +1 -1
- package/lib/cjs/request/DecafResponseInterceptor.cjs +5 -3
- package/lib/cjs/request/DecafResponseInterceptor.cjs.map +1 -1
- package/lib/cjs/request/index.cjs +1 -1
- package/lib/cjs/request/index.cjs.map +1 -1
- package/lib/cjs/swagger-types.cjs +1 -1
- package/lib/cjs/swagger-types.cjs.map +1 -1
- package/lib/cjs/types.cjs +1 -1
- package/lib/cjs/types.cjs.map +1 -1
- package/lib/cjs/utils.cjs +1 -1
- package/lib/cjs/utils.cjs.map +1 -1
- package/lib/cjs/webhooks/DecafWebhookModule.cjs +4 -3
- package/lib/cjs/webhooks/DecafWebhookModule.cjs.map +1 -1
- package/lib/cjs/webhooks/controllers.cjs +49 -54
- package/lib/cjs/webhooks/controllers.cjs.map +1 -1
- package/lib/cjs/webhooks/index.cjs +1 -1
- package/lib/cjs/webhooks/index.cjs.map +1 -1
- package/lib/cjs/webhooks/types.cjs +1 -1
- package/lib/cjs/webhooks/types.cjs.map +1 -1
- package/lib/esm/auth/AuthInterceptor.js +84 -0
- package/lib/esm/auth/AuthInterceptor.js.map +1 -0
- package/lib/esm/auth/DecafAuthHandler.js +31 -0
- package/lib/esm/auth/DecafAuthHandler.js.map +1 -0
- package/lib/esm/auth/DecafAuthModule.js +42 -0
- package/lib/esm/auth/DecafAuthModule.js.map +1 -0
- package/lib/esm/auth/constants.js +6 -0
- package/lib/esm/auth/constants.js.map +1 -0
- package/lib/esm/auth/decorators.js +22 -0
- package/lib/esm/auth/decorators.js.map +1 -0
- package/lib/esm/auth/index.js +6 -0
- package/lib/esm/auth/index.js.map +1 -0
- package/lib/esm/cli-module.js +62 -5
- package/lib/esm/cli-module.js.map +1 -1
- package/lib/esm/constants.js +2 -3
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/controllers.js +15 -112
- package/lib/esm/controllers.js.map +1 -1
- package/lib/esm/core-module.js +6 -6
- package/lib/esm/core-module.js.map +1 -1
- package/lib/esm/decaf-model/DecafModelModule.js +26 -2
- package/lib/esm/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.js +622 -796
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js +52 -14
- package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js.map +1 -1
- package/lib/esm/decaf-model/decorators/controller-config.js +25 -0
- package/lib/esm/decaf-model/decorators/controller-config.js.map +1 -0
- package/lib/esm/decaf-model/decorators/decorators.js +1 -42
- package/lib/esm/decaf-model/decorators/decorators.js.map +1 -1
- package/lib/esm/decaf-model/decorators/expose.js +9 -0
- package/lib/esm/decaf-model/decorators/expose.js.map +1 -0
- package/lib/esm/decaf-model/decorators/index.js +1 -0
- package/lib/esm/decaf-model/decorators/index.js.map +1 -1
- package/lib/esm/decaf-model/decorators/utils.js +2 -1
- package/lib/esm/decaf-model/decorators/utils.js.map +1 -1
- package/lib/esm/decaf-model/index.js +10 -3
- package/lib/esm/decaf-model/index.js.map +1 -1
- package/lib/esm/decaf-model/utils.js +9 -3
- package/lib/esm/decaf-model/utils.js.map +1 -1
- package/lib/esm/decorators.js +87 -0
- package/lib/esm/decorators.js.map +1 -0
- package/lib/esm/events-module/utils.js.map +1 -1
- package/lib/esm/factory/NestBootstraper.js +10 -3
- package/lib/esm/factory/NestBootstraper.js.map +1 -1
- package/lib/esm/factory/exceptions/DecafErrorFilter.js +105 -7
- package/lib/esm/factory/exceptions/DecafErrorFilter.js.map +1 -1
- package/lib/esm/factory/exceptions/decorators.js +3 -0
- package/lib/esm/factory/exceptions/decorators.js.map +1 -1
- package/lib/esm/factory/openapi/DtoBuilder.js +35 -4
- package/lib/esm/factory/openapi/DtoBuilder.js.map +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +24 -20
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js.map +1 -1
- package/lib/esm/interceptors/index.js +1 -2
- package/lib/esm/interceptors/index.js.map +1 -1
- package/lib/esm/module.js +3 -0
- package/lib/esm/module.js.map +1 -1
- package/lib/esm/overrides/index.js +1 -0
- package/lib/esm/overrides/index.js.map +1 -1
- package/lib/esm/overrides/logging.js +2 -0
- package/lib/esm/overrides/logging.js.map +1 -0
- package/lib/esm/request/DecafAuthHandler.js +1 -35
- package/lib/esm/request/DecafAuthHandler.js.map +1 -1
- package/lib/esm/request/DecafRequestContext.js +11 -18
- package/lib/esm/request/DecafRequestContext.js.map +1 -1
- package/lib/esm/request/DecafResponseInterceptor.js +4 -2
- package/lib/esm/request/DecafResponseInterceptor.js.map +1 -1
- package/lib/esm/webhooks/DecafWebhookModule.js +2 -1
- package/lib/esm/webhooks/DecafWebhookModule.js.map +1 -1
- package/lib/esm/webhooks/controllers.js +48 -53
- package/lib/esm/webhooks/controllers.js.map +1 -1
- package/lib/types/{interceptors → auth}/AuthInterceptor.d.cts +4 -1
- package/lib/types/{interceptors → auth}/AuthInterceptor.d.mts +4 -1
- package/lib/types/auth/DecafAuthHandler.d.cts +22 -0
- package/lib/types/auth/DecafAuthHandler.d.mts +22 -0
- package/lib/types/auth/DecafAuthModule.d.cts +9 -0
- package/lib/types/auth/DecafAuthModule.d.mts +9 -0
- package/lib/types/auth/constants.d.cts +5 -0
- package/lib/types/auth/constants.d.mts +5 -0
- package/lib/types/auth/decorators.d.cts +4 -0
- package/lib/types/auth/decorators.d.mts +4 -0
- package/lib/types/auth/index.d.cts +6 -0
- package/lib/types/auth/index.d.mts +6 -0
- package/lib/types/cli-module.d.cts +1 -4
- package/lib/types/cli-module.d.mts +1 -4
- package/lib/types/constants.d.cts +2 -3
- package/lib/types/constants.d.mts +2 -3
- package/lib/types/controllers.d.cts +7 -12
- package/lib/types/controllers.d.mts +7 -12
- package/lib/types/decaf-model/DecafModelModule.d.cts +1 -0
- package/lib/types/decaf-model/DecafModelModule.d.mts +1 -0
- package/lib/types/decaf-model/FromModelController.d.cts +32 -52
- package/lib/types/decaf-model/FromModelController.d.mts +32 -52
- package/lib/types/decaf-model/decorators/ApiOperationFromModel.d.cts +0 -2
- package/lib/types/decaf-model/decorators/ApiOperationFromModel.d.mts +0 -2
- package/lib/types/decaf-model/decorators/controller-config.d.cts +18 -0
- package/lib/types/decaf-model/decorators/controller-config.d.mts +18 -0
- package/lib/types/decaf-model/decorators/decorators.d.cts +1 -29
- package/lib/types/decaf-model/decorators/decorators.d.mts +1 -29
- package/lib/types/decaf-model/decorators/expose.d.cts +1 -0
- package/lib/types/decaf-model/decorators/expose.d.mts +1 -0
- package/lib/types/decaf-model/decorators/index.d.cts +1 -0
- package/lib/types/decaf-model/decorators/index.d.mts +1 -0
- package/lib/types/decaf-model/decorators/types.d.cts +8 -21
- package/lib/types/decaf-model/decorators/types.d.mts +8 -21
- package/lib/types/decaf-model/index.d.cts +11 -3
- package/lib/types/decaf-model/index.d.mts +11 -3
- package/lib/types/decaf-model/utils.d.cts +2 -1
- package/lib/types/decaf-model/utils.d.mts +2 -1
- package/lib/types/decorators.d.cts +35 -0
- package/lib/types/decorators.d.mts +35 -0
- package/lib/types/factory/NestBootstraper.d.cts +5 -0
- package/lib/types/factory/NestBootstraper.d.mts +5 -0
- package/lib/types/factory/exceptions/DecafErrorFilter.d.cts +33 -1
- package/lib/types/factory/exceptions/DecafErrorFilter.d.mts +33 -1
- package/lib/types/factory/openapi/DtoBuilder.d.cts +7 -3
- package/lib/types/factory/openapi/DtoBuilder.d.mts +7 -3
- package/lib/types/index.d.cts +5 -4
- package/lib/types/index.d.mts +5 -4
- package/lib/types/interceptors/DecafRequestHandlerInterceptor.d.cts +1 -2
- package/lib/types/interceptors/DecafRequestHandlerInterceptor.d.mts +1 -2
- package/lib/types/interceptors/index.d.cts +1 -2
- package/lib/types/interceptors/index.d.mts +1 -2
- package/lib/types/overrides/Adapter.d.cts +1 -1
- package/lib/types/overrides/Adapter.d.mts +1 -1
- package/lib/types/overrides/index.d.cts +1 -0
- package/lib/types/overrides/index.d.mts +1 -0
- package/lib/types/overrides/logging.d.cts +1 -0
- package/lib/types/overrides/logging.d.mts +1 -0
- package/lib/types/request/DecafAuthHandler.d.cts +1 -10
- package/lib/types/request/DecafAuthHandler.d.mts +1 -10
- package/lib/types/request/DecafRequestContext.d.cts +5 -5
- package/lib/types/request/DecafRequestContext.d.mts +5 -5
- package/lib/types/types.d.cts +12 -24
- package/lib/types/types.d.mts +12 -24
- package/package.json +12 -13
- package/lib/cjs/interceptors/AuthInterceptor.cjs +0 -52
- package/lib/cjs/interceptors/AuthInterceptor.cjs.map +0 -1
- package/lib/cjs/interceptors/context.cjs +0 -18
- package/lib/cjs/interceptors/context.cjs.map +0 -1
- package/lib/cjs/migrations/index.cjs +0 -35
- package/lib/cjs/migrations/index.cjs.map +0 -1
- package/lib/cjs/migrations/migration-module.cjs +0 -60
- package/lib/cjs/migrations/migration-module.cjs.map +0 -1
- package/lib/cjs/migrations/migration-options.cjs +0 -4
- package/lib/cjs/migrations/migration-options.cjs.map +0 -1
- package/lib/cjs/ram/RamRequestTransformer.cjs +0 -26
- package/lib/cjs/ram/RamRequestTransformer.cjs.map +0 -1
- package/lib/cjs/ram/index.cjs.map +0 -1
- package/lib/esm/interceptors/AuthInterceptor.js +0 -43
- package/lib/esm/interceptors/AuthInterceptor.js.map +0 -1
- package/lib/esm/interceptors/context.js +0 -12
- package/lib/esm/interceptors/context.js.map +0 -1
- package/lib/esm/migrations/index.js +0 -18
- package/lib/esm/migrations/index.js.map +0 -1
- package/lib/esm/migrations/migration-module.js +0 -52
- package/lib/esm/migrations/migration-module.js.map +0 -1
- package/lib/esm/migrations/migration-options.js +0 -7
- package/lib/esm/migrations/migration-options.js.map +0 -1
- package/lib/esm/ram/RamRequestTransformer.js +0 -21
- package/lib/esm/ram/RamRequestTransformer.js.map +0 -1
- package/lib/esm/ram/index.js +0 -2
- package/lib/esm/ram/index.js.map +0 -1
- package/lib/types/interceptors/context.d.cts +0 -6
- package/lib/types/interceptors/context.d.mts +0 -6
- package/lib/types/migrations/index.d.cts +0 -17
- package/lib/types/migrations/index.d.mts +0 -17
- package/lib/types/migrations/migration-module.d.cts +0 -15
- package/lib/types/migrations/migration-module.d.mts +0 -15
- package/lib/types/migrations/migration-options.d.cts +0 -11
- package/lib/types/migrations/migration-options.d.mts +0 -11
- package/lib/types/ram/RamRequestTransformer.d.cts +0 -5
- package/lib/types/ram/RamRequestTransformer.d.mts +0 -5
- package/lib/types/ram/index.d.cts +0 -1
- package/lib/types/ram/index.d.mts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NestBootstraper.js","sourceRoot":"","sources":["../../../src/factory/NestBootstraper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,GAGP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,8BAAqB;AACpD,OAAO,EAAE,cAAc,EAAE,2BAAkB;AAE3C,OAAO,EAAE,SAAS,EAAE,0BAAiB;AA4CrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,eAAe;IAI1B;;;;;;;;;OASG;IACK,MAAM,KAAK,MAAM;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,WAAW;YACX,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,UAAU,CAAC,GAAqB;QACrC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,YAAqB;QACvC,IAAI,CAAC,OAAO,GAAG,YAAY,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CACf,UAA0B,EAAE,EAC5B,eAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;QAEzD,MAAM,cAAc,GAClB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAErE,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;gBAC3B,kCAAkC;gBAClC,IAAI,CAAC,MAAM;oBAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAEzC,IACE,cAAc,KAAK,GAAG;oBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;wBAC5B,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAChD,CAAC;oBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBAED,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,MAAM,cAAc,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;SAChC,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,SAAS,CAAC,OAA6B;QAC5C,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAA0C;YAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"NestBootstraper.js","sourceRoot":"","sources":["../../../src/factory/NestBootstraper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,GAGP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,8BAAqB;AACpD,OAAO,EAAE,cAAc,EAAE,2BAAkB;AAE3C,OAAO,EAAE,SAAS,EAAE,0BAAiB;AA4CrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,eAAe;IAI1B;;;;;;;;;OASG;IACK,MAAM,KAAK,MAAM;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,WAAW;YACX,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,UAAU,CAAC,GAAqB;QACrC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,YAAqB;QACvC,IAAI,CAAC,OAAO,GAAG,YAAY,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CACf,UAA0B,EAAE,EAC5B,eAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;QAEzD,MAAM,cAAc,GAClB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAErE,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;gBAC3B,kCAAkC;gBAClC,IAAI,CAAC,MAAM;oBAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAEzC,IACE,cAAc,KAAK,GAAG;oBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;wBAC5B,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAChD,CAAC;oBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBAED,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,MAAM,cAAc,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;SAChC,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,SAAS,CAAC,OAA6B;QAC5C,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAA0C;YAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,OAA4B;QAC9C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;YAC3B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI;YAC1D,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,eAAe,EAAE,OAAO,CAAC,WAAW;YACpC,kBAAkB,EAAE,OAAO,CAAC,cAAc;YAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;QACH,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,KAAsB;QAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,OAAc;QACvC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CACvB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,qBAAqB,CAAC,GAAG,YAA+B;QAC7D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,OAAe,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAC/C,OAA2B,SAAS,EACpC,MAAe,IAAI;QAEnB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACjD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -4,13 +4,38 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { BadRequestException, Catch, ConflictException, ForbiddenException, HttpException, Injectable, NotAcceptableException, NotFoundException, Optional, UnauthorizedException, UnprocessableEntityException, } from "@nestjs/common";
|
|
14
|
+
import { ContextIdFactory, ModuleRef } from "@nestjs/core";
|
|
15
|
+
import { BadRequestError, BaseError, ConflictError, InternalError, ValidationError, } from "@decaf-ts/db-decorators";
|
|
16
|
+
import { LoggedEnvironment, Logging } from "@decaf-ts/logging";
|
|
17
|
+
import { AuthorizationError, ForbiddenError, UnsupportedError } from "@decaf-ts/core";
|
|
11
18
|
import { ToManyRequestsError } from "./../errors/throttling.js";
|
|
19
|
+
import { DecafRequestContext } from "./../../request/DecafRequestContext.js";
|
|
20
|
+
/**
|
|
21
|
+
* @description Maps well-known NestJS `HttpException` subclasses (as guards, pipes, or
|
|
22
|
+
* other framework-level code would throw them) onto the equivalent decaf-ts `BaseError`.
|
|
23
|
+
* @summary Only `BaseError` instances carry the `.code` the response body relies on, so
|
|
24
|
+
* without this map every non-decaf exception — including perfectly legitimate ones like a
|
|
25
|
+
* guard's `ForbiddenException` — would be flattened into a generic 500 `InternalError`.
|
|
26
|
+
*/
|
|
27
|
+
const HTTP_EXCEPTION_TO_DECAF_ERROR = new Map([
|
|
28
|
+
[UnauthorizedException, (msg) => new AuthorizationError(msg)],
|
|
29
|
+
[ForbiddenException, (msg) => new ForbiddenError(msg)],
|
|
30
|
+
[BadRequestException, (msg) => new BadRequestError(msg)],
|
|
31
|
+
[ConflictException, (msg) => new ConflictError(msg)],
|
|
32
|
+
[UnprocessableEntityException, (msg) => new ValidationError(msg)],
|
|
33
|
+
]);
|
|
12
34
|
let DecafExceptionFilter = class DecafExceptionFilter {
|
|
13
|
-
|
|
35
|
+
constructor(moduleRef) {
|
|
36
|
+
this.moduleRef = moduleRef;
|
|
37
|
+
}
|
|
38
|
+
async catch(exception, host) {
|
|
14
39
|
const ctx = host.switchToHttp();
|
|
15
40
|
const response = ctx.getResponse();
|
|
16
41
|
const request = ctx.getRequest();
|
|
@@ -22,13 +47,23 @@ let DecafExceptionFilter = class DecafExceptionFilter {
|
|
|
22
47
|
statusCode = exception.getStatus();
|
|
23
48
|
}
|
|
24
49
|
else if (!(exception instanceof BaseError)) {
|
|
25
|
-
|
|
50
|
+
const toDecafError = this.decafErrorFor(exception);
|
|
51
|
+
if (toDecafError) {
|
|
52
|
+
exception = toDecafError(exception.message);
|
|
53
|
+
}
|
|
54
|
+
else if (exception.status === 429) {
|
|
26
55
|
exception = new ToManyRequestsError(exception.message);
|
|
27
56
|
}
|
|
57
|
+
else if (exception instanceof HttpException) {
|
|
58
|
+
// A recognized but unmapped HttpException (e.g. thrown by a guard or
|
|
59
|
+
// pipe) — preserve its real status instead of flattening it to 500.
|
|
60
|
+
statusCode = exception.getStatus();
|
|
61
|
+
}
|
|
28
62
|
else {
|
|
29
63
|
exception = new InternalError(exception.message);
|
|
30
64
|
}
|
|
31
65
|
}
|
|
66
|
+
await this.logError(request, exception);
|
|
32
67
|
response.status(exception.code || statusCode).json({
|
|
33
68
|
status: exception.code || statusCode,
|
|
34
69
|
error: isProduction ? exception.name : exception.message,
|
|
@@ -37,9 +72,72 @@ let DecafExceptionFilter = class DecafExceptionFilter {
|
|
|
37
72
|
method: request.method,
|
|
38
73
|
});
|
|
39
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @description Finds the decaf-ts `BaseError` constructor mapped to this exception's type, if any.
|
|
77
|
+
* @summary Walks `HTTP_EXCEPTION_TO_DECAF_ERROR` with `instanceof` (rather than a straight
|
|
78
|
+
* `Map.get`) so subclasses of a mapped exception are matched too.
|
|
79
|
+
*/
|
|
80
|
+
decafErrorFor(exception) {
|
|
81
|
+
for (const [type, factory] of HTTP_EXCEPTION_TO_DECAF_ERROR) {
|
|
82
|
+
if (exception instanceof type)
|
|
83
|
+
return factory;
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @description Logs the exception without ever letting logging failures block the response.
|
|
89
|
+
* @summary A guard (or middleware/CORS check) can throw before any decaf-aware provider ran,
|
|
90
|
+
* so the request-bound Context may not exist yet — or the resolved logger's `.error()` itself
|
|
91
|
+
* could throw (broken transport, formatter bug, etc.). Either way the client-facing error
|
|
92
|
+
* response below must still go out, so every failure mode here is swallowed, falling back to
|
|
93
|
+
* the plain `Logging.get()` logger and, as a last resort, doing nothing at all.
|
|
94
|
+
*/
|
|
95
|
+
async logError(request, exception) {
|
|
96
|
+
const message = `Unhandled error on ${request?.method} ${request?.url}`;
|
|
97
|
+
try {
|
|
98
|
+
const log = await this.resolveLogger(request);
|
|
99
|
+
log.error(message, exception);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
try {
|
|
103
|
+
Logging.get().error(message, exception);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// logging is unavailable — the response is still sent below
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @description Resolves the logger bound to the originating request's decaf-ts Context.
|
|
112
|
+
* @summary Global filters are singletons, so the request-scoped {@link DecafRequestContext}
|
|
113
|
+
* (and the client/user-bound logger it carries) can't be constructor-injected. Instead, this
|
|
114
|
+
* looks up the same request's context id and re-resolves the already-accumulated instance
|
|
115
|
+
* through `ModuleRef`. Falls back to the generic `Logging.get()` logger when the filter wasn't
|
|
116
|
+
* constructed with a `ModuleRef` (e.g. manually `new`'d) or no request-scoped context exists
|
|
117
|
+
* for this request (e.g. the error happened before any decaf-aware provider ran, as is the
|
|
118
|
+
* case when a guard rejects the request before interceptors get to bind the client-scoped
|
|
119
|
+
* logger onto the Context).
|
|
120
|
+
*/
|
|
121
|
+
async resolveLogger(request) {
|
|
122
|
+
if (this.moduleRef) {
|
|
123
|
+
try {
|
|
124
|
+
const contextId = ContextIdFactory.getByRequest(request);
|
|
125
|
+
const requestContext = await this.moduleRef.resolve(DecafRequestContext, contextId, { strict: false });
|
|
126
|
+
if (requestContext?.logger)
|
|
127
|
+
return requestContext.logger;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// no request-scoped context bound for this request — fall back below
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return Logging.get();
|
|
134
|
+
}
|
|
40
135
|
};
|
|
41
136
|
DecafExceptionFilter = __decorate([
|
|
42
|
-
Catch()
|
|
137
|
+
Catch(),
|
|
138
|
+
Injectable(),
|
|
139
|
+
__param(0, Optional()),
|
|
140
|
+
__metadata("design:paramtypes", [ModuleRef])
|
|
43
141
|
], DecafExceptionFilter);
|
|
44
142
|
export { DecafExceptionFilter };
|
|
45
143
|
//# sourceMappingURL=DecafErrorFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecafErrorFilter.js","sourceRoot":"","sources":["../../../../src/factory/exceptions/DecafErrorFilter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DecafErrorFilter.js","sourceRoot":"","sources":["../../../../src/factory/exceptions/DecafErrorFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { UseFilters, UseInterceptors } from "@nestjs/common";
|
|
2
2
|
import { DecafExceptionFilter } from "./DecafErrorFilter.js";
|
|
3
3
|
import { DecafResponseInterceptor } from "./../../request/index.js";
|
|
4
|
+
// No ModuleRef available at decoration time, so this instance falls back to
|
|
5
|
+
// Logging.get() rather than the request-bound context logger; prefer
|
|
6
|
+
// NestBootstraper.useGlobalFilters() for context-aware error logging.
|
|
4
7
|
export function UseDecafFilter() {
|
|
5
8
|
return UseFilters(new DecafExceptionFilter());
|
|
6
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../src/factory/exceptions/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,8BAA2B;AAC1D,OAAO,EAAE,wBAAwB,EAAE,iCAA4B;AAE/D,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,CAAC,wBAAwB,CAAC,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../src/factory/exceptions/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,8BAA2B;AAC1D,OAAO,EAAE,wBAAwB,EAAE,iCAA4B;AAE/D,4EAA4E;AAC5E,qEAAqE;AACrE,sEAAsE;AACtE,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,CAAC,wBAAwB,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -19,15 +19,19 @@ const dtoCache = new Map();
|
|
|
19
19
|
* • CREATE – included only when the pk is NOT auto-generated
|
|
20
20
|
* (checked via Model.pkProps().generated AND Model.generated()).
|
|
21
21
|
* - Relation properties (@oneToOne, @oneToMany, …):
|
|
22
|
-
* • CREATE – nested as DtoFor(CREATE, RelatedModel).
|
|
22
|
+
* • CREATE – nested as DtoFor(CREATE, RelatedModel). When the relation
|
|
23
|
+
* creates a circular reference (model A → model B → model A),
|
|
24
|
+
* the back-reference uses the related model's PK type
|
|
25
|
+
* (string/integer) instead of the full DTO to break the cycle.
|
|
23
26
|
* • UPDATE – union of DtoFor(UPDATE, RelatedModel) **or** the
|
|
24
27
|
* related model's primary-key type (string / integer),
|
|
25
|
-
* expressed as a Swagger oneOf.
|
|
28
|
+
* expressed as a Swagger oneOf. Circular back-references
|
|
29
|
+
* omit the DTO $ref and only include the PK type.
|
|
26
30
|
*
|
|
27
31
|
* Metadata.properties() now returns ALL properties across the prototype chain,
|
|
28
32
|
* so DTO inheritance is no longer needed; every DTO is a flat class.
|
|
29
33
|
*/
|
|
30
|
-
export function DtoFor(op, model) {
|
|
34
|
+
export function DtoFor(op, model, stack = new Set()) {
|
|
31
35
|
if (!TransactionOperationKeys.includes(op)) {
|
|
32
36
|
return model;
|
|
33
37
|
}
|
|
@@ -118,7 +122,17 @@ export function DtoFor(op, model) {
|
|
|
118
122
|
const meta = Metadata.validationFor(model, relation);
|
|
119
123
|
const isArray = !!meta?.[ValidationKeys.LIST];
|
|
120
124
|
const isRequired = !!meta?.[ValidationKeys.REQUIRED];
|
|
121
|
-
|
|
125
|
+
// Detect circular reference: if the related model is already in the
|
|
126
|
+
// recursion stack, use the PK type instead of the full DTO to break
|
|
127
|
+
// the cycle. This prevents @nestjs/swagger's SchemaObjectFactory from
|
|
128
|
+
// infinitely recursing when exploring the schemas.
|
|
129
|
+
const isCircular = stack.has(relationType);
|
|
130
|
+
if (isCircular) {
|
|
131
|
+
const pkTypeName = getPkOpenApiType(relationType);
|
|
132
|
+
addRelationPkRef(DynamicDTO, relation, pkTypeName, isArray, isRequired);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const relationDto = DtoFor(op, relationType, new Set(stack).add(model));
|
|
122
136
|
if (isUpdateOp) {
|
|
123
137
|
addRelationUpdate(DynamicDTO, relation, relationType, relationDto, isArray, isRequired);
|
|
124
138
|
}
|
|
@@ -143,6 +157,23 @@ function addRelation(DtoClass, relation, relationDto, isArray, isRequired) {
|
|
|
143
157
|
configurable: true,
|
|
144
158
|
});
|
|
145
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Adds a relation property that uses the PK type (string/integer) instead of
|
|
162
|
+
* a full DTO class. Used to break circular references (e.g. Customer → Order → Customer).
|
|
163
|
+
*/
|
|
164
|
+
function addRelationPkRef(DtoClass, relation, pkTypeName, isArray, isRequired) {
|
|
165
|
+
const apiOptions = isArray
|
|
166
|
+
? { type: "array", items: { type: pkTypeName }, required: isRequired }
|
|
167
|
+
: { type: pkTypeName === "integer" ? Number : String, required: isRequired };
|
|
168
|
+
ApiProperty(apiOptions)(DtoClass.prototype, relation);
|
|
169
|
+
Reflect.defineMetadata("design:type", isArray ? Array : (pkTypeName === "integer" ? Number : String), DtoClass.prototype, relation);
|
|
170
|
+
Object.defineProperty(DtoClass.prototype, relation, {
|
|
171
|
+
value: undefined,
|
|
172
|
+
writable: true,
|
|
173
|
+
enumerable: true,
|
|
174
|
+
configurable: true,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
146
177
|
function addRelationUpdate(DtoClass, relation, relationType, relationDto, isArray, isRequired) {
|
|
147
178
|
const extraModels = Reflect.getMetadata(DECORATORS.API_EXTRA_MODELS, DtoClass) || [];
|
|
148
179
|
if (!extraModels.includes(relationDto)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DtoBuilder.js","sourceRoot":"","sources":["../../../../src/factory/openapi/DtoBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,wCAAmC;AACzD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,uCAAkC;AAEvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAC;AAEJ
|
|
1
|
+
{"version":3,"file":"DtoBuilder.js","sourceRoot":"","sources":["../../../../src/factory/openapi/DtoBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
|
@@ -23,6 +23,7 @@ import { Metadata } from "@decaf-ts/decoration";
|
|
|
23
23
|
import "./decoration.js";
|
|
24
24
|
export * from "./decoration.js"; // on top on purpose
|
|
25
25
|
export * from "./decaf-model/index.js";
|
|
26
|
+
export * from "./auth/index.js";
|
|
26
27
|
export * from "./factory/index.js";
|
|
27
28
|
export * from "./interceptors/index.js";
|
|
28
29
|
export * from "./overrides/index.js";
|
|
@@ -31,8 +32,8 @@ export * from "./constants.js";
|
|
|
31
32
|
export * from "./controllers.js";
|
|
32
33
|
export * from "./module.js";
|
|
33
34
|
export * from "./core-module.js";
|
|
34
|
-
export * from "./migrations/index.js";
|
|
35
35
|
export * from "./types.js";
|
|
36
|
+
export * from "./decorators.js";
|
|
36
37
|
export * from "./utils.js";
|
|
37
38
|
export * from "./events-module/index.js";
|
|
38
39
|
// export * from "./webhooks";
|
|
@@ -42,21 +43,21 @@ export * from "./events-module/index.js";
|
|
|
42
43
|
* @constant
|
|
43
44
|
* @type {string}
|
|
44
45
|
*/
|
|
45
|
-
export const VERSION = "0.
|
|
46
|
+
export const VERSION = "0.12.0";
|
|
46
47
|
/**
|
|
47
48
|
* @description Represents the current commit hash of the module build.
|
|
48
49
|
* @summary Stores the current git commit hash for the package. The build replaces
|
|
49
50
|
* the placeholder with the actual commit hash at publish time.
|
|
50
51
|
* @const COMMIT
|
|
51
52
|
*/
|
|
52
|
-
export const COMMIT = "
|
|
53
|
+
export const COMMIT = "3ac17fe";
|
|
53
54
|
/**
|
|
54
55
|
* @description Represents the full version string of the module.
|
|
55
56
|
* @summary Stores the semver version and commit hash for the package.
|
|
56
57
|
* The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
|
|
57
58
|
* @const FULL_VERSION
|
|
58
59
|
*/
|
|
59
|
-
export const FULL_VERSION = "0.
|
|
60
|
+
export const FULL_VERSION = "0.12.0-3ac17fe";
|
|
60
61
|
export const PACKAGE_NAME = "@decaf-ts/for-nest";
|
|
61
62
|
Metadata.allowReregistration(true);
|
|
62
63
|
Metadata.registerLibrary(PACKAGE_NAME, VERSION);
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,yBAAsB;AAEtB,gCAA6B,CAAC,oBAAoB;AAClD,uCAA8B;AAC9B,mCAA0B;AAC1B,wCAA+B;AAC/B,qCAA4B;AAC5B,mCAA0B;AAC1B,+BAA4B;AAC5B,iCAA8B;AAC9B,4BAAyB;AACzB,iCAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,yBAAsB;AAEtB,gCAA6B,CAAC,oBAAoB;AAClD,uCAA8B;AAC9B,gCAAuB;AACvB,mCAA0B;AAC1B,wCAA+B;AAC/B,qCAA4B;AAC5B,mCAA0B;AAC1B,+BAA4B;AAC5B,iCAA8B;AAC9B,4BAAyB;AACzB,iCAA8B;AAC9B,2BAAwB;AACxB,gCAA6B;AAC7B,2BAAwB;AACxB,yCAAgC;AAChC,8BAA8B;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -10,10 +10,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
var DecafRequestHandlerInterceptor_1;
|
|
11
11
|
import { Injectable, Scope, } from "@nestjs/common";
|
|
12
12
|
import { DecafHandlerExecutor, DecafRequestContext } from "./../request/index.js";
|
|
13
|
-
import {
|
|
13
|
+
import { DefaultAdapterFlags } from "@decaf-ts/core";
|
|
14
14
|
import "./../overrides/index.js";
|
|
15
15
|
import { Logging } from "@decaf-ts/logging";
|
|
16
|
-
import { InternalError } from "@decaf-ts/db-decorators";
|
|
17
16
|
/**
|
|
18
17
|
* @description
|
|
19
18
|
* Interceptor responsible for executing all registered Decaf request handlers
|
|
@@ -71,33 +70,21 @@ let DecafRequestHandlerInterceptor = DecafRequestHandlerInterceptor_1 = class De
|
|
|
71
70
|
headers: headers,
|
|
72
71
|
overrides: {},
|
|
73
72
|
};
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const transformer = Adapter.transformerFor(flavour);
|
|
79
|
-
const from = await transformer.from(req);
|
|
80
|
-
Object.assign(flags.overrides, from);
|
|
81
|
-
}
|
|
82
|
-
catch (e) {
|
|
83
|
-
throw new InternalError(`Failed to contextualize request: ${e}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const ctx = new Context().accumulate(Object.assign({}, DefaultAdapterFlags, {
|
|
87
|
-
logger: Logging.get(),
|
|
73
|
+
const ip = extractIp(req);
|
|
74
|
+
const logger = Logging.get().for({ ip });
|
|
75
|
+
this.requestContext.accumulate(Object.assign({}, DefaultAdapterFlags, {
|
|
76
|
+
logger,
|
|
88
77
|
timestamp: new Date(),
|
|
78
|
+
operation: `${req.method} ${req.url}`,
|
|
89
79
|
}, flags));
|
|
90
|
-
return ctx;
|
|
91
80
|
}
|
|
92
81
|
async intercept(context, next) {
|
|
93
82
|
const req = context.switchToHttp().getRequest();
|
|
94
83
|
const res = context.switchToHttp().getResponse();
|
|
95
84
|
const log = Logging.for(DecafRequestHandlerInterceptor_1).for(this.intercept);
|
|
96
85
|
log.debug(`CONTEXT ${this.requestContext.uuid} - request: ${req.method} ${req.url}`);
|
|
97
|
-
|
|
86
|
+
await this.contextualize(req);
|
|
98
87
|
log.debug(`CONTEXT ${this.requestContext.uuid} contextualized - request: ${req.method} ${req.url}`);
|
|
99
|
-
this.requestContext.applyCtx(ctx);
|
|
100
|
-
log.debug(`CONTEXT ${this.requestContext.uuid} applied - request: ${req.method} ${req.url}`);
|
|
101
88
|
await this.executor.exec(req, res);
|
|
102
89
|
log.debug(`CONTEXT ${this.requestContext.uuid} executors finished - request: ${req.method} ${req.url}`);
|
|
103
90
|
return next.handle();
|
|
@@ -109,4 +96,21 @@ DecafRequestHandlerInterceptor = DecafRequestHandlerInterceptor_1 = __decorate([
|
|
|
109
96
|
DecafHandlerExecutor])
|
|
110
97
|
], DecafRequestHandlerInterceptor);
|
|
111
98
|
export { DecafRequestHandlerInterceptor };
|
|
99
|
+
function extractIp(req) {
|
|
100
|
+
const headers = req.headers;
|
|
101
|
+
function parseIpHeader(value) {
|
|
102
|
+
if (!value)
|
|
103
|
+
return undefined;
|
|
104
|
+
const candidate = Array.isArray(value) ? value[0] : value;
|
|
105
|
+
return candidate
|
|
106
|
+
.split(",")
|
|
107
|
+
.map((segment) => segment.trim())
|
|
108
|
+
.filter(Boolean)[0];
|
|
109
|
+
}
|
|
110
|
+
return (parseIpHeader(headers?.["x-forwarded-for"]) ??
|
|
111
|
+
parseIpHeader(headers?.["x-real-ip"]) ??
|
|
112
|
+
parseIpHeader(headers?.["X-Forwarded-For"]) ??
|
|
113
|
+
parseIpHeader(headers?.["X-Real-IP"]) ??
|
|
114
|
+
req.ip);
|
|
115
|
+
}
|
|
112
116
|
//# sourceMappingURL=DecafRequestHandlerInterceptor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecafRequestHandlerInterceptor.js","sourceRoot":"","sources":["../../../src/interceptors/DecafRequestHandlerInterceptor.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAGL,UAAU,EAEV,KAAK,GACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,8BAAmB;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"DecafRequestHandlerInterceptor.js","sourceRoot":"","sources":["../../../src/interceptors/DecafRequestHandlerInterceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,oDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,oDAAiD;AACjD,6CAAwC"}
|
package/lib/esm/module.js
CHANGED
|
@@ -22,6 +22,9 @@ let DecafModule = DecafModule_1 = class DecafModule {
|
|
|
22
22
|
flavours.forEach((flavour) => {
|
|
23
23
|
imports.push(getModuleFor(flavour).forRoot(flavour, {
|
|
24
24
|
autoServices,
|
|
25
|
+
controllerExposure: options.controllerExposure,
|
|
26
|
+
controllerConfig: options.controllerConfig,
|
|
27
|
+
aggregations: options.aggregations,
|
|
25
28
|
}));
|
|
26
29
|
});
|
|
27
30
|
}
|
package/lib/esm/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAmC,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,yBAAsB;AAEhD,OAAO,EAAE,YAAY,EAAE,+BAA4B;AACnD,OAAO,EAAE,iBAAiB,EAAE,iCAAwB;AAEpD;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAElD,MAAM,QAAQ,GACZ,MAAM,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,OAAO,GAOG,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAmC,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,yBAAsB;AAEhD,OAAO,EAAE,YAAY,EAAE,+BAA4B;AACnD,OAAO,EAAE,iBAAiB,EAAE,iCAAwB;AAEpD;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAElD,MAAM,QAAQ,GACZ,MAAM,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,OAAO,GAOG,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,eAAe,EAAE,CAAC;YAClB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;oBACrC,YAAY;oBACZ,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;oBAC9C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,YAAY,EAAE,OAAO,CAAC,YAAY;iBACnC,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAEH,IAAI,OAAO,CAAC,eAAe,EAAE,oBAAoB,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CACV,iBAAiB,CAAC,WAAW,CAC3B,OAAO,CAAC,eAAe,CAAC,gBAAgB,IAAI,QAAQ,CACrD,CACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AA7CY,WAAW;IADvB,MAAM,CAAC,EAAE,CAAC;GACE,WAAW,CA6CvB;;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,KAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overrides/index.ts"],"names":[],"mappings":"AAAA,wBAAqB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overrides/index.ts"],"names":[],"mappings":"AAAA,wBAAqB;AACrB,sBAAmB;AAEnB,6BAA0B;AAC1B,+BAA4B;AAC5B,gCAA6B;AAC7B,+BAA4B;AAC5B,4CAAyC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/overrides/logging.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
|
|
@@ -1,36 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { AuthorizationError, PersistenceKeys } from "@decaf-ts/core";
|
|
3
|
-
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
|
-
export class DecafAuthHandler {
|
|
5
|
-
parseRequest(req) {
|
|
6
|
-
const userRole = req.headers.authorization?.split(" ")[1];
|
|
7
|
-
return userRole;
|
|
8
|
-
}
|
|
9
|
-
async authorize(ctx, resource) {
|
|
10
|
-
const req = ctx.switchToHttp().getRequest();
|
|
11
|
-
const userRole = this.parseRequest(req);
|
|
12
|
-
if (!userRole)
|
|
13
|
-
throw new AuthorizationError("Unauthenticated");
|
|
14
|
-
const roles = Metadata.get(Model.get(resource), PersistenceKeys.AUTH_ROLE);
|
|
15
|
-
if (!roles.includes(userRole)) {
|
|
16
|
-
throw new AuthorizationError(`Missing role: ${userRole}`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
export class DecafRoleAuthHandler extends DecafAuthHandler {
|
|
21
|
-
constructor() {
|
|
22
|
-
super();
|
|
23
|
-
}
|
|
24
|
-
async authorize(ctx, resource) {
|
|
25
|
-
const req = ctx.switchToHttp().getRequest();
|
|
26
|
-
const userRole = this.parseRequest(req);
|
|
27
|
-
if (!userRole)
|
|
28
|
-
throw new AuthorizationError("Unauthenticated");
|
|
29
|
-
const roles = Metadata.get(Model.get(resource), PersistenceKeys.AUTH_ROLE);
|
|
30
|
-
if (!roles.includes(userRole)) {
|
|
31
|
-
throw new AuthorizationError(`Missing role: ${userRole}`);
|
|
32
|
-
}
|
|
33
|
-
return roles;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
export { DecafAuthHandler, DecafRoleAuthHandler } from "./../auth/index.js";
|
|
36
2
|
//# sourceMappingURL=DecafAuthHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecafAuthHandler.js","sourceRoot":"","sources":["../../../src/request/DecafAuthHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DecafAuthHandler.js","sourceRoot":"","sources":["../../../src/request/DecafAuthHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,2BAAgB"}
|
|
@@ -11,45 +11,38 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
11
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
12
|
};
|
|
13
13
|
import { Inject, Injectable, Scope } from "@nestjs/common";
|
|
14
|
-
import { InternalError } from "@decaf-ts/db-decorators";
|
|
15
14
|
import { REQUEST } from "@nestjs/core";
|
|
16
15
|
import { UUID } from "@decaf-ts/core";
|
|
17
|
-
|
|
16
|
+
import { RequestContext } from "@decaf-ts/for-http/server";
|
|
17
|
+
let DecafRequestContext = class DecafRequestContext extends RequestContext {
|
|
18
18
|
constructor(req) {
|
|
19
|
+
super({
|
|
20
|
+
headersOf: (request) => request?.headers || undefined,
|
|
21
|
+
}, req);
|
|
19
22
|
this.req = req;
|
|
20
23
|
this.uuid = UUID.instance.generate();
|
|
24
|
+
this.request = req;
|
|
21
25
|
}
|
|
22
|
-
get
|
|
23
|
-
return this.
|
|
26
|
+
get headers() {
|
|
27
|
+
return this.getOrUndefined("headers");
|
|
24
28
|
}
|
|
25
29
|
put(record) {
|
|
26
30
|
let overrides;
|
|
27
31
|
try {
|
|
28
|
-
overrides = this.
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
+
overrides = this.get("overrides");
|
|
30
33
|
}
|
|
31
34
|
catch (e) {
|
|
32
35
|
overrides = {};
|
|
33
36
|
}
|
|
34
|
-
this.
|
|
37
|
+
this.accumulate({
|
|
35
38
|
overrides: Object.assign(overrides, record),
|
|
36
39
|
});
|
|
37
40
|
}
|
|
38
|
-
applyCtx(ctx) {
|
|
39
|
-
if (this._ctx)
|
|
40
|
-
throw new InternalError("Trying to overwrite context");
|
|
41
|
-
this._ctx = ctx;
|
|
42
|
-
}
|
|
43
|
-
get ctx() {
|
|
44
|
-
if (!this._ctx)
|
|
45
|
-
throw new InternalError(`Context not initialized for request`);
|
|
46
|
-
return this._ctx;
|
|
47
|
-
}
|
|
48
41
|
};
|
|
49
42
|
DecafRequestContext = __decorate([
|
|
50
43
|
Injectable({ scope: Scope.REQUEST }),
|
|
51
44
|
__param(0, Inject(REQUEST)),
|
|
52
|
-
__metadata("design:paramtypes", [
|
|
45
|
+
__metadata("design:paramtypes", [Object])
|
|
53
46
|
], DecafRequestContext);
|
|
54
47
|
export { DecafRequestContext };
|
|
55
48
|
//# sourceMappingURL=DecafRequestContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecafRequestContext.js","sourceRoot":"","sources":["../../../src/request/DecafRequestContext.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DecafRequestContext.js","sourceRoot":"","sources":["../../../src/request/DecafRequestContext.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAMpD,IAAM,mBAAmB,GAAzB,MAAM,mBAGX,SAAQ,cAAuB;IAI/B,YAA6B,GAA6B;QACxD,KAAK,CACH;YACE,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAE,OAAe,EAAE,OAAO,IAAI,SAAS;SACjE,EACR,GAAG,CACJ,CAAC;QAN0C,QAAG,GAAH,GAAG,CAAS;QAH1D,SAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAU9B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,SAAgB,CAAC,CAAC;IAC/C,CAAC;IAED,GAAG,CAAC,MAAwB;QAC1B,IAAI,SAAc,CAAC;QACnB,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjCY,mBAAmB;IAD/B,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAQtB,WAAA,MAAM,CAAC,OAAO,CAAC,CAAA;;GAPjB,mBAAmB,CAiC/B"}
|
|
@@ -16,8 +16,10 @@ let DecafResponseInterceptor = class DecafResponseInterceptor {
|
|
|
16
16
|
}
|
|
17
17
|
intercept(context, next) {
|
|
18
18
|
let response = context.switchToHttp().getResponse();
|
|
19
|
-
return next.handle().pipe(
|
|
20
|
-
|
|
19
|
+
return next.handle().pipe(
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
+
tap((data) => {
|
|
22
|
+
response = this.ctx.toResponse(response);
|
|
21
23
|
}));
|
|
22
24
|
}
|
|
23
25
|
};
|