@decaf-ts/for-nest 0.1.23 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +1 -1
  2. package/dist/for-nest.cjs +1 -1
  3. package/dist/for-nest.cjs.map +1 -1
  4. package/dist/for-nest.js +1 -1
  5. package/dist/for-nest.js.map +1 -1
  6. package/lib/constants.cjs +2 -1
  7. package/lib/constants.d.ts +8 -0
  8. package/lib/constants.js.map +1 -1
  9. package/lib/controllers.cjs +67 -0
  10. package/lib/controllers.d.ts +20 -0
  11. package/lib/controllers.js.map +1 -0
  12. package/lib/core-module.cjs +57 -28
  13. package/lib/core-module.d.ts +4 -4
  14. package/lib/core-module.js.map +1 -1
  15. package/lib/decaf-model/DecafModelModule.cjs +54 -49
  16. package/lib/decaf-model/DecafModelModule.d.ts +8 -6
  17. package/lib/decaf-model/DecafModelModule.js.map +1 -1
  18. package/lib/decaf-model/FromModelController.cjs +97 -48
  19. package/lib/decaf-model/FromModelController.d.ts +2 -2
  20. package/lib/decaf-model/FromModelController.js.map +1 -1
  21. package/lib/decaf-model/decorators/DecafBody.cjs +1 -1
  22. package/lib/decaf-model/decorators/DecafParams.cjs +23 -8
  23. package/lib/decaf-model/decorators/DecafParams.d.ts +1 -0
  24. package/lib/decaf-model/decorators/DecafParams.js.map +1 -1
  25. package/lib/decaf-model/types.cjs +0 -12
  26. package/lib/decaf-model/types.d.ts +3 -14
  27. package/lib/decaf-model/types.js.map +1 -1
  28. package/lib/decaf-model/utils.cjs +1 -1
  29. package/lib/decaf-model/utils.d.ts +3 -2
  30. package/lib/decaf-model/utils.js.map +1 -1
  31. package/lib/decoration.cjs +53 -33
  32. package/lib/decoration.js.map +1 -1
  33. package/lib/esm/constants.d.ts +8 -0
  34. package/lib/esm/constants.js +1 -0
  35. package/lib/esm/constants.js.map +1 -1
  36. package/lib/esm/controllers.d.ts +20 -0
  37. package/lib/esm/controllers.js +62 -0
  38. package/lib/esm/controllers.js.map +1 -0
  39. package/lib/esm/core-module.d.ts +4 -4
  40. package/lib/esm/core-module.js +57 -28
  41. package/lib/esm/core-module.js.map +1 -1
  42. package/lib/esm/decaf-model/DecafModelModule.d.ts +8 -6
  43. package/lib/esm/decaf-model/DecafModelModule.js +53 -48
  44. package/lib/esm/decaf-model/DecafModelModule.js.map +1 -1
  45. package/lib/esm/decaf-model/FromModelController.d.ts +2 -2
  46. package/lib/esm/decaf-model/FromModelController.js +100 -51
  47. package/lib/esm/decaf-model/FromModelController.js.map +1 -1
  48. package/lib/esm/decaf-model/decorators/DecafBody.js +1 -1
  49. package/lib/esm/decaf-model/decorators/DecafParams.d.ts +1 -0
  50. package/lib/esm/decaf-model/decorators/DecafParams.js +22 -8
  51. package/lib/esm/decaf-model/decorators/DecafParams.js.map +1 -1
  52. package/lib/esm/decaf-model/types.d.ts +3 -14
  53. package/lib/esm/decaf-model/types.js +1 -10
  54. package/lib/esm/decaf-model/types.js.map +1 -1
  55. package/lib/esm/decaf-model/utils.d.ts +3 -2
  56. package/lib/esm/decaf-model/utils.js +1 -1
  57. package/lib/esm/decaf-model/utils.js.map +1 -1
  58. package/lib/esm/decoration.js +45 -25
  59. package/lib/esm/decoration.js.map +1 -1
  60. package/lib/esm/factory/openapi/DtoBuilder.d.ts +15 -0
  61. package/lib/esm/factory/openapi/DtoBuilder.js +88 -0
  62. package/lib/esm/factory/openapi/DtoBuilder.js.map +1 -0
  63. package/lib/esm/factory/openapi/index.d.ts +1 -0
  64. package/lib/esm/factory/openapi/index.js +1 -0
  65. package/lib/esm/factory/openapi/index.js.map +1 -1
  66. package/lib/esm/index.d.ts +8 -6
  67. package/lib/esm/index.js +8 -6
  68. package/lib/esm/index.js.map +1 -1
  69. package/lib/esm/interceptors/DecafRequestHandlerInterceptor.d.ts +8 -4
  70. package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +38 -6
  71. package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js.map +1 -1
  72. package/lib/esm/interceptors/context.d.ts +6 -0
  73. package/lib/esm/interceptors/context.js +12 -0
  74. package/lib/esm/interceptors/context.js.map +1 -0
  75. package/lib/esm/module.js +9 -7
  76. package/lib/esm/module.js.map +1 -1
  77. package/lib/esm/overrides/Adapter.d.ts +10 -0
  78. package/lib/esm/overrides/Adapter.js +2 -0
  79. package/lib/esm/overrides/Adapter.js.map +1 -0
  80. package/lib/esm/overrides/constants.d.ts +21 -0
  81. package/lib/esm/overrides/constants.js +22 -0
  82. package/lib/esm/overrides/constants.js.map +1 -0
  83. package/lib/esm/overrides/decoration.d.ts +30 -0
  84. package/lib/esm/overrides/decoration.js +111 -0
  85. package/lib/esm/overrides/decoration.js.map +1 -0
  86. package/lib/esm/overrides/helpers.d.ts +11 -0
  87. package/lib/esm/overrides/helpers.js +136 -0
  88. package/lib/esm/overrides/helpers.js.map +1 -0
  89. package/lib/esm/overrides/index.d.ts +4 -0
  90. package/lib/esm/overrides/index.js +5 -0
  91. package/lib/esm/overrides/index.js.map +1 -0
  92. package/lib/esm/overrides/overrides.d.ts +1 -0
  93. package/lib/esm/overrides/overrides.js +13 -0
  94. package/lib/esm/overrides/overrides.js.map +1 -0
  95. package/lib/esm/request/DecafAuthHandler.d.ts +10 -0
  96. package/lib/esm/request/DecafAuthHandler.js +37 -0
  97. package/lib/esm/request/DecafAuthHandler.js.map +1 -0
  98. package/lib/esm/request/DecafHandlerExecutor.js +1 -1
  99. package/lib/esm/request/DecafHandlerExecutor.js.map +1 -1
  100. package/lib/esm/request/DecafRequestContext.d.ts +5 -4
  101. package/lib/esm/request/DecafRequestContext.js +7 -7
  102. package/lib/esm/request/DecafRequestContext.js.map +1 -1
  103. package/lib/esm/request/RamRequestTransformer.d.ts +5 -0
  104. package/lib/esm/request/RamRequestTransformer.js +25 -0
  105. package/lib/esm/request/RamRequestTransformer.js.map +1 -0
  106. package/lib/esm/request/index.d.ts +2 -0
  107. package/lib/esm/request/index.js +2 -0
  108. package/lib/esm/request/index.js.map +1 -1
  109. package/lib/esm/types.d.ts +13 -5
  110. package/lib/factory/openapi/DtoBuilder.cjs +91 -0
  111. package/lib/factory/openapi/DtoBuilder.d.ts +15 -0
  112. package/lib/factory/openapi/DtoBuilder.js.map +1 -0
  113. package/lib/factory/openapi/index.cjs +1 -0
  114. package/lib/factory/openapi/index.d.ts +1 -0
  115. package/lib/factory/openapi/index.js.map +1 -1
  116. package/lib/index.cjs +8 -6
  117. package/lib/index.d.ts +8 -6
  118. package/lib/index.js.map +1 -1
  119. package/lib/interceptors/DecafRequestHandlerInterceptor.cjs +37 -5
  120. package/lib/interceptors/DecafRequestHandlerInterceptor.d.ts +8 -4
  121. package/lib/interceptors/DecafRequestHandlerInterceptor.js.map +1 -1
  122. package/lib/interceptors/context.cjs +17 -0
  123. package/lib/interceptors/context.d.ts +6 -0
  124. package/lib/interceptors/context.js.map +1 -0
  125. package/lib/module.cjs +9 -7
  126. package/lib/module.js.map +1 -1
  127. package/lib/overrides/Adapter.cjs +4 -0
  128. package/lib/overrides/Adapter.d.ts +10 -0
  129. package/lib/overrides/Adapter.js.map +1 -0
  130. package/lib/overrides/constants.cjs +25 -0
  131. package/lib/overrides/constants.d.ts +21 -0
  132. package/lib/overrides/constants.js.map +1 -0
  133. package/lib/overrides/decoration.cjs +120 -0
  134. package/lib/overrides/decoration.d.ts +30 -0
  135. package/lib/overrides/decoration.js.map +1 -0
  136. package/lib/overrides/helpers.cjs +146 -0
  137. package/lib/overrides/helpers.d.ts +11 -0
  138. package/lib/overrides/helpers.js.map +1 -0
  139. package/lib/overrides/index.cjs +21 -0
  140. package/lib/overrides/index.d.ts +4 -0
  141. package/lib/overrides/index.js.map +1 -0
  142. package/lib/overrides/overrides.cjs +15 -0
  143. package/lib/overrides/overrides.d.ts +1 -0
  144. package/lib/overrides/overrides.js.map +1 -0
  145. package/lib/request/DecafAuthHandler.cjs +42 -0
  146. package/lib/request/DecafAuthHandler.d.ts +10 -0
  147. package/lib/request/DecafAuthHandler.js.map +1 -0
  148. package/lib/request/DecafHandlerExecutor.cjs +1 -1
  149. package/lib/request/DecafHandlerExecutor.js.map +1 -1
  150. package/lib/request/DecafRequestContext.cjs +7 -7
  151. package/lib/request/DecafRequestContext.d.ts +5 -4
  152. package/lib/request/DecafRequestContext.js.map +1 -1
  153. package/lib/request/RamRequestTransformer.cjs +28 -0
  154. package/lib/request/RamRequestTransformer.d.ts +5 -0
  155. package/lib/request/RamRequestTransformer.js.map +1 -0
  156. package/lib/request/index.cjs +2 -0
  157. package/lib/request/index.d.ts +2 -0
  158. package/lib/request/index.js.map +1 -1
  159. package/lib/types.d.ts +13 -5
  160. package/package.json +9 -1
  161. package/lib/esm/factory/context.d.ts +0 -0
  162. package/lib/esm/factory/context.js +0 -2
  163. package/lib/esm/factory/context.js.map +0 -1
  164. package/lib/factory/context.cjs +0 -2
  165. package/lib/factory/context.d.ts +0 -0
  166. package/lib/factory/context.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DtoBuilder.js","sourceRoot":"","sources":["../../../src/factory/openapi/DtoBuilder.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./SwaggerBuilder.cjs"), exports);
18
+ __exportStar(require("./DtoBuilder.cjs"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1,2 @@
1
1
  export * from "./SwaggerBuilder";
2
+ export * from "./DtoBuilder";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factory/openapi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factory/openapi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,mDAA6B"}
package/lib/index.cjs CHANGED
@@ -38,22 +38,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.PACKAGE_NAME = exports.VERSION = void 0;
39
39
  const decoration_1 = require("@decaf-ts/decoration");
40
40
  require("./decoration.cjs");
41
+ __exportStar(require("./decoration.cjs"), exports); // on top on purpose
42
+ __exportStar(require("./decaf-model/index.cjs"), exports);
43
+ __exportStar(require("./factory/index.cjs"), exports);
44
+ __exportStar(require("./interceptors/index.cjs"), exports);
45
+ __exportStar(require("./overrides/index.cjs"), exports);
46
+ __exportStar(require("./request/index.cjs"), exports);
41
47
  __exportStar(require("./constants.cjs"), exports);
42
- __exportStar(require("./decoration.cjs"), exports);
48
+ __exportStar(require("./controllers.cjs"), exports);
43
49
  __exportStar(require("./module.cjs"), exports);
44
50
  __exportStar(require("./types.cjs"), exports);
45
51
  __exportStar(require("./utils.cjs"), exports);
46
- __exportStar(require("./factory/index.cjs"), exports);
47
- __exportStar(require("./decaf-model/index.cjs"), exports);
48
- __exportStar(require("./interceptors/index.cjs"), exports);
49
- __exportStar(require("./request/index.cjs"), exports);
50
52
  /**
51
53
  * Represents the current version of the ts-workspace module.
52
54
  * The actual version number is replaced during the build process.
53
55
  * @constant
54
56
  * @type {string}
55
57
  */
56
- exports.VERSION = "0.1.22";
58
+ exports.VERSION = "0.1.24";
57
59
  exports.PACKAGE_NAME = "@decaf-ts/for-nest";
58
60
  decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
59
61
  //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -20,20 +20,22 @@
20
20
  * to easily import and use specific parts of the library as needed.
21
21
  */
22
22
  import "./decoration";
23
- export * from "./constants";
24
23
  export * from "./decoration";
25
- export * from "./module";
26
- export * from "./types";
27
- export * from "./utils";
28
- export * from "./factory";
29
24
  export * from "./decaf-model";
25
+ export * from "./factory";
30
26
  export * from "./interceptors";
27
+ export * from "./overrides";
31
28
  export * from "./request";
29
+ export * from "./constants";
30
+ export * from "./controllers";
31
+ export * from "./module";
32
+ export * from "./types";
33
+ export * from "./utils";
32
34
  /**
33
35
  * Represents the current version of the ts-workspace module.
34
36
  * The actual version number is replaced during the build process.
35
37
  * @constant
36
38
  * @type {string}
37
39
  */
38
- export declare const VERSION = "0.1.22";
40
+ export declare const VERSION = "0.1.24";
39
41
  export declare const PACKAGE_NAME = "@decaf-ts/for-nest";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;AAEH,qDAAgD;AAChD,4BAAsB;AAEtB,kDAA4B;AAC5B,mDAA6B;AAC7B,+CAAyB;AACzB,8CAAwB;AACxB,8CAAwB;AACxB,sDAA0B;AAC1B,0DAA8B;AAC9B,2DAA+B;AAC/B,sDAA0B;AAE1B;;;;;GAKG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AACxB,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;AAEH,qDAAgD;AAChD,4BAAsB;AAEtB,mDAA6B,CAAC,oBAAoB;AAClD,0DAA8B;AAC9B,sDAA0B;AAC1B,2DAA+B;AAC/B,wDAA4B;AAC5B,sDAA0B;AAC1B,kDAA4B;AAC5B,oDAA8B;AAC9B,+CAAyB;AACzB,8CAAwB;AACxB,8CAAwB;AAExB;;;;;GAKG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AACxB,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}
@@ -12,6 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DecafRequestHandlerInterceptor = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const request_1 = require("./../request/index.cjs");
15
+ const core_1 = require("@decaf-ts/core");
16
+ require("./../overrides/index.cjs");
17
+ const logging_1 = require("@decaf-ts/logging");
18
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
15
19
  /**
16
20
  * @description
17
21
  * Interceptor responsible for executing all registered Decaf request handlers
@@ -59,12 +63,39 @@ const request_1 = require("./../request/index.cjs");
59
63
  * Controller-->>Client: Response
60
64
  */
61
65
  let DecafRequestHandlerInterceptor = class DecafRequestHandlerInterceptor {
62
- constructor(executor) {
66
+ constructor(requestContext, executor) {
67
+ this.requestContext = requestContext;
63
68
  this.executor = executor;
64
69
  }
65
- async intercept(ctx, next) {
66
- const req = ctx.switchToHttp().getRequest();
67
- const res = ctx.switchToHttp().getResponse();
70
+ async contextualize(req) {
71
+ const headers = req.headers;
72
+ const flags = {
73
+ headers: headers,
74
+ overrides: {},
75
+ };
76
+ const flavours = core_1.Adapter.flavoursToTransform();
77
+ if (flavours)
78
+ for (const flavour of flavours) {
79
+ try {
80
+ const transformer = core_1.Adapter.transformerFor(flavour);
81
+ const from = await transformer.from(req);
82
+ Object.assign(flags.overrides, from);
83
+ }
84
+ catch (e) {
85
+ throw new db_decorators_1.InternalError(`Failed to contextualize request: ${e}`);
86
+ }
87
+ }
88
+ const ctx = new core_1.Context().accumulate(Object.assign({}, core_1.DefaultAdapterFlags, {
89
+ logger: logging_1.Logging.get(),
90
+ timestamp: new Date(),
91
+ }, flags));
92
+ return ctx;
93
+ }
94
+ async intercept(context, next) {
95
+ const req = context.switchToHttp().getRequest();
96
+ const res = context.switchToHttp().getResponse();
97
+ const ctx = await this.contextualize(req);
98
+ this.requestContext.applyCtx(ctx);
68
99
  await this.executor.exec(req, res);
69
100
  return next.handle();
70
101
  }
@@ -72,6 +103,7 @@ let DecafRequestHandlerInterceptor = class DecafRequestHandlerInterceptor {
72
103
  exports.DecafRequestHandlerInterceptor = DecafRequestHandlerInterceptor;
73
104
  exports.DecafRequestHandlerInterceptor = DecafRequestHandlerInterceptor = __decorate([
74
105
  (0, common_1.Injectable)({ scope: common_1.Scope.REQUEST }),
75
- __metadata("design:paramtypes", [request_1.DecafHandlerExecutor])
106
+ __metadata("design:paramtypes", [request_1.DecafRequestContext,
107
+ request_1.DecafHandlerExecutor])
76
108
  ], DecafRequestHandlerInterceptor);
77
109
  //# sourceMappingURL=DecafRequestHandlerInterceptor.js.map
@@ -1,5 +1,7 @@
1
1
  import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
2
- import { DecafHandlerExecutor } from "../request";
2
+ import { DecafHandlerExecutor, DecafRequestContext } from "../request";
3
+ import { DecafServerContext } from "../constants";
4
+ import "../overrides";
3
5
  /**
4
6
  * @description
5
7
  * Interceptor responsible for executing all registered Decaf request handlers
@@ -47,7 +49,9 @@ import { DecafHandlerExecutor } from "../request";
47
49
  * Controller-->>Client: Response
48
50
  */
49
51
  export declare class DecafRequestHandlerInterceptor implements NestInterceptor {
50
- private readonly executor;
51
- constructor(executor: DecafHandlerExecutor);
52
- intercept(ctx: ExecutionContext, next: CallHandler): Promise<import("rxjs").Observable<any>>;
52
+ protected readonly requestContext: DecafRequestContext;
53
+ protected readonly executor: DecafHandlerExecutor;
54
+ constructor(requestContext: DecafRequestContext, executor: DecafHandlerExecutor);
55
+ protected contextualize(req: any): Promise<DecafServerContext>;
56
+ intercept(context: ExecutionContext, next: CallHandler): Promise<import("rxjs").Observable<any>>;
53
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DecafRequestHandlerInterceptor.js","sourceRoot":"","sources":["../../src/interceptors/DecafRequestHandlerInterceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AACxB,oDAAkD;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEI,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACzC,YAA6B,QAA8B;QAA9B,aAAQ,GAAR,QAAQ,CAAsB;IAAG,CAAC;IAE/D,KAAK,CAAC,SAAS,CAAC,GAAqB,EAAE,IAAiB;QACtD,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AATY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;qCAEI,8BAAoB;GADhD,8BAA8B,CAS1C"}
1
+ {"version":3,"file":"DecafRequestHandlerInterceptor.js","sourceRoot":"","sources":["../../src/interceptors/DecafRequestHandlerInterceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AACxB,oDAAuE;AACvE,yCAAuE;AAEvE,oCAAsB;AACtB,+CAA4C;AAC5C,2DAAwD;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEI,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACzC,YACqB,cAAmC,EACnC,QAA8B;QAD9B,mBAAc,GAAd,cAAc,CAAqB;QACnC,aAAQ,GAAR,QAAQ,CAAsB;IAChD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,GAAQ;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,MAAM,KAAK,GAAqB;YAC9B,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,EAAE;SACP,CAAC;QAET,MAAM,QAAQ,GAAG,cAAO,CAAC,mBAAmB,EAAE,CAAC;QAC/C,IAAI,QAAQ;YACV,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,cAAO,CAAC,cAAc,CACxC,OAAO,CAC4B,CAAC;oBACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,MAAM,IAAI,6BAAa,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,cAAO,EAAE,CAAC,UAAU,CAClC,MAAM,CAAC,MAAM,CACX,EAAE,EACF,0BAAmB,EACnB;YACE,MAAM,EAAE,iBAAO,CAAC,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,EACD,KAAK,CACN,CACF,CAAC;QACF,OAAO,GAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAhDY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;qCAGE,6BAAmB;QACzB,8BAAoB;GAHxC,8BAA8B,CAgD1C"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestToContextTransformer = void 0;
4
+ exports.requestToContextTransformer = requestToContextTransformer;
5
+ const decoration_1 = require("@decaf-ts/decoration");
6
+ class RequestToContextTransformer {
7
+ }
8
+ exports.RequestToContextTransformer = RequestToContextTransformer;
9
+ function requestToContextTransformer(flavour) {
10
+ return function requestToContextTransformer(original) {
11
+ decoration_1.Metadata.set("transformers", flavour, original);
12
+ if (typeof original === "function")
13
+ return (0, decoration_1.metadata)("transformers", flavour)(original);
14
+ return original;
15
+ };
16
+ }
17
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1,6 @@
1
+ import { DecafServerContext } from "../constants";
2
+ import { FlagsOf } from "@decaf-ts/core";
3
+ export declare abstract class RequestToContextTransformer<C extends DecafServerContext> {
4
+ abstract from(req: any, ...args: any[]): Promise<FlagsOf<C>>;
5
+ }
6
+ export declare function requestToContextTransformer(flavour: string): (original: any) => any;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/interceptors/context.ts"],"names":[],"mappings":";;;AAUA,kEAOC;AAfD,qDAA0D;AAE1D,MAAsB,2BAA2B;CAIhD;AAJD,kEAIC;AAED,SAAgB,2BAA2B,CAAC,OAAe;IACzD,OAAO,SAAS,2BAA2B,CAAC,QAAa;QACvD,qBAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,OAAO,IAAA,qBAAQ,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
package/lib/module.cjs CHANGED
@@ -10,21 +10,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.DecafModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const core_module_1 = require("./core-module.cjs");
13
- const decaf_model_1 = require("./decaf-model/index.cjs");
13
+ const index_1 = require("./decaf-model/index.cjs");
14
14
  /**
15
15
  * @publicApi
16
16
  */
17
17
  let DecafModule = DecafModule_1 = class DecafModule {
18
18
  static async forRootAsync(options) {
19
19
  const { autoControllers, autoServices, handlers } = options;
20
- const adapter = await core_module_1.DecafCoreModule.createAdapter(options);
21
- const flavour = adapter.flavour;
20
+ const adapters = await core_module_1.DecafCoreModule.bootPersistence(options);
21
+ const flavours = adapters.map((adapter) => adapter.flavour);
22
22
  const imports = [core_module_1.DecafCoreModule.forRoot(options)];
23
23
  if (autoControllers) {
24
- imports.push(decaf_model_1.DecafModelModule.forRoot(flavour, {
25
- autoServices,
26
- handlers,
27
- }));
24
+ flavours.forEach((flavour) => {
25
+ imports.push((0, index_1.getModuleFor)(flavour).forRoot(flavour, {
26
+ autoServices,
27
+ handlers,
28
+ }));
29
+ });
28
30
  }
29
31
  return {
30
32
  module: DecafModule_1,
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAE/E,mDAAgD;AAChD,yDAAiD;AAEjD;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE5D,MAAM,OAAO,GAAG,MAAM,6BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEhC,MAAM,OAAO,GAOG,CAAC,6BAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,8BAAgB,CAAC,OAAO,CAAC,OAAO,EAAE;gBAChC,YAAY;gBACZ,QAAQ;aACT,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAgCvB"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAE/E,mDAAgD;AAEhD,mDAAmD;AAEnD;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE5D,MAAM,QAAQ,GACZ,MAAM,6BAAe,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,6BAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,OAAO,CAAC,IAAI,CACV,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;oBACrC,YAAY;oBACZ,QAAQ;iBACT,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAmCvB"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("@decaf-ts/core");
4
+ //# sourceMappingURL=Adapter.js.map
@@ -0,0 +1,10 @@
1
+ import "@decaf-ts/core";
2
+ import type { Constructor } from "@decaf-ts/decoration";
3
+ import { RequestToContextTransformer } from "../interceptors/context";
4
+ import { ContextOf } from "@decaf-ts/core";
5
+ declare module "@decaf-ts/core" {
6
+ namespace Adapter {
7
+ function transformerFor<A extends Adapter<any, any, any, any>>(adapter: A | string): Constructor<RequestToContextTransformer<ContextOf<A>>> | RequestToContextTransformer<ContextOf<A>>;
8
+ function flavoursToTransform(): string[] | undefined;
9
+ }
10
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../src/overrides/Adapter.ts"],"names":[],"mappings":";;AAAA,0BAAwB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DECORATORS = exports.DECORATORS_PREFIX = void 0;
4
+ exports.DECORATORS_PREFIX = "swagger";
5
+ exports.DECORATORS = {
6
+ API_OPERATION: `${exports.DECORATORS_PREFIX}/apiOperation`,
7
+ API_RESPONSE: `${exports.DECORATORS_PREFIX}/apiResponse`,
8
+ API_PRODUCES: `${exports.DECORATORS_PREFIX}/apiProduces`,
9
+ API_CONSUMES: `${exports.DECORATORS_PREFIX}/apiConsumes`,
10
+ API_TAGS: `${exports.DECORATORS_PREFIX}/apiUseTags`,
11
+ API_CALLBACKS: `${exports.DECORATORS_PREFIX}/apiCallbacks`,
12
+ API_PARAMETERS: `${exports.DECORATORS_PREFIX}/apiParameters`,
13
+ API_HEADERS: `${exports.DECORATORS_PREFIX}/apiHeaders`,
14
+ API_MODEL_PROPERTIES: `${exports.DECORATORS_PREFIX}/apiModelProperties`,
15
+ API_MODEL_PROPERTIES_ARRAY: `${exports.DECORATORS_PREFIX}/apiModelPropertiesArray`,
16
+ API_SECURITY: `${exports.DECORATORS_PREFIX}/apiSecurity`,
17
+ API_EXCLUDE_ENDPOINT: `${exports.DECORATORS_PREFIX}/apiExcludeEndpoint`,
18
+ API_EXCLUDE_CONTROLLER: `${exports.DECORATORS_PREFIX}/apiExcludeController`,
19
+ API_EXTRA_MODELS: `${exports.DECORATORS_PREFIX}/apiExtraModels`,
20
+ API_EXTENSION: `${exports.DECORATORS_PREFIX}/apiExtension`,
21
+ API_SCHEMA: `${exports.DECORATORS_PREFIX}/apiSchema`,
22
+ API_DEFAULT_GETTER: `${exports.DECORATORS_PREFIX}/apiDefaultGetter`,
23
+ API_LINK: `${exports.DECORATORS_PREFIX}/apiLink`,
24
+ };
25
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,21 @@
1
+ export declare const DECORATORS_PREFIX = "swagger";
2
+ export declare const DECORATORS: {
3
+ API_OPERATION: string;
4
+ API_RESPONSE: string;
5
+ API_PRODUCES: string;
6
+ API_CONSUMES: string;
7
+ API_TAGS: string;
8
+ API_CALLBACKS: string;
9
+ API_PARAMETERS: string;
10
+ API_HEADERS: string;
11
+ API_MODEL_PROPERTIES: string;
12
+ API_MODEL_PROPERTIES_ARRAY: string;
13
+ API_SECURITY: string;
14
+ API_EXCLUDE_ENDPOINT: string;
15
+ API_EXCLUDE_CONTROLLER: string;
16
+ API_EXTRA_MODELS: string;
17
+ API_EXTENSION: string;
18
+ API_SCHEMA: string;
19
+ API_DEFAULT_GETTER: string;
20
+ API_LINK: string;
21
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/overrides/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,UAAU,GAAG;IACxB,aAAa,EAAE,GAAG,yBAAiB,eAAe;IAClD,YAAY,EAAE,GAAG,yBAAiB,cAAc;IAChD,YAAY,EAAE,GAAG,yBAAiB,cAAc;IAChD,YAAY,EAAE,GAAG,yBAAiB,cAAc;IAChD,QAAQ,EAAE,GAAG,yBAAiB,aAAa;IAC3C,aAAa,EAAE,GAAG,yBAAiB,eAAe;IAClD,cAAc,EAAE,GAAG,yBAAiB,gBAAgB;IACpD,WAAW,EAAE,GAAG,yBAAiB,aAAa;IAC9C,oBAAoB,EAAE,GAAG,yBAAiB,qBAAqB;IAC/D,0BAA0B,EAAE,GAAG,yBAAiB,0BAA0B;IAC1E,YAAY,EAAE,GAAG,yBAAiB,cAAc;IAChD,oBAAoB,EAAE,GAAG,yBAAiB,qBAAqB;IAC/D,sBAAsB,EAAE,GAAG,yBAAiB,uBAAuB;IACnE,gBAAgB,EAAE,GAAG,yBAAiB,iBAAiB;IACvD,aAAa,EAAE,GAAG,yBAAiB,eAAe;IAClD,UAAU,EAAE,GAAG,yBAAiB,YAAY;IAC5C,kBAAkB,EAAE,GAAG,yBAAiB,mBAAmB;IAC3D,QAAQ,EAAE,GAAG,yBAAiB,UAAU;CACzC,CAAC"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUndefined = void 0;
4
+ exports.getEnumValues = getEnumValues;
5
+ exports.getEnumType = getEnumType;
6
+ exports.createPropertyDecorator = createPropertyDecorator;
7
+ exports.ApiProperty = ApiProperty;
8
+ exports.createApiPropertyDecorator = createApiPropertyDecorator;
9
+ const lodash_1 = require("lodash");
10
+ const constants_1 = require("./constants.cjs");
11
+ const helpers_1 = require("./helpers.cjs");
12
+ const isUndefined = (obj) => typeof obj === "undefined";
13
+ exports.isUndefined = isUndefined;
14
+ function getEnumValues(enumType) {
15
+ if (typeof enumType === "function") {
16
+ return getEnumValues(enumType());
17
+ }
18
+ if (Array.isArray(enumType)) {
19
+ return enumType;
20
+ }
21
+ if (typeof enumType !== "object") {
22
+ return [];
23
+ }
24
+ // Enums with numeric values
25
+ // enum Size {
26
+ // SMALL = 1,
27
+ // BIG = 2
28
+ // }
29
+ // are transpiled to include a reverse mapping
30
+ // const Size = {
31
+ // "1": "SMALL",
32
+ // "2": "BIG",
33
+ // "SMALL": 1,
34
+ // "BIG": 2,
35
+ // }
36
+ const numericValues = Object.values(enumType)
37
+ .filter((value) => typeof value === "number")
38
+ .map((value) => value.toString());
39
+ return Object.keys(enumType)
40
+ .filter((key) => !numericValues.includes(key))
41
+ .map((key) => enumType[key]);
42
+ }
43
+ function getEnumType(values) {
44
+ const hasString = values.filter(lodash_1.isString).length > 0;
45
+ return hasString ? "string" : "number";
46
+ }
47
+ function createPropertyDecorator(metakey, metadata, overrideExisting = true) {
48
+ return ((target, propertyKey) => {
49
+ const properties = Reflect.getMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, target) || [];
50
+ const key = `:${propertyKey}`;
51
+ if (!properties.includes(key)) {
52
+ Reflect.defineMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, [...properties, `:${propertyKey}`], target);
53
+ }
54
+ const existingMetadata = Reflect.getMetadata(metakey, target, propertyKey);
55
+ if (existingMetadata) {
56
+ const newMetadata = (0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(exports.isUndefined));
57
+ const metadataToSave = overrideExisting
58
+ ? {
59
+ ...existingMetadata,
60
+ ...newMetadata,
61
+ }
62
+ : {
63
+ ...newMetadata,
64
+ ...existingMetadata,
65
+ };
66
+ Reflect.defineMetadata(metakey, metadataToSave, target, propertyKey);
67
+ }
68
+ else {
69
+ const type =
70
+ // @ts-expect-error nest js code
71
+ target?.constructor?.[helpers_1.METADATA_FACTORY_NAME]?.()[propertyKey]?.type ??
72
+ Reflect.getMetadata("design:type", target, propertyKey);
73
+ Reflect.defineMetadata(metakey, {
74
+ type,
75
+ ...(0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(exports.isUndefined)),
76
+ }, target, propertyKey);
77
+ }
78
+ });
79
+ }
80
+ const isEnumArray = (opts) => (opts.isArray && "enum" in opts && opts.enum !== undefined);
81
+ /**
82
+ * @publicApi
83
+ */
84
+ function ApiProperty(options = {}) {
85
+ return createApiPropertyDecorator(options);
86
+ }
87
+ function createApiPropertyDecorator(options = {}, overrideExisting = true) {
88
+ const [type, isArray] = (0, helpers_1.getTypeIsArrayTuple)(options.type, options.isArray);
89
+ options = {
90
+ ...options,
91
+ type,
92
+ isArray,
93
+ };
94
+ if (isEnumArray(options)) {
95
+ options.type = "array";
96
+ const enumValues = getEnumValues(options.enum);
97
+ options.items = {
98
+ type: getEnumType(enumValues),
99
+ enum: enumValues,
100
+ };
101
+ // @ts-expect-error nest js code
102
+ delete options.enum;
103
+ }
104
+ else if ("enum" in options && options.enum !== undefined) {
105
+ const enumValues = getEnumValues(options.enum);
106
+ options.enum = enumValues;
107
+ options.type = getEnumType(enumValues);
108
+ }
109
+ if (Array.isArray(options.type)) {
110
+ options.type = "array";
111
+ options.items = {
112
+ type: "array",
113
+ items: {
114
+ type: options.type[0],
115
+ },
116
+ };
117
+ }
118
+ return createPropertyDecorator(constants_1.DECORATORS.API_MODEL_PROPERTIES, options, overrideExisting);
119
+ }
120
+ //# sourceMappingURL=decoration.js.map
@@ -0,0 +1,30 @@
1
+ import { Type } from "@nestjs/common";
2
+ import type { EnumSchemaAttributes } from "@nestjs/swagger/dist/interfaces/enum-schema-attributes.interface";
3
+ import type { SchemaObjectMetadata } from "@nestjs/swagger/dist/interfaces/schema-object-metadata.interface";
4
+ import { type SwaggerEnumType } from "@nestjs/swagger/dist/types/swagger-enum.type";
5
+ export declare const isUndefined: (obj: any) => obj is undefined;
6
+ export declare function getEnumValues(enumType: SwaggerEnumType | (() => SwaggerEnumType)): string[] | number[];
7
+ export declare function getEnumType(values: (string | number)[]): "string" | "number";
8
+ export declare function createPropertyDecorator<T extends Record<string, any> = any>(metakey: string, metadata: T, overrideExisting?: boolean): PropertyDecorator;
9
+ export type ApiPropertyCommonOptions = SchemaObjectMetadata & {
10
+ "x-enumNames"?: string[];
11
+ /**
12
+ * Lazy function returning the type for which the decorated property
13
+ * can be used as an id
14
+ *
15
+ * Use together with @ApiDefaultGetter on the getter route of the type
16
+ * to generate OpenAPI link objects
17
+ *
18
+ * @see [Swagger link objects](https://swagger.io/docs/specification/links/)
19
+ */
20
+ link?: () => Type<unknown> | Function;
21
+ };
22
+ export type ApiPropertyOptions = ApiPropertyCommonOptions | (ApiPropertyCommonOptions & {
23
+ enumName: string;
24
+ enumSchema?: EnumSchemaAttributes;
25
+ });
26
+ /**
27
+ * @publicApi
28
+ */
29
+ export declare function ApiProperty(options?: ApiPropertyOptions): PropertyDecorator;
30
+ export declare function createApiPropertyDecorator(options?: ApiPropertyOptions, overrideExisting?: boolean): PropertyDecorator;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoration.js","sourceRoot":"","sources":["../../src/overrides/decoration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.METHOD_METADATA = exports.METADATA_FACTORY_NAME = exports.isConstructor = void 0;
4
+ exports.createMethodDecorator = createMethodDecorator;
5
+ exports.createClassDecorator = createClassDecorator;
6
+ exports.createPropertyDecorator = createPropertyDecorator;
7
+ exports.createMixedDecorator = createMixedDecorator;
8
+ exports.createParamDecorator = createParamDecorator;
9
+ exports.getTypeIsArrayTuple = getTypeIsArrayTuple;
10
+ const lodash_1 = require("lodash");
11
+ const constants_1 = require("./constants.cjs");
12
+ const isConstructor = (val) => val === "constructor";
13
+ exports.isConstructor = isConstructor;
14
+ exports.METADATA_FACTORY_NAME = "_OPENAPI_METADATA_FACTORY";
15
+ exports.METHOD_METADATA = "method";
16
+ function createMethodDecorator(metakey, metadata, { overrideExisting } = { overrideExisting: true }) {
17
+ return (target, key, descriptor) => {
18
+ if (typeof metadata === "object") {
19
+ const prevValue = Reflect.getMetadata(metakey, descriptor.value);
20
+ if (prevValue && !overrideExisting) {
21
+ return descriptor;
22
+ }
23
+ Reflect.defineMetadata(metakey, { ...prevValue, ...metadata }, descriptor.value);
24
+ return descriptor;
25
+ }
26
+ Reflect.defineMetadata(metakey, metadata, descriptor.value);
27
+ return descriptor;
28
+ };
29
+ }
30
+ function createClassDecorator(metakey, metadata = []) {
31
+ return (target) => {
32
+ const prevValue = Reflect.getMetadata(metakey, target) || [];
33
+ Reflect.defineMetadata(metakey, [...prevValue, ...metadata], target);
34
+ return target;
35
+ };
36
+ }
37
+ function createPropertyDecorator(metakey, metadata, overrideExisting = true) {
38
+ return ((target, propertyKey) => {
39
+ const properties = Reflect.getMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, target) || [];
40
+ const key = `:${propertyKey}`;
41
+ if (!properties.includes(key)) {
42
+ Reflect.defineMetadata(constants_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, [...properties, `:${propertyKey}`], target);
43
+ }
44
+ const existingMetadata = Reflect.getMetadata(metakey, target, propertyKey);
45
+ if (existingMetadata) {
46
+ const newMetadata = (0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined));
47
+ const metadataToSave = overrideExisting
48
+ ? {
49
+ ...existingMetadata,
50
+ ...newMetadata,
51
+ }
52
+ : {
53
+ ...newMetadata,
54
+ ...existingMetadata,
55
+ };
56
+ Reflect.defineMetadata(metakey, metadataToSave, target, propertyKey);
57
+ }
58
+ else {
59
+ const type = target?.constructor?.[exports.METADATA_FACTORY_NAME]?.()[propertyKey]?.type ?? Reflect.getMetadata("design:type", target, propertyKey);
60
+ Reflect.defineMetadata(metakey, {
61
+ type,
62
+ ...(0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined)),
63
+ }, target, propertyKey);
64
+ }
65
+ });
66
+ }
67
+ function createMixedDecorator(metakey, metadata) {
68
+ return (target, key, descriptor) => {
69
+ if (descriptor) {
70
+ let metadatas;
71
+ if (Array.isArray(metadata)) {
72
+ const previousMetadata = Reflect.getMetadata(metakey, descriptor.value) || [];
73
+ metadatas = [...previousMetadata, ...metadata];
74
+ }
75
+ else {
76
+ const previousMetadata = Reflect.getMetadata(metakey, descriptor.value) || {};
77
+ metadatas = { ...previousMetadata, ...metadata };
78
+ }
79
+ Reflect.defineMetadata(metakey, metadatas, descriptor.value);
80
+ return descriptor;
81
+ }
82
+ let metadatas;
83
+ if (Array.isArray(metadata)) {
84
+ const previousMetadata = Reflect.getMetadata(metakey, target) || [];
85
+ metadatas = [...previousMetadata, ...metadata];
86
+ }
87
+ else {
88
+ const previousMetadata = Reflect.getMetadata(metakey, target) || {};
89
+ metadatas = Object.assign(Object.assign({}, previousMetadata), metadata);
90
+ }
91
+ Reflect.defineMetadata(metakey, metadatas, target);
92
+ return target;
93
+ };
94
+ }
95
+ function createParamDecorator(metadata, initial) {
96
+ return (
97
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
98
+ target, key, descriptor) => {
99
+ const paramOptions = {
100
+ ...initial,
101
+ ...(0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined)),
102
+ };
103
+ if (descriptor) {
104
+ const parameters = Reflect.getMetadata(constants_1.DECORATORS.API_PARAMETERS, descriptor.value) || [];
105
+ Reflect.defineMetadata(constants_1.DECORATORS.API_PARAMETERS, [...parameters, paramOptions], descriptor.value);
106
+ return descriptor;
107
+ }
108
+ if (typeof target === "object") {
109
+ return target;
110
+ }
111
+ const propertyKeys = Object.getOwnPropertyNames(target.prototype);
112
+ for (const propertyKey of propertyKeys) {
113
+ if ((0, exports.isConstructor)(propertyKey)) {
114
+ continue;
115
+ }
116
+ const methodDescriptor = Object.getOwnPropertyDescriptor(target.prototype, propertyKey);
117
+ if (!methodDescriptor) {
118
+ continue;
119
+ }
120
+ const isApiMethod = Reflect.hasMetadata(exports.METHOD_METADATA, methodDescriptor.value);
121
+ if (!isApiMethod) {
122
+ continue;
123
+ }
124
+ const parameters = Reflect.getMetadata(constants_1.DECORATORS.API_PARAMETERS, methodDescriptor.value) || [];
125
+ Reflect.defineMetadata(constants_1.DECORATORS.API_PARAMETERS, [...parameters, paramOptions], methodDescriptor.value);
126
+ }
127
+ };
128
+ }
129
+ function getTypeIsArrayTuple(
130
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
131
+ input, isArrayFlag
132
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
133
+ ) {
134
+ if (!input) {
135
+ return [input, isArrayFlag];
136
+ }
137
+ if (isArrayFlag) {
138
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
139
+ return [input, isArrayFlag];
140
+ }
141
+ const isInputArray = (0, lodash_1.isArray)(input);
142
+ const type = isInputArray ? input[0] : input;
143
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
144
+ return [type, isInputArray];
145
+ }
146
+ //# sourceMappingURL=helpers.js.map