@tsed/platform-params 6.88.1 → 6.92.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 (174) hide show
  1. package/lib/{builder → cjs/builder}/PlatformParams.d.ts +0 -0
  2. package/lib/cjs/builder/PlatformParams.js +79 -0
  3. package/lib/cjs/builder/PlatformParams.js.map +1 -0
  4. package/lib/{decorators → cjs/decorators}/bodyParams.d.ts +0 -0
  5. package/lib/cjs/decorators/bodyParams.js +53 -0
  6. package/lib/cjs/decorators/bodyParams.js.map +1 -0
  7. package/lib/{decorators → cjs/decorators}/context.d.ts +0 -0
  8. package/lib/cjs/decorators/context.js +19 -0
  9. package/lib/cjs/decorators/context.js.map +1 -0
  10. package/lib/{decorators → cjs/decorators}/cookies.d.ts +0 -0
  11. package/lib/cjs/decorators/cookies.js +24 -0
  12. package/lib/cjs/decorators/cookies.js.map +1 -0
  13. package/lib/{decorators → cjs/decorators}/headerParams.d.ts +0 -0
  14. package/lib/cjs/decorators/headerParams.js +19 -0
  15. package/lib/cjs/decorators/headerParams.js.map +1 -0
  16. package/lib/{decorators → cjs/decorators}/locals.d.ts +0 -0
  17. package/lib/cjs/decorators/locals.js +19 -0
  18. package/lib/cjs/decorators/locals.js.map +1 -0
  19. package/lib/{decorators → cjs/decorators}/paramFn.d.ts +0 -0
  20. package/lib/cjs/decorators/paramFn.js +22 -0
  21. package/lib/cjs/decorators/paramFn.js.map +1 -0
  22. package/lib/{decorators → cjs/decorators}/pathParams.d.ts +0 -0
  23. package/lib/cjs/decorators/pathParams.js +55 -0
  24. package/lib/cjs/decorators/pathParams.js.map +1 -0
  25. package/lib/{decorators → cjs/decorators}/queryParams.d.ts +0 -0
  26. package/lib/cjs/decorators/queryParams.js +55 -0
  27. package/lib/cjs/decorators/queryParams.js.map +1 -0
  28. package/lib/{decorators → cjs/decorators}/session.d.ts +0 -0
  29. package/lib/cjs/decorators/session.js +19 -0
  30. package/lib/cjs/decorators/session.js.map +1 -0
  31. package/lib/{decorators → cjs/decorators}/useDeserialization.d.ts +0 -0
  32. package/lib/cjs/decorators/useDeserialization.js +18 -0
  33. package/lib/cjs/decorators/useDeserialization.js.map +1 -0
  34. package/lib/{decorators → cjs/decorators}/useParam.d.ts +0 -0
  35. package/lib/cjs/decorators/useParam.js +38 -0
  36. package/lib/cjs/decorators/useParam.js.map +1 -0
  37. package/lib/{decorators → cjs/decorators}/useParamExpression.d.ts +0 -0
  38. package/lib/cjs/decorators/useParamExpression.js +20 -0
  39. package/lib/cjs/decorators/useParamExpression.js.map +1 -0
  40. package/lib/{decorators → cjs/decorators}/useParamType.d.ts +0 -0
  41. package/lib/cjs/decorators/useParamType.js +26 -0
  42. package/lib/cjs/decorators/useParamType.js.map +1 -0
  43. package/lib/{decorators → cjs/decorators}/usePipe.d.ts +0 -0
  44. package/lib/cjs/decorators/usePipe.js +22 -0
  45. package/lib/cjs/decorators/usePipe.js.map +1 -0
  46. package/lib/{decorators → cjs/decorators}/useType.d.ts +0 -0
  47. package/lib/cjs/decorators/useType.js +20 -0
  48. package/lib/cjs/decorators/useType.js.map +1 -0
  49. package/lib/{decorators → cjs/decorators}/useValidation.d.ts +0 -0
  50. package/lib/cjs/decorators/useValidation.js +22 -0
  51. package/lib/cjs/decorators/useValidation.js.map +1 -0
  52. package/lib/{domain → cjs/domain}/ParamMetadata.d.ts +0 -0
  53. package/lib/cjs/domain/ParamMetadata.js +34 -0
  54. package/lib/cjs/domain/ParamMetadata.js.map +1 -0
  55. package/lib/{domain → cjs/domain}/ParamOptions.d.ts +0 -0
  56. package/lib/cjs/domain/ParamOptions.js +3 -0
  57. package/lib/cjs/domain/ParamOptions.js.map +1 -0
  58. package/lib/{domain → cjs/domain}/ParamTypes.d.ts +0 -0
  59. package/lib/cjs/domain/ParamTypes.js +30 -0
  60. package/lib/cjs/domain/ParamTypes.js.map +1 -0
  61. package/lib/{errors → cjs/errors}/ParamValidationError.d.ts +0 -0
  62. package/lib/cjs/errors/ParamValidationError.js +29 -0
  63. package/lib/cjs/errors/ParamValidationError.js.map +1 -0
  64. package/lib/{errors → cjs/errors}/RequiredValidationError.d.ts +0 -1
  65. package/lib/cjs/errors/RequiredValidationError.js +32 -0
  66. package/lib/cjs/errors/RequiredValidationError.js.map +1 -0
  67. package/lib/{errors → cjs/errors}/ValidationError.d.ts +0 -0
  68. package/lib/cjs/errors/ValidationError.js +13 -0
  69. package/lib/cjs/errors/ValidationError.js.map +1 -0
  70. package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
  71. package/lib/cjs/index.js +37 -0
  72. package/lib/cjs/index.js.map +1 -0
  73. package/lib/{pipes → cjs/pipes}/DeserializerPipe.d.ts +0 -0
  74. package/lib/cjs/pipes/DeserializerPipe.js +30 -0
  75. package/lib/cjs/pipes/DeserializerPipe.js.map +1 -0
  76. package/lib/{pipes → cjs/pipes}/ParseExpressionPipe.d.ts +0 -0
  77. package/lib/cjs/pipes/ParseExpressionPipe.js +24 -0
  78. package/lib/cjs/pipes/ParseExpressionPipe.js.map +1 -0
  79. package/lib/{pipes → cjs/pipes}/ValidationPipe.d.ts +0 -0
  80. package/lib/cjs/pipes/ValidationPipe.js +80 -0
  81. package/lib/cjs/pipes/ValidationPipe.js.map +1 -0
  82. package/lib/{utils → cjs/utils}/mapParamsOptions.d.ts +0 -0
  83. package/lib/cjs/utils/mapParamsOptions.js +30 -0
  84. package/lib/cjs/utils/mapParamsOptions.js.map +1 -0
  85. package/lib/esm/builder/PlatformParams.js +76 -0
  86. package/lib/esm/builder/PlatformParams.js.map +1 -0
  87. package/lib/esm/decorators/bodyParams.js +48 -0
  88. package/lib/esm/decorators/bodyParams.js.map +1 -0
  89. package/lib/esm/decorators/context.js +15 -0
  90. package/lib/esm/decorators/context.js.map +1 -0
  91. package/lib/esm/decorators/cookies.js +19 -0
  92. package/lib/esm/decorators/cookies.js.map +1 -0
  93. package/lib/esm/decorators/headerParams.js +15 -0
  94. package/lib/esm/decorators/headerParams.js.map +1 -0
  95. package/lib/esm/decorators/locals.js +15 -0
  96. package/lib/esm/decorators/locals.js.map +1 -0
  97. package/lib/esm/decorators/paramFn.js +18 -0
  98. package/lib/esm/decorators/paramFn.js.map +1 -0
  99. package/lib/esm/decorators/pathParams.js +50 -0
  100. package/lib/esm/decorators/pathParams.js.map +1 -0
  101. package/lib/esm/decorators/queryParams.js +50 -0
  102. package/lib/esm/decorators/queryParams.js.map +1 -0
  103. package/lib/esm/decorators/session.js +15 -0
  104. package/lib/esm/decorators/session.js.map +1 -0
  105. package/lib/esm/decorators/useDeserialization.js +14 -0
  106. package/lib/esm/decorators/useDeserialization.js.map +1 -0
  107. package/lib/esm/decorators/useParam.js +34 -0
  108. package/lib/esm/decorators/useParam.js.map +1 -0
  109. package/lib/esm/decorators/useParamExpression.js +16 -0
  110. package/lib/esm/decorators/useParamExpression.js.map +1 -0
  111. package/lib/esm/decorators/useParamType.js +22 -0
  112. package/lib/esm/decorators/useParamType.js.map +1 -0
  113. package/lib/esm/decorators/usePipe.js +18 -0
  114. package/lib/esm/decorators/usePipe.js.map +1 -0
  115. package/lib/esm/decorators/useType.js +16 -0
  116. package/lib/esm/decorators/useType.js.map +1 -0
  117. package/lib/esm/decorators/useValidation.js +18 -0
  118. package/lib/esm/decorators/useValidation.js.map +1 -0
  119. package/lib/esm/domain/ParamMetadata.js +31 -0
  120. package/lib/esm/domain/ParamMetadata.js.map +1 -0
  121. package/lib/esm/domain/ParamOptions.js +2 -0
  122. package/lib/esm/domain/ParamOptions.js.map +1 -0
  123. package/lib/esm/domain/ParamTypes.js +27 -0
  124. package/lib/esm/domain/ParamTypes.js.map +1 -0
  125. package/lib/esm/errors/ParamValidationError.js +25 -0
  126. package/lib/esm/errors/ParamValidationError.js.map +1 -0
  127. package/lib/esm/errors/RequiredValidationError.js +28 -0
  128. package/lib/esm/errors/RequiredValidationError.js.map +1 -0
  129. package/lib/esm/errors/ValidationError.js +9 -0
  130. package/lib/esm/errors/ValidationError.js.map +1 -0
  131. package/lib/esm/index.js +34 -0
  132. package/lib/esm/index.js.map +1 -0
  133. package/lib/esm/pipes/DeserializerPipe.js +27 -0
  134. package/lib/esm/pipes/DeserializerPipe.js.map +1 -0
  135. package/lib/esm/pipes/ParseExpressionPipe.js +21 -0
  136. package/lib/esm/pipes/ParseExpressionPipe.js.map +1 -0
  137. package/lib/esm/pipes/ValidationPipe.js +77 -0
  138. package/lib/esm/pipes/ValidationPipe.js.map +1 -0
  139. package/lib/esm/utils/mapParamsOptions.js +26 -0
  140. package/lib/esm/utils/mapParamsOptions.js.map +1 -0
  141. package/lib/types/builder/PlatformParams.d.ts +23 -0
  142. package/lib/types/decorators/bodyParams.d.ts +64 -0
  143. package/lib/types/decorators/context.d.ts +59 -0
  144. package/lib/types/decorators/cookies.d.ts +81 -0
  145. package/lib/types/decorators/headerParams.d.ts +33 -0
  146. package/lib/types/decorators/locals.d.ts +42 -0
  147. package/lib/types/decorators/paramFn.d.ts +11 -0
  148. package/lib/types/decorators/pathParams.d.ts +68 -0
  149. package/lib/types/decorators/queryParams.d.ts +73 -0
  150. package/lib/types/decorators/session.d.ts +36 -0
  151. package/lib/types/decorators/useDeserialization.d.ts +9 -0
  152. package/lib/types/decorators/useParam.d.ts +22 -0
  153. package/lib/types/decorators/useParamExpression.d.ts +10 -0
  154. package/lib/types/decorators/useParamType.d.ts +10 -0
  155. package/lib/types/decorators/usePipe.d.ts +13 -0
  156. package/lib/types/decorators/useType.d.ts +13 -0
  157. package/lib/types/decorators/useValidation.d.ts +9 -0
  158. package/lib/types/domain/ParamMetadata.d.ts +16 -0
  159. package/lib/types/domain/ParamOptions.d.ts +10 -0
  160. package/lib/types/domain/ParamTypes.d.ts +24 -0
  161. package/lib/types/errors/ParamValidationError.d.ts +8 -0
  162. package/lib/types/errors/RequiredValidationError.d.ts +6 -0
  163. package/lib/types/errors/ValidationError.d.ts +6 -0
  164. package/lib/types/index.d.ts +28 -0
  165. package/lib/types/pipes/DeserializerPipe.d.ts +5 -0
  166. package/lib/types/pipes/ParseExpressionPipe.d.ts +5 -0
  167. package/lib/types/pipes/ValidationPipe.d.ts +10 -0
  168. package/lib/types/utils/mapParamsOptions.d.ts +5 -0
  169. package/package.json +20 -16
  170. package/tsconfig.compile.esm.json +23 -0
  171. package/lib/index.js +0 -807
  172. package/lib/index.js.map +0 -1
  173. package/lib/index.modern.js +0 -788
  174. package/lib/index.modern.js.map +0 -1
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseParamType = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ const schema_1 = require("@tsed/schema");
6
+ const paramFn_1 = require("./paramFn");
7
+ const useParamExpression_1 = require("./useParamExpression");
8
+ /**
9
+ * Get the object from request (like body, params, query, etc...).
10
+ *
11
+ * @decorator
12
+ * @operation
13
+ * @input
14
+ * @pipe
15
+ */
16
+ function UseParamType(options) {
17
+ return (0, core_1.useDecorators)((0, paramFn_1.ParamFn)((param) => {
18
+ if ((0, schema_1.isParameterType)(options.paramType)) {
19
+ param.parameter.in(options.paramType);
20
+ }
21
+ param.paramType = options.paramType;
22
+ param.dataPath = options.dataPath;
23
+ }), (0, useParamExpression_1.UseParamExpression)(options.expression), options.expression && (0, schema_1.Name)(options.expression));
24
+ }
25
+ exports.UseParamType = UseParamType;
26
+ //# sourceMappingURL=useParamType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useParamType.js","sourceRoot":"","sources":["../../../src/decorators/useParamType.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,yCAAmD;AACnD,uCAAkC;AAElC,6DAAwD;AAExD;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,OAAqB;IAChD,OAAO,IAAA,oBAAa,EAClB,IAAA,iBAAO,EAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,IAAA,wBAAe,EAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACtC,KAAK,CAAC,SAAU,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACxC;QAED,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACpC,CAAC,CAAC,EACF,IAAA,uCAAkB,EAAC,OAAO,CAAC,UAAU,CAAC,EACtC,OAAO,CAAC,UAAU,IAAI,IAAA,aAAI,EAAC,OAAO,CAAC,UAAU,CAAC,CAC/C,CAAC;AACJ,CAAC;AAbD,oCAaC","sourcesContent":["import {useDecorators} from \"@tsed/core\";\nimport {isParameterType, Name} from \"@tsed/schema\";\nimport {ParamFn} from \"./paramFn\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {UseParamExpression} from \"./useParamExpression\";\n\n/**\n * Get the object from request (like body, params, query, etc...).\n *\n * @decorator\n * @operation\n * @input\n * @pipe\n */\nexport function UseParamType(options: ParamOptions) {\n return useDecorators(\n ParamFn((param) => {\n if (isParameterType(options.paramType)) {\n param.parameter!.in(options.paramType);\n }\n\n param.paramType = options.paramType;\n param.dataPath = options.dataPath;\n }),\n UseParamExpression(options.expression),\n options.expression && Name(options.expression)\n );\n}\n"]}
File without changes
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UsePipe = void 0;
4
+ const paramFn_1 = require("./paramFn");
5
+ /**
6
+ * Register a Pipe to be used with the current decorated param.
7
+ *
8
+ * @param token
9
+ * @param options
10
+ * @decorator
11
+ * @operation
12
+ * @input
13
+ * @pipe
14
+ */
15
+ function UsePipe(token, options = {}) {
16
+ return (0, paramFn_1.ParamFn)((param) => {
17
+ param.store.set(token, options);
18
+ param.pipes.push(token);
19
+ });
20
+ }
21
+ exports.UsePipe = UsePipe;
22
+ //# sourceMappingURL=usePipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePipe.js","sourceRoot":"","sources":["../../../src/decorators/usePipe.ts"],"names":[],"mappings":";;;AAEA,uCAAkC;AAElC;;;;;;;;;GASG;AACH,SAAgB,OAAO,CAAC,KAAwB,EAAE,UAAe,EAAE;IACjE,OAAO,IAAA,iBAAO,EAAC,CAAC,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AALD,0BAKC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {PipeMethods} from \"../domain/ParamMetadata\";\nimport {ParamFn} from \"./paramFn\";\n\n/**\n * Register a Pipe to be used with the current decorated param.\n *\n * @param token\n * @param options\n * @decorator\n * @operation\n * @input\n * @pipe\n */\nexport function UsePipe(token: Type<PipeMethods>, options: any = {}) {\n return ParamFn((param) => {\n param.store.set(token, options);\n param.pipes.push(token);\n });\n}\n"]}
File without changes
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseType = void 0;
4
+ const schema_1 = require("@tsed/schema");
5
+ /**
6
+ * Set the type of the item colllection.
7
+ *
8
+ * Prefer @@CollectionOf@@ usage.
9
+ *
10
+ * @param type
11
+ * @decorator
12
+ * @operation
13
+ * @input
14
+ * @alias CollectionOf
15
+ */
16
+ function UseType(type) {
17
+ return (0, schema_1.CollectionOf)(type);
18
+ }
19
+ exports.UseType = UseType;
20
+ //# sourceMappingURL=useType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useType.js","sourceRoot":"","sources":["../../../src/decorators/useType.ts"],"names":[],"mappings":";;;AACA,yCAA0C;AAE1C;;;;;;;;;;GAUG;AACH,SAAgB,OAAO,CAAC,IAAqB;IAC3C,OAAO,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAFD,0BAEC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {CollectionOf} from \"@tsed/schema\";\n\n/**\n * Set the type of the item colllection.\n *\n * Prefer @@CollectionOf@@ usage.\n *\n * @param type\n * @decorator\n * @operation\n * @input\n * @alias CollectionOf\n */\nexport function UseType(type: any | Type<any>) {\n return CollectionOf(type);\n}\n"]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseValidation = void 0;
4
+ const ValidationPipe_1 = require("../pipes/ValidationPipe");
5
+ const paramFn_1 = require("./paramFn");
6
+ /**
7
+ * Enable validation on the decoratored parameter.
8
+ *
9
+ * @decorator
10
+ * @operation
11
+ * @input
12
+ * @pipe
13
+ */
14
+ function UseValidation() {
15
+ return (0, paramFn_1.ParamFn)((param) => {
16
+ if (param.type || param.collectionType) {
17
+ param.pipes.push(ValidationPipe_1.ValidationPipe);
18
+ }
19
+ });
20
+ }
21
+ exports.UseValidation = UseValidation;
22
+ //# sourceMappingURL=useValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidation.js","sourceRoot":"","sources":["../../../src/decorators/useValidation.ts"],"names":[],"mappings":";;;AAAA,4DAAuD;AACvD,uCAAkC;AAElC;;;;;;;GAOG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAA,iBAAO,EAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE;YACtC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,+BAAc,CAAC,CAAC;SAClC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAND,sCAMC","sourcesContent":["import {ValidationPipe} from \"../pipes/ValidationPipe\";\nimport {ParamFn} from \"./paramFn\";\n\n/**\n * Enable validation on the decoratored parameter.\n *\n * @decorator\n * @operation\n * @input\n * @pipe\n */\nexport function UseValidation() {\n return ParamFn((param) => {\n if (param.type || param.collectionType) {\n param.pipes.push(ValidationPipe);\n }\n });\n}\n"]}
File without changes
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamMetadata = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@tsed/core");
6
+ const schema_1 = require("@tsed/schema");
7
+ const ParamTypes_1 = require("./ParamTypes");
8
+ let ParamMetadata = class ParamMetadata extends schema_1.JsonParameterStore {
9
+ constructor(options) {
10
+ super(options);
11
+ this.paramType = "$ctx";
12
+ this.pipes = [];
13
+ this.paramType = options.paramType || this.paramType;
14
+ this.expression = options.expression || this.expression;
15
+ this.dataPath = options.dataPath || this.dataPath;
16
+ this.pipes = options.pipes || [];
17
+ }
18
+ get key() {
19
+ let { expression, paramType, dataPath } = this;
20
+ if (expression && paramType === ParamTypes_1.ParamTypes.HEADER) {
21
+ expression = String(expression).toLowerCase();
22
+ }
23
+ return [dataPath, expression].filter(Boolean).join(".");
24
+ }
25
+ static get(target, propertyKey, index) {
26
+ return schema_1.JsonEntityStore.from((0, core_1.prototypeOf)(target), propertyKey, index);
27
+ }
28
+ };
29
+ ParamMetadata = (0, tslib_1.__decorate)([
30
+ (0, schema_1.JsonEntityComponent)(core_1.DecoratorTypes.PARAM),
31
+ (0, tslib_1.__metadata)("design:paramtypes", [Object])
32
+ ], ParamMetadata);
33
+ exports.ParamMetadata = ParamMetadata;
34
+ //# sourceMappingURL=ParamMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParamMetadata.js","sourceRoot":"","sources":["../../../src/domain/ParamMetadata.ts"],"names":[],"mappings":";;;;AAAA,qCAA6D;AAC7D,yCAA8G;AAE9G,6CAAwC;AASxC,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,2BAAkB;IAMnD,YAAY,OAAgC;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QAJV,cAAS,GAAW,MAAM,CAAC;QAC3B,UAAK,GAAwB,EAAE,CAAC;QAIrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,GAAG;QACL,IAAI,EAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;QAE7C,IAAI,UAAU,IAAI,SAAS,KAAK,uBAAU,CAAC,MAAM,EAAE;YACjD,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;SAC/C;QAED,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAiB,EAAE,WAA4B,EAAE,KAAa;QACvE,OAAO,wBAAe,CAAC,IAAI,CAAgB,IAAA,kBAAW,EAAC,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;CACF,CAAA;AA3BY,aAAa;IADzB,IAAA,4BAAmB,EAAC,qBAAc,CAAC,KAAK,CAAC;;GAC7B,aAAa,CA2BzB;AA3BY,sCAAa","sourcesContent":["import {DecoratorTypes, prototypeOf, Type} from \"@tsed/core\";\nimport {JsonEntityComponent, JsonEntityStore, JsonEntityStoreOptions, JsonParameterStore} from \"@tsed/schema\";\nimport {ParamOptions} from \"./ParamOptions\";\nimport {ParamTypes} from \"./ParamTypes\";\n\nexport interface PipeMethods<T = any, R = any> {\n transform(value: T, metadata: ParamMetadata): R;\n}\n\nexport type ParamConstructorOptions = JsonEntityStoreOptions & ParamOptions;\n\n@JsonEntityComponent(DecoratorTypes.PARAM)\nexport class ParamMetadata extends JsonParameterStore implements ParamConstructorOptions {\n public expression: string;\n public dataPath: string;\n public paramType: string = \"$ctx\";\n public pipes: Type<PipeMethods>[] = [];\n\n constructor(options: ParamConstructorOptions) {\n super(options);\n this.paramType = options.paramType || this.paramType;\n this.expression = options.expression || this.expression;\n this.dataPath = options.dataPath || this.dataPath;\n this.pipes = options.pipes || [];\n }\n\n get key() {\n let {expression, paramType, dataPath} = this;\n\n if (expression && paramType === ParamTypes.HEADER) {\n expression = String(expression).toLowerCase();\n }\n\n return [dataPath, expression].filter(Boolean).join(\".\");\n }\n\n static get(target: Type<any>, propertyKey: string | symbol, index: number): ParamMetadata {\n return JsonEntityStore.from<ParamMetadata>(prototypeOf(target), propertyKey, index);\n }\n}\n"]}
File without changes
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ParamOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParamOptions.js","sourceRoot":"","sources":["../../../src/domain/ParamOptions.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\n\nexport interface ParamOptions<T = any> {\n dataPath: string;\n paramType: string;\n expression?: string;\n useType?: Type<T>;\n useConverter?: boolean;\n useValidation?: boolean;\n\n [key: string]: any;\n}\n"]}
File without changes
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamTypes = void 0;
4
+ var ParamTypes;
5
+ (function (ParamTypes) {
6
+ ParamTypes["$CTX"] = "$CTX";
7
+ ParamTypes["BODY"] = "BODY";
8
+ ParamTypes["PATH"] = "PATH";
9
+ ParamTypes["QUERY"] = "QUERY";
10
+ ParamTypes["HEADER"] = "HEADER";
11
+ ParamTypes["RAW_BODY"] = "RAW_BODY";
12
+ ParamTypes["COOKIES"] = "COOKIES";
13
+ ParamTypes["LOCALS"] = "LOCALS";
14
+ ParamTypes["SESSION"] = "SESSION";
15
+ ParamTypes["FILES"] = "FILES";
16
+ /// NOT STD
17
+ ParamTypes["NEXT_FN"] = "NEXT_FN";
18
+ ParamTypes["ERR"] = "ERR";
19
+ ParamTypes["REQUEST"] = "REQUEST";
20
+ ParamTypes["PLATFORM_REQUEST"] = "PLATFORM_REQUEST";
21
+ ParamTypes["NODE_REQUEST"] = "NODE_REQUEST";
22
+ ParamTypes["RESPONSE"] = "RESPONSE";
23
+ ParamTypes["PLATFORM_RESPONSE"] = "PLATFORM_RESPONSE";
24
+ ParamTypes["NODE_RESPONSE"] = "NODE_RESPONSE";
25
+ ParamTypes["RESPONSE_DATA"] = "RESPONSE_DATA";
26
+ ParamTypes["ENDPOINT_INFO"] = "ENDPOINT_INFO";
27
+ ParamTypes["RES"] = "RES";
28
+ ParamTypes["REQ"] = "REQ";
29
+ })(ParamTypes = exports.ParamTypes || (exports.ParamTypes = {}));
30
+ //# sourceMappingURL=ParamTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParamTypes.js","sourceRoot":"","sources":["../../../src/domain/ParamTypes.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAyBX;AAzBD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,6BAAe,CAAA;IACf,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;IAEf,WAAW;IACX,iCAAmB,CAAA;IACnB,yBAAW,CAAA;IACX,iCAAmB,CAAA;IACnB,mDAAqC,CAAA;IACrC,2CAA6B,CAAA;IAC7B,mCAAqB,CAAA;IACrB,qDAAuC,CAAA;IACvC,6CAA+B,CAAA;IAC/B,6CAA+B,CAAA;IAC/B,6CAA+B,CAAA;IAC/B,yBAAW,CAAA;IACX,yBAAW,CAAA;AACb,CAAC,EAzBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAyBrB","sourcesContent":["export enum ParamTypes {\n $CTX = \"$CTX\",\n BODY = \"BODY\",\n PATH = \"PATH\",\n QUERY = \"QUERY\",\n HEADER = \"HEADER\",\n RAW_BODY = \"RAW_BODY\",\n COOKIES = \"COOKIES\",\n LOCALS = \"LOCALS\",\n SESSION = \"SESSION\",\n FILES = \"FILES\",\n\n /// NOT STD\n NEXT_FN = \"NEXT_FN\",\n ERR = \"ERR\",\n REQUEST = \"REQUEST\",\n PLATFORM_REQUEST = \"PLATFORM_REQUEST\",\n NODE_REQUEST = \"NODE_REQUEST\",\n RESPONSE = \"RESPONSE\",\n PLATFORM_RESPONSE = \"PLATFORM_RESPONSE\",\n NODE_RESPONSE = \"NODE_RESPONSE\",\n RESPONSE_DATA = \"RESPONSE_DATA\",\n ENDPOINT_INFO = \"ENDPOINT_INFO\",\n RES = \"RES\",\n REQ = \"REQ\"\n}\n"]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamValidationError = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ const exceptions_1 = require("@tsed/exceptions");
6
+ const ValidationError_1 = require("./ValidationError");
7
+ class ParamValidationError extends exceptions_1.BadRequest {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.name = "PARAM_VALIDATION_ERROR";
11
+ }
12
+ static from(metadata, origin = {}) {
13
+ if (origin instanceof ValidationError_1.ValidationError || origin instanceof exceptions_1.BadRequest) {
14
+ const name = (0, core_1.nameOf)(metadata.paramType)
15
+ .toLowerCase()
16
+ .replace(/parse|params|filter/gi, "");
17
+ const expression = metadata.expression;
18
+ const message = `Bad request on parameter "request.${name}${expression ? "." + expression : ""}".\n${origin.message}`.trim();
19
+ const error = new ParamValidationError(message);
20
+ error.dataPath = String(metadata.expression) || "";
21
+ error.requestType = (0, core_1.nameOf)(metadata.paramType);
22
+ error.origin = origin.origin || origin;
23
+ return error;
24
+ }
25
+ return origin;
26
+ }
27
+ }
28
+ exports.ParamValidationError = ParamValidationError;
29
+ //# sourceMappingURL=ParamValidationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParamValidationError.js","sourceRoot":"","sources":["../../../src/errors/ParamValidationError.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,iDAA4C;AAE5C,uDAAkD;AAElD,MAAa,oBAAqB,SAAQ,uBAAU;IAApD;;QACS,SAAI,GAAW,wBAAwB,CAAC;IAsBjD,CAAC;IAlBC,MAAM,CAAC,IAAI,CAAC,QAAuB,EAAE,SAAc,EAAE;QACnD,IAAI,MAAM,YAAY,iCAAe,IAAI,MAAM,YAAY,uBAAU,EAAE;YACrE,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,QAAQ,CAAC,SAAS,CAAC;iBACpC,WAAW,EAAE;iBACb,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;YACvC,MAAM,OAAO,GAAG,qCAAqC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;YAE7H,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAChD,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACnD,KAAK,CAAC,WAAW,GAAG,IAAA,aAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC/C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;YAEvC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAvBD,oDAuBC","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {BadRequest} from \"@tsed/exceptions\";\nimport {ParamMetadata} from \"../domain/ParamMetadata\";\nimport {ValidationError} from \"./ValidationError\";\n\nexport class ParamValidationError extends BadRequest {\n public name: string = \"PARAM_VALIDATION_ERROR\";\n public dataPath: string;\n public requestType: string;\n\n static from(metadata: ParamMetadata, origin: any = {}) {\n if (origin instanceof ValidationError || origin instanceof BadRequest) {\n const name = nameOf(metadata.paramType)\n .toLowerCase()\n .replace(/parse|params|filter/gi, \"\");\n const expression = metadata.expression;\n const message = `Bad request on parameter \"request.${name}${expression ? \".\" + expression : \"\"}\".\\n${origin.message}`.trim();\n\n const error = new ParamValidationError(message);\n error.dataPath = String(metadata.expression) || \"\";\n error.requestType = nameOf(metadata.paramType);\n error.origin = origin.origin || origin;\n\n return error;\n }\n\n return origin;\n }\n}\n"]}
@@ -2,6 +2,5 @@ import { ParamMetadata } from "../domain/ParamMetadata";
2
2
  import { ValidationError } from "./ValidationError";
3
3
  export declare class RequiredValidationError extends ValidationError {
4
4
  name: string;
5
- errors: any[];
6
5
  static from(metadata: ParamMetadata): RequiredValidationError;
7
6
  }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequiredValidationError = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ const ValidationError_1 = require("./ValidationError");
6
+ class RequiredValidationError extends ValidationError_1.ValidationError {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.name = "REQUIRED_VALIDATION_ERROR";
10
+ }
11
+ static from(metadata) {
12
+ const name = (0, core_1.nameOf)(metadata.paramType);
13
+ const expression = metadata.expression;
14
+ const type = name.toLowerCase().replace(/parse|params|filter/gi, "");
15
+ const message = `It should have required parameter '${expression}'`;
16
+ const errors = [
17
+ {
18
+ dataPath: "",
19
+ keyword: "required",
20
+ message,
21
+ modelName: type,
22
+ params: {
23
+ missingProperty: expression
24
+ },
25
+ schemaPath: "#/required"
26
+ }
27
+ ];
28
+ return new RequiredValidationError(message, errors);
29
+ }
30
+ }
31
+ exports.RequiredValidationError = RequiredValidationError;
32
+ //# sourceMappingURL=RequiredValidationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequiredValidationError.js","sourceRoot":"","sources":["../../../src/errors/RequiredValidationError.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,uDAAkD;AAElD,MAAa,uBAAwB,SAAQ,iCAAe;IAA5D;;QACS,SAAI,GAAW,2BAA2B,CAAC;IAuBpD,CAAC;IArBC,MAAM,CAAC,IAAI,CAAC,QAAuB;QACjC,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,sCAAsC,UAAU,GAAG,CAAC;QAEpE,MAAM,MAAM,GAAG;YACb;gBACE,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,UAAU;gBACnB,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE;oBACN,eAAe,EAAE,UAAU;iBAC5B;gBACD,UAAU,EAAE,YAAY;aACzB;SACF,CAAC;QAEF,OAAO,IAAI,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;CACF;AAxBD,0DAwBC","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {ParamMetadata} from \"../domain/ParamMetadata\";\nimport {ValidationError} from \"./ValidationError\";\n\nexport class RequiredValidationError extends ValidationError {\n public name: string = \"REQUIRED_VALIDATION_ERROR\";\n\n static from(metadata: ParamMetadata) {\n const name = nameOf(metadata.paramType);\n const expression = metadata.expression;\n const type = name.toLowerCase().replace(/parse|params|filter/gi, \"\");\n const message = `It should have required parameter '${expression}'`;\n\n const errors = [\n {\n dataPath: \"\",\n keyword: \"required\",\n message,\n modelName: type,\n params: {\n missingProperty: expression\n },\n schemaPath: \"#/required\"\n }\n ];\n\n return new RequiredValidationError(message, errors);\n }\n}\n"]}
File without changes
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationError = void 0;
4
+ const exceptions_1 = require("@tsed/exceptions");
5
+ class ValidationError extends exceptions_1.BadRequest {
6
+ constructor(message, errors = []) {
7
+ super(message);
8
+ this.name = "VALIDATION_ERROR";
9
+ this.errors = errors;
10
+ }
11
+ }
12
+ exports.ValidationError = ValidationError;
13
+ //# sourceMappingURL=ValidationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/errors/ValidationError.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAE5C,MAAa,eAAgB,SAAQ,uBAAU;IAI7C,YAAY,OAAe,EAAE,SAAgB,EAAE;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QAJV,SAAI,GAAW,kBAAkB,CAAC;QAKvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AARD,0CAQC","sourcesContent":["import {BadRequest} from \"@tsed/exceptions\";\n\nexport class ValidationError extends BadRequest {\n public name: string = \"VALIDATION_ERROR\";\n public errors: any[];\n\n constructor(message: string, errors: any[] = []) {\n super(message);\n this.errors = errors;\n }\n}\n"]}
File without changes
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./utils/mapParamsOptions"), exports);
5
+ // domain
6
+ (0, tslib_1.__exportStar)(require("./domain/ParamMetadata"), exports);
7
+ (0, tslib_1.__exportStar)(require("./domain/ParamOptions"), exports);
8
+ (0, tslib_1.__exportStar)(require("./domain/ParamTypes"), exports);
9
+ // pipes
10
+ (0, tslib_1.__exportStar)(require("./pipes/ParseExpressionPipe"), exports);
11
+ (0, tslib_1.__exportStar)(require("./pipes/DeserializerPipe"), exports);
12
+ (0, tslib_1.__exportStar)(require("./pipes/ValidationPipe"), exports);
13
+ // builder
14
+ (0, tslib_1.__exportStar)(require("./builder/PlatformParams"), exports);
15
+ // errors
16
+ (0, tslib_1.__exportStar)(require("./errors/RequiredValidationError"), exports);
17
+ (0, tslib_1.__exportStar)(require("./errors/ValidationError"), exports);
18
+ (0, tslib_1.__exportStar)(require("./errors/ParamValidationError"), exports);
19
+ // decorators
20
+ (0, tslib_1.__exportStar)(require("./decorators/context"), exports);
21
+ (0, tslib_1.__exportStar)(require("./decorators/bodyParams"), exports);
22
+ (0, tslib_1.__exportStar)(require("./decorators/usePipe"), exports);
23
+ (0, tslib_1.__exportStar)(require("./decorators/useParam"), exports);
24
+ (0, tslib_1.__exportStar)(require("./decorators/useParamType"), exports);
25
+ (0, tslib_1.__exportStar)(require("./decorators/useType"), exports);
26
+ (0, tslib_1.__exportStar)(require("./decorators/useValidation"), exports);
27
+ (0, tslib_1.__exportStar)(require("./decorators/useDeserialization"), exports);
28
+ (0, tslib_1.__exportStar)(require("./decorators/useParamExpression"), exports);
29
+ (0, tslib_1.__exportStar)(require("./decorators/useParamType"), exports);
30
+ (0, tslib_1.__exportStar)(require("./decorators/headerParams"), exports);
31
+ (0, tslib_1.__exportStar)(require("./decorators/cookies"), exports);
32
+ (0, tslib_1.__exportStar)(require("./decorators/locals"), exports);
33
+ (0, tslib_1.__exportStar)(require("./decorators/pathParams"), exports);
34
+ (0, tslib_1.__exportStar)(require("./decorators/queryParams"), exports);
35
+ (0, tslib_1.__exportStar)(require("./decorators/session"), exports);
36
+ (0, tslib_1.__exportStar)(require("./decorators/paramFn"), exports);
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,wEAAyC;AAEzC,SAAS;AACT,sEAAuC;AACvC,qEAAsC;AACtC,mEAAoC;AAEpC,QAAQ;AACR,2EAA4C;AAC5C,wEAAyC;AACzC,sEAAuC;AAEvC,UAAU;AACV,wEAAyC;AAEzC,SAAS;AACT,gFAAiD;AACjD,wEAAyC;AACzC,6EAA8C;AAE9C,aAAa;AACb,oEAAqC;AACrC,uEAAwC;AACxC,oEAAqC;AACrC,qEAAsC;AACtC,yEAA0C;AAC1C,oEAAqC;AACrC,0EAA2C;AAC3C,+EAAgD;AAChD,+EAAgD;AAChD,yEAA0C;AAC1C,yEAA0C;AAC1C,oEAAqC;AACrC,mEAAoC;AACpC,uEAAwC;AACxC,wEAAyC;AACzC,oEAAqC;AACrC,oEAAqC","sourcesContent":["export * from \"./utils/mapParamsOptions\";\n\n// domain\nexport * from \"./domain/ParamMetadata\";\nexport * from \"./domain/ParamOptions\";\nexport * from \"./domain/ParamTypes\";\n\n// pipes\nexport * from \"./pipes/ParseExpressionPipe\";\nexport * from \"./pipes/DeserializerPipe\";\nexport * from \"./pipes/ValidationPipe\";\n\n// builder\nexport * from \"./builder/PlatformParams\";\n\n// errors\nexport * from \"./errors/RequiredValidationError\";\nexport * from \"./errors/ValidationError\";\nexport * from \"./errors/ParamValidationError\";\n\n// decorators\nexport * from \"./decorators/context\";\nexport * from \"./decorators/bodyParams\";\nexport * from \"./decorators/usePipe\";\nexport * from \"./decorators/useParam\";\nexport * from \"./decorators/useParamType\";\nexport * from \"./decorators/useType\";\nexport * from \"./decorators/useValidation\";\nexport * from \"./decorators/useDeserialization\";\nexport * from \"./decorators/useParamExpression\";\nexport * from \"./decorators/useParamType\";\nexport * from \"./decorators/headerParams\";\nexport * from \"./decorators/cookies\";\nexport * from \"./decorators/locals\";\nexport * from \"./decorators/pathParams\";\nexport * from \"./decorators/queryParams\";\nexport * from \"./decorators/session\";\nexport * from \"./decorators/paramFn\";\n"]}
File without changes
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var DeserializerPipe_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DeserializerPipe = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const di_1 = require("@tsed/di");
7
+ const json_mapper_1 = require("@tsed/json-mapper");
8
+ let DeserializerPipe = DeserializerPipe_1 = class DeserializerPipe {
9
+ transform(value, param) {
10
+ return (0, json_mapper_1.deserialize)(value, {
11
+ useAlias: true,
12
+ additionalProperties: this.settings.additionalProperties === "accept",
13
+ type: param.type,
14
+ collectionType: param.collectionType,
15
+ groups: param.parameter.groups,
16
+ genericTypes: param.nestedGenerics[0],
17
+ nestedGenerics: param.nestedGenerics,
18
+ ...(param.store.get(DeserializerPipe_1) || {})
19
+ });
20
+ }
21
+ };
22
+ (0, tslib_1.__decorate)([
23
+ (0, di_1.Constant)("converter", {}),
24
+ (0, tslib_1.__metadata)("design:type", Object)
25
+ ], DeserializerPipe.prototype, "settings", void 0);
26
+ DeserializerPipe = DeserializerPipe_1 = (0, tslib_1.__decorate)([
27
+ (0, di_1.Injectable)()
28
+ ], DeserializerPipe);
29
+ exports.DeserializerPipe = DeserializerPipe;
30
+ //# sourceMappingURL=DeserializerPipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeserializerPipe.js","sourceRoot":"","sources":["../../../src/pipes/DeserializerPipe.ts"],"names":[],"mappings":";;;;;AAAA,iCAA8C;AAC9C,mDAA8C;AAI9C,IAAa,gBAAgB,wBAA7B,MAAa,gBAAgB;IAM3B,SAAS,CAAC,KAAU,EAAE,KAAoB;QACxC,OAAO,IAAA,yBAAW,EAAC,KAAK,EAAE;YACxB,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,KAAK,QAAQ;YACrE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YAC9B,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACrC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAgB,CAAC,IAAI,EAAE,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhBC;IADC,IAAA,aAAQ,EAAC,WAAW,EAAE,EAAE,CAAC;;kDAGxB;AAJS,gBAAgB;IAD5B,IAAA,eAAU,GAAE;GACA,gBAAgB,CAkB5B;AAlBY,4CAAgB","sourcesContent":["import {Constant, Injectable} from \"@tsed/di\";\nimport {deserialize} from \"@tsed/json-mapper\";\nimport {ParamMetadata, PipeMethods} from \"../domain/ParamMetadata\";\n\n@Injectable()\nexport class DeserializerPipe implements PipeMethods {\n @Constant(\"converter\", {})\n private settings: {\n additionalProperties?: \"error\" | \"accept\" | \"ignore\";\n };\n\n transform(value: any, param: ParamMetadata) {\n return deserialize(value, {\n useAlias: true,\n additionalProperties: this.settings.additionalProperties === \"accept\",\n type: param.type,\n collectionType: param.collectionType,\n groups: param.parameter.groups,\n genericTypes: param.nestedGenerics[0],\n nestedGenerics: param.nestedGenerics,\n ...(param.store.get(DeserializerPipe) || {})\n });\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParseExpressionPipe = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@tsed/core");
6
+ const di_1 = require("@tsed/di");
7
+ const ParamTypes_1 = require("../domain/ParamTypes");
8
+ let ParseExpressionPipe = class ParseExpressionPipe {
9
+ transform(scope, param) {
10
+ const { paramType, type } = param;
11
+ const value = (0, core_1.getValue)(scope, param.key);
12
+ if ([ParamTypes_1.ParamTypes.QUERY, ParamTypes_1.ParamTypes.PATH].includes(paramType) && value === "" && type !== String) {
13
+ return undefined;
14
+ }
15
+ return value;
16
+ }
17
+ };
18
+ ParseExpressionPipe = (0, tslib_1.__decorate)([
19
+ (0, di_1.Injectable)({
20
+ priority: -1000
21
+ })
22
+ ], ParseExpressionPipe);
23
+ exports.ParseExpressionPipe = ParseExpressionPipe;
24
+ //# sourceMappingURL=ParseExpressionPipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParseExpressionPipe.js","sourceRoot":"","sources":["../../../src/pipes/ParseExpressionPipe.ts"],"names":[],"mappings":";;;;AAAA,qCAAoC;AACpC,iCAAoC;AAEpC,qDAAgD;AAMhD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,SAAS,CAAC,KAAe,EAAE,KAAoB;QAC7C,MAAM,EAAC,SAAS,EAAE,IAAI,EAAC,GAAG,KAAK,CAAC;QAEhC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,CAAC,uBAAU,CAAC,KAAK,EAAE,uBAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAuB,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;YAC5G,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AAZY,mBAAmB;IAH/B,IAAA,eAAU,EAAC;QACV,QAAQ,EAAE,CAAC,IAAI;KAChB,CAAC;GACW,mBAAmB,CAY/B;AAZY,kDAAmB","sourcesContent":["import {getValue} from \"@tsed/core\";\nimport {Injectable} from \"@tsed/di\";\nimport {PipeMethods, ParamMetadata} from \"../domain/ParamMetadata\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport type {ArgScope} from \"../builder/PlatformParams\";\n\n@Injectable({\n priority: -1000\n})\nexport class ParseExpressionPipe implements PipeMethods {\n transform(scope: ArgScope, param: ParamMetadata) {\n const {paramType, type} = param;\n\n const value = getValue(scope, param.key);\n\n if ([ParamTypes.QUERY, ParamTypes.PATH].includes(paramType as ParamTypes) && value === \"\" && type !== String) {\n return undefined;\n }\n\n return value;\n }\n}\n"]}
File without changes
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationPipe = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@tsed/core");
6
+ const di_1 = require("@tsed/di");
7
+ const json_mapper_1 = require("@tsed/json-mapper");
8
+ const schema_1 = require("@tsed/schema");
9
+ const RequiredValidationError_1 = require("../errors/RequiredValidationError");
10
+ const ParamTypes_1 = require("../domain/ParamTypes");
11
+ let ValidationPipe = class ValidationPipe {
12
+ constructor(injector) {
13
+ const provider = injector.getProviders().find((provider) => (0, core_1.nameOf)(provider.token) === "AjvService");
14
+ if (provider) {
15
+ this.validator = injector.invoke(provider.token);
16
+ }
17
+ }
18
+ coerceTypes(value, metadata) {
19
+ if (value === undefined) {
20
+ return value;
21
+ }
22
+ if (value === "null") {
23
+ return null;
24
+ }
25
+ if (metadata.isPrimitive) {
26
+ try {
27
+ return (0, json_mapper_1.deserialize)(value, {
28
+ type: metadata.type
29
+ });
30
+ }
31
+ catch (er) {
32
+ return value;
33
+ }
34
+ }
35
+ if (metadata.isArray) {
36
+ return [].concat(value);
37
+ }
38
+ return value;
39
+ }
40
+ skip(value, metadata) {
41
+ return metadata.paramType === ParamTypes_1.ParamTypes.PATH && !metadata.isPrimitive;
42
+ }
43
+ async transform(value, metadata) {
44
+ if (!this.validator) {
45
+ this.checkIsRequired(value, metadata);
46
+ return value;
47
+ }
48
+ if (this.skip(value, metadata)) {
49
+ return value;
50
+ }
51
+ value = this.coerceTypes(value, metadata);
52
+ this.checkIsRequired(value, metadata);
53
+ if (value === undefined) {
54
+ return value;
55
+ }
56
+ const schema = (0, schema_1.getJsonSchema)(metadata, {
57
+ customKeys: true
58
+ });
59
+ await this.validator.validate(value, {
60
+ schema,
61
+ type: metadata.isClass ? metadata.type : undefined,
62
+ collectionType: metadata.collectionType
63
+ });
64
+ return value;
65
+ }
66
+ checkIsRequired(value, metadata) {
67
+ if (metadata.isRequired(value)) {
68
+ throw RequiredValidationError_1.RequiredValidationError.from(metadata);
69
+ }
70
+ return true;
71
+ }
72
+ };
73
+ ValidationPipe = (0, tslib_1.__decorate)([
74
+ (0, di_1.Injectable)({
75
+ type: "validator"
76
+ }),
77
+ (0, tslib_1.__metadata)("design:paramtypes", [di_1.InjectorService])
78
+ ], ValidationPipe);
79
+ exports.ValidationPipe = ValidationPipe;
80
+ //# sourceMappingURL=ValidationPipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationPipe.js","sourceRoot":"","sources":["../../../src/pipes/ValidationPipe.ts"],"names":[],"mappings":";;;;AAAA,qCAAkC;AAClC,iCAAqD;AACrD,mDAA8C;AAC9C,yCAA2C;AAC3C,+EAA0E;AAE1E,qDAAgD;AAKhD,IAAa,cAAc,GAA3B,MAAa,cAAc;IAGzB,YAAY,QAAyB;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC;QAErG,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;SACvD;IACH,CAAC;IAED,WAAW,CAAC,KAAU,EAAE,QAAuB;QAC7C,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,QAAQ,CAAC,WAAW,EAAE;YACxB,IAAI;gBACF,OAAO,IAAA,yBAAW,EAAC,KAAK,EAAE;oBACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC,CAAC;aACJ;YAAC,OAAO,EAAE,EAAE;gBACX,OAAO,KAAK,CAAC;aACd;SACF;QAED,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACzB;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAU,EAAE,QAAuB;QACtC,OAAO,QAAQ,CAAC,SAAS,KAAK,uBAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAU,EAAE,QAAuB;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC;SACd;QAED,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEtC,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,QAAQ,EAAE;YACrC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE;YACnC,MAAM;YACN,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAClD,cAAc,EAAE,QAAQ,CAAC,cAAc;SACxC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAES,eAAe,CAAC,KAAU,EAAE,QAAuB;QAC3D,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC9B,MAAM,iDAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9C;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA/EY,cAAc;IAH1B,IAAA,eAAU,EAAC;QACV,IAAI,EAAE,WAAW;KAClB,CAAC;kDAIsB,oBAAe;GAH1B,cAAc,CA+E1B;AA/EY,wCAAc","sourcesContent":["import {nameOf} from \"@tsed/core\";\nimport {Injectable, InjectorService} from \"@tsed/di\";\nimport {deserialize} from \"@tsed/json-mapper\";\nimport {getJsonSchema} from \"@tsed/schema\";\nimport {RequiredValidationError} from \"../errors/RequiredValidationError\";\nimport {PipeMethods, ParamMetadata} from \"../domain/ParamMetadata\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\n\n@Injectable({\n type: \"validator\"\n})\nexport class ValidationPipe implements PipeMethods {\n private validator: {validate(value: any, options: any): Promise<any>};\n\n constructor(injector: InjectorService) {\n const provider = injector.getProviders().find((provider) => nameOf(provider.token) === \"AjvService\");\n\n if (provider) {\n this.validator = injector.invoke<any>(provider.token);\n }\n }\n\n coerceTypes(value: any, metadata: ParamMetadata) {\n if (value === undefined) {\n return value;\n }\n\n if (value === \"null\") {\n return null;\n }\n\n if (metadata.isPrimitive) {\n try {\n return deserialize(value, {\n type: metadata.type\n });\n } catch (er) {\n return value;\n }\n }\n\n if (metadata.isArray) {\n return [].concat(value);\n }\n\n return value;\n }\n\n skip(value: any, metadata: ParamMetadata) {\n return metadata.paramType === ParamTypes.PATH && !metadata.isPrimitive;\n }\n\n async transform(value: any, metadata: ParamMetadata): Promise<any> {\n if (!this.validator) {\n this.checkIsRequired(value, metadata);\n return value;\n }\n\n if (this.skip(value, metadata)) {\n return value;\n }\n\n value = this.coerceTypes(value, metadata);\n\n this.checkIsRequired(value, metadata);\n\n if (value === undefined) {\n return value;\n }\n\n const schema = getJsonSchema(metadata, {\n customKeys: true\n });\n\n await this.validator.validate(value, {\n schema,\n type: metadata.isClass ? metadata.type : undefined,\n collectionType: metadata.collectionType\n });\n\n return value;\n }\n\n protected checkIsRequired(value: any, metadata: ParamMetadata) {\n if (metadata.isRequired(value)) {\n throw RequiredValidationError.from(metadata);\n }\n\n return true;\n }\n}\n"]}
File without changes
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapParamsOptions = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ /**
6
+ * @ignore
7
+ */
8
+ function mapParamsOptions(args) {
9
+ if (args.length === 1) {
10
+ if (typeof args[0] === "string") {
11
+ return {
12
+ expression: args[0]
13
+ };
14
+ }
15
+ if (!(0, core_1.isObject)(args[0])) {
16
+ return {
17
+ useType: args[0]
18
+ };
19
+ }
20
+ return {
21
+ ...args[0]
22
+ };
23
+ }
24
+ return {
25
+ expression: args[0],
26
+ useType: args[1]
27
+ };
28
+ }
29
+ exports.mapParamsOptions = mapParamsOptions;
30
+ //# sourceMappingURL=mapParamsOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapParamsOptions.js","sourceRoot":"","sources":["../../../src/utils/mapParamsOptions.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAGpC;;GAEG;AACH,SAAgB,gBAAgB,CAAC,IAAW;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YAC/B,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;aACpB,CAAC;SACH;QAED,IAAI,CAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;aACjB,CAAC;SACH;QAED,OAAO;YACL,GAAG,IAAI,CAAC,CAAC,CAAC;SACX,CAAC;KACH;IAED,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;KACjB,CAAC;AACJ,CAAC;AAvBD,4CAuBC","sourcesContent":["import {isObject} from \"@tsed/core\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\n\n/**\n * @ignore\n */\nexport function mapParamsOptions(args: any[]): Partial<ParamOptions<any>> {\n if (args.length === 1) {\n if (typeof args[0] === \"string\") {\n return {\n expression: args[0]\n };\n }\n\n if (!isObject(args[0])) {\n return {\n useType: args[0]\n };\n }\n\n return {\n ...args[0]\n };\n }\n\n return {\n expression: args[0],\n useType: args[1]\n };\n}\n"]}