@tsed/platform-params 7.0.0-alpha.1 → 7.0.0-beta.10

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 (158) hide show
  1. package/lib/cjs/builder/PlatformParams.js +79 -0
  2. package/lib/cjs/builder/PlatformParams.js.map +1 -0
  3. package/lib/cjs/decorators/bodyParams.js +46 -0
  4. package/lib/cjs/decorators/bodyParams.js.map +1 -0
  5. package/lib/cjs/decorators/context.js +18 -0
  6. package/lib/cjs/decorators/context.js.map +1 -0
  7. package/lib/cjs/decorators/cookies.js +23 -0
  8. package/lib/cjs/decorators/cookies.js.map +1 -0
  9. package/lib/cjs/decorators/headerParams.js +18 -0
  10. package/lib/cjs/decorators/headerParams.js.map +1 -0
  11. package/lib/cjs/decorators/locals.js +18 -0
  12. package/lib/cjs/decorators/locals.js.map +1 -0
  13. package/lib/cjs/decorators/paramFn.js +17 -0
  14. package/lib/cjs/decorators/paramFn.js.map +1 -0
  15. package/lib/cjs/decorators/pathParams.js +54 -0
  16. package/lib/cjs/decorators/pathParams.js.map +1 -0
  17. package/lib/cjs/decorators/queryParams.js +54 -0
  18. package/lib/cjs/decorators/queryParams.js.map +1 -0
  19. package/lib/cjs/decorators/session.js +18 -0
  20. package/lib/cjs/decorators/session.js.map +1 -0
  21. package/lib/cjs/decorators/useDeserialization.js +18 -0
  22. package/lib/cjs/decorators/useDeserialization.js.map +1 -0
  23. package/lib/cjs/decorators/useParam.js +50 -0
  24. package/lib/cjs/decorators/useParam.js.map +1 -0
  25. package/lib/cjs/decorators/useParamExpression.js +20 -0
  26. package/lib/cjs/decorators/useParamExpression.js.map +1 -0
  27. package/lib/cjs/decorators/useParamType.js +32 -0
  28. package/lib/cjs/decorators/useParamType.js.map +1 -0
  29. package/lib/cjs/decorators/usePipe.js +22 -0
  30. package/lib/cjs/decorators/usePipe.js.map +1 -0
  31. package/lib/cjs/decorators/useType.js +20 -0
  32. package/lib/cjs/decorators/useType.js.map +1 -0
  33. package/lib/cjs/decorators/useValidation.js +22 -0
  34. package/lib/cjs/decorators/useValidation.js.map +1 -0
  35. package/lib/cjs/domain/ParamMetadata.js +6 -0
  36. package/lib/cjs/domain/ParamMetadata.js.map +1 -0
  37. package/lib/cjs/domain/ParamOptions.js +3 -0
  38. package/lib/cjs/domain/ParamOptions.js.map +1 -0
  39. package/lib/cjs/domain/ParamTypes.js +40 -0
  40. package/lib/cjs/domain/ParamTypes.js.map +1 -0
  41. package/lib/cjs/errors/ParamValidationError.js +29 -0
  42. package/lib/cjs/errors/ParamValidationError.js.map +1 -0
  43. package/lib/cjs/errors/RequiredValidationError.js +32 -0
  44. package/lib/cjs/errors/RequiredValidationError.js.map +1 -0
  45. package/lib/cjs/errors/ValidationError.js +13 -0
  46. package/lib/cjs/errors/ValidationError.js.map +1 -0
  47. package/lib/cjs/exports.js +3 -0
  48. package/lib/cjs/exports.js.map +1 -0
  49. package/lib/cjs/index.js +35 -0
  50. package/lib/cjs/index.js.map +1 -0
  51. package/lib/cjs/package.json +3 -0
  52. package/lib/cjs/pipes/DeserializerPipe.js +30 -0
  53. package/lib/cjs/pipes/DeserializerPipe.js.map +1 -0
  54. package/lib/cjs/pipes/ParseExpressionPipe.js +32 -0
  55. package/lib/cjs/pipes/ParseExpressionPipe.js.map +1 -0
  56. package/lib/cjs/pipes/ValidationPipe.js +83 -0
  57. package/lib/cjs/pipes/ValidationPipe.js.map +1 -0
  58. package/lib/cjs/utils/mapParamsOptions.js +30 -0
  59. package/lib/cjs/utils/mapParamsOptions.js.map +1 -0
  60. package/lib/esm/builder/PlatformParams.js +76 -0
  61. package/lib/esm/builder/PlatformParams.js.map +1 -0
  62. package/lib/esm/decorators/bodyParams.js +41 -0
  63. package/lib/esm/decorators/bodyParams.js.map +1 -0
  64. package/lib/esm/decorators/context.js +14 -0
  65. package/lib/esm/decorators/context.js.map +1 -0
  66. package/lib/esm/decorators/cookies.js +18 -0
  67. package/lib/esm/decorators/cookies.js.map +1 -0
  68. package/lib/esm/decorators/headerParams.js +14 -0
  69. package/lib/esm/decorators/headerParams.js.map +1 -0
  70. package/lib/esm/decorators/locals.js +14 -0
  71. package/lib/esm/decorators/locals.js.map +1 -0
  72. package/lib/esm/decorators/paramFn.js +13 -0
  73. package/lib/esm/decorators/paramFn.js.map +1 -0
  74. package/lib/esm/decorators/pathParams.js +49 -0
  75. package/lib/esm/decorators/pathParams.js.map +1 -0
  76. package/lib/esm/decorators/queryParams.js +49 -0
  77. package/lib/esm/decorators/queryParams.js.map +1 -0
  78. package/lib/esm/decorators/session.js +14 -0
  79. package/lib/esm/decorators/session.js.map +1 -0
  80. package/lib/esm/decorators/useDeserialization.js +14 -0
  81. package/lib/esm/decorators/useDeserialization.js.map +1 -0
  82. package/lib/esm/decorators/useParam.js +46 -0
  83. package/lib/esm/decorators/useParam.js.map +1 -0
  84. package/lib/esm/decorators/useParamExpression.js +16 -0
  85. package/lib/esm/decorators/useParamExpression.js.map +1 -0
  86. package/lib/esm/decorators/useParamType.js +28 -0
  87. package/lib/esm/decorators/useParamType.js.map +1 -0
  88. package/lib/esm/decorators/usePipe.js +18 -0
  89. package/lib/esm/decorators/usePipe.js.map +1 -0
  90. package/lib/esm/decorators/useType.js +16 -0
  91. package/lib/esm/decorators/useType.js.map +1 -0
  92. package/lib/esm/decorators/useValidation.js +18 -0
  93. package/lib/esm/decorators/useValidation.js.map +1 -0
  94. package/lib/esm/domain/ParamMetadata.js +2 -0
  95. package/lib/esm/domain/ParamMetadata.js.map +1 -0
  96. package/lib/esm/domain/ParamOptions.js +2 -0
  97. package/lib/esm/domain/ParamOptions.js.map +1 -0
  98. package/lib/esm/domain/ParamTypes.js +37 -0
  99. package/lib/esm/domain/ParamTypes.js.map +1 -0
  100. package/lib/esm/errors/ParamValidationError.js +25 -0
  101. package/lib/esm/errors/ParamValidationError.js.map +1 -0
  102. package/lib/esm/errors/RequiredValidationError.js +28 -0
  103. package/lib/esm/errors/RequiredValidationError.js.map +1 -0
  104. package/lib/esm/errors/ValidationError.js +9 -0
  105. package/lib/esm/errors/ValidationError.js.map +1 -0
  106. package/lib/esm/exports.js +2 -0
  107. package/lib/esm/exports.js.map +1 -0
  108. package/lib/esm/index.js +32 -0
  109. package/lib/esm/index.js.map +1 -0
  110. package/lib/esm/package.json +3 -0
  111. package/lib/esm/pipes/DeserializerPipe.js +27 -0
  112. package/lib/esm/pipes/DeserializerPipe.js.map +1 -0
  113. package/lib/esm/pipes/ParseExpressionPipe.js +29 -0
  114. package/lib/esm/pipes/ParseExpressionPipe.js.map +1 -0
  115. package/lib/esm/pipes/ValidationPipe.js +80 -0
  116. package/lib/esm/pipes/ValidationPipe.js.map +1 -0
  117. package/lib/esm/utils/mapParamsOptions.js +26 -0
  118. package/lib/esm/utils/mapParamsOptions.js.map +1 -0
  119. package/lib/{builder → types/builder}/PlatformParams.d.ts +3 -4
  120. package/lib/{decorators → types/decorators}/bodyParams.d.ts +2 -1
  121. package/lib/{decorators → types/decorators}/context.d.ts +0 -6
  122. package/lib/{decorators → types/decorators}/cookies.d.ts +0 -0
  123. package/lib/{decorators → types/decorators}/headerParams.d.ts +0 -0
  124. package/lib/{decorators → types/decorators}/locals.d.ts +0 -0
  125. package/lib/{decorators → types/decorators}/paramFn.d.ts +2 -2
  126. package/lib/{decorators → types/decorators}/pathParams.d.ts +0 -0
  127. package/lib/{decorators → types/decorators}/queryParams.d.ts +0 -0
  128. package/lib/{decorators → types/decorators}/session.d.ts +0 -0
  129. package/lib/{decorators → types/decorators}/useDeserialization.d.ts +0 -0
  130. package/lib/{decorators → types/decorators}/useParam.d.ts +0 -0
  131. package/lib/{decorators → types/decorators}/useParamExpression.d.ts +0 -0
  132. package/lib/{decorators → types/decorators}/useParamType.d.ts +0 -0
  133. package/lib/{decorators → types/decorators}/usePipe.d.ts +1 -1
  134. package/lib/{decorators → types/decorators}/useType.d.ts +0 -0
  135. package/lib/{decorators → types/decorators}/useValidation.d.ts +0 -0
  136. package/lib/types/domain/ParamMetadata.d.ts +1 -0
  137. package/lib/{domain → types/domain}/ParamOptions.d.ts +0 -0
  138. package/lib/{domain → types/domain}/ParamTypes.d.ts +1 -0
  139. package/lib/{errors → types/errors}/ParamValidationError.d.ts +2 -2
  140. package/lib/{errors → types/errors}/RequiredValidationError.d.ts +2 -3
  141. package/lib/{errors → types/errors}/ValidationError.d.ts +0 -0
  142. package/lib/types/exports.d.ts +1 -0
  143. package/lib/{index.d.ts → types/index.d.ts} +24 -21
  144. package/lib/types/pipes/DeserializerPipe.d.ts +5 -0
  145. package/lib/types/pipes/ParseExpressionPipe.d.ts +6 -0
  146. package/lib/types/pipes/ValidationPipe.d.ts +10 -0
  147. package/lib/{utils → types/utils}/mapParamsOptions.d.ts +0 -0
  148. package/package.json +41 -18
  149. package/readme.md +1 -2
  150. package/tsconfig.compile.esm.json +12 -0
  151. package/lib/domain/ParamMetadata.d.ts +0 -21
  152. package/lib/index.js +0 -844
  153. package/lib/index.js.map +0 -1
  154. package/lib/index.modern.js +0 -825
  155. package/lib/index.modern.js.map +0 -1
  156. package/lib/pipes/DeserializerPipe.d.ts +0 -5
  157. package/lib/pipes/ParseExpressionPipe.d.ts +0 -5
  158. package/lib/pipes/ValidationPipe.d.ts +0 -10
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlatformParams = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@tsed/di");
6
+ const schema_1 = require("@tsed/schema");
7
+ const ParamValidationError_1 = require("../errors/ParamValidationError");
8
+ const ParseExpressionPipe_1 = require("../pipes/ParseExpressionPipe");
9
+ /**
10
+ * Platform Params abstraction layer.
11
+ * @platform
12
+ */
13
+ let PlatformParams = class PlatformParams {
14
+ async getPipes(param) {
15
+ const get = (pipe) => {
16
+ return this.injector.getProvider(pipe).priority || 0;
17
+ };
18
+ const sort = (p1, p2) => (get(p1) < get(p2) ? -1 : get(p1) > get(p2) ? 1 : 0);
19
+ const map = (token) => this.injector.invoke(token);
20
+ const promises = await Promise.all([ParseExpressionPipe_1.ParseExpressionPipe, ...param.pipes.sort(sort)].map(map));
21
+ return promises.filter(Boolean);
22
+ }
23
+ async compile(entity) {
24
+ const params = schema_1.JsonParameterStore.getParams(entity.target, entity.propertyKey);
25
+ const argsPipes = await Promise.all(params.map(async (param) => {
26
+ return {
27
+ param,
28
+ pipes: await this.getPipes(param)
29
+ };
30
+ }));
31
+ return (scope) => {
32
+ const promises = argsPipes.map(({ param, pipes }) => {
33
+ return this.getArg(scope, pipes, param);
34
+ });
35
+ return Promise.all(promises);
36
+ };
37
+ }
38
+ async getArg(scope, pipes, param) {
39
+ return pipes.reduce(async (value, pipe) => {
40
+ value = await value;
41
+ try {
42
+ return await pipe.transform(value, param);
43
+ }
44
+ catch (er) {
45
+ throw ParamValidationError_1.ParamValidationError.from(param, er);
46
+ }
47
+ }, scope);
48
+ }
49
+ async compileHandler(metadata) {
50
+ const { token, propertyKey, getCustomArgs } = metadata;
51
+ const provider = this.injector.getProvider(token);
52
+ const getArguments = getCustomArgs || (await this.compile(schema_1.JsonEntityStore.fromMethod(token, propertyKey)));
53
+ if (!provider || !provider.scope || provider.scope === di_1.ProviderScope.SINGLETON) {
54
+ const instance = await this.injector.invoke(token);
55
+ const handler = instance[propertyKey].bind(instance);
56
+ return async (scope) => {
57
+ const args = await getArguments(scope);
58
+ return handler(...args, scope.$ctx);
59
+ };
60
+ }
61
+ return async (scope) => {
62
+ const [instance, args] = await Promise.all([this.injector.invoke(token, scope.$ctx.container), getArguments(scope)]);
63
+ const handler = instance[propertyKey].bind(instance);
64
+ return handler(...args, scope.$ctx);
65
+ };
66
+ }
67
+ };
68
+ tslib_1.__decorate([
69
+ (0, di_1.Inject)(),
70
+ tslib_1.__metadata("design:type", di_1.InjectorService)
71
+ ], PlatformParams.prototype, "injector", void 0);
72
+ PlatformParams = tslib_1.__decorate([
73
+ (0, di_1.Injectable)({
74
+ scope: di_1.ProviderScope.SINGLETON,
75
+ imports: []
76
+ })
77
+ ], PlatformParams);
78
+ exports.PlatformParams = PlatformParams;
79
+ //# sourceMappingURL=PlatformParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformParams.js","sourceRoot":"","sources":["../../../src/builder/PlatformParams.ts"],"names":[],"mappings":"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","sourcesContent":["import {DIContext, Inject, Injectable, InjectorService, ProviderScope, TokenProvider} from \"@tsed/di\";\nimport {JsonEntityStore, JsonParameterStore, PipeMethods} from \"@tsed/schema\";\nimport {ParamValidationError} from \"../errors/ParamValidationError\";\nimport {ParseExpressionPipe} from \"../pipes/ParseExpressionPipe\";\n\nexport type ArgScope<Context extends DIContext = DIContext> = {$ctx: Context} & Record<string, any>;\nexport type HandlerWithScope<Context extends DIContext = DIContext> = (scope: ArgScope<Context>) => any;\n\nexport interface CompileHandlerOptions<Context extends DIContext = DIContext> extends Record<any, unknown> {\n token: TokenProvider;\n propertyKey: string | symbol;\n getCustomArgs?: (scope: ArgScope<Context>) => Promise<any[]>;\n}\n\n/**\n * Platform Params abstraction layer.\n * @platform\n */\n@Injectable({\n scope: ProviderScope.SINGLETON,\n imports: []\n})\nexport class PlatformParams {\n @Inject()\n protected injector: InjectorService;\n\n async getPipes(param: JsonParameterStore) {\n const get = (pipe: TokenProvider) => {\n return this.injector.getProvider(pipe)!.priority || 0;\n };\n\n const sort = (p1: TokenProvider, p2: TokenProvider) => (get(p1) < get(p2) ? -1 : get(p1) > get(p2) ? 1 : 0);\n const map = (token: TokenProvider) => this.injector.invoke<PipeMethods>(token)!;\n const promises = await Promise.all([ParseExpressionPipe, ...param.pipes.sort(sort)].map(map));\n\n return promises.filter(Boolean);\n }\n\n async compile<Context extends DIContext = DIContext>(entity: JsonEntityStore) {\n const params = JsonParameterStore.getParams(entity.target, entity.propertyKey);\n\n const argsPipes = await Promise.all(\n params.map(async (param) => {\n return {\n param,\n pipes: await this.getPipes(param)\n };\n })\n );\n\n return (scope: ArgScope<Context>) => {\n const promises = argsPipes.map(({param, pipes}) => {\n return this.getArg(scope, pipes, param);\n });\n\n return Promise.all(promises);\n };\n }\n\n async getArg(scope: ArgScope, pipes: PipeMethods[], param: JsonParameterStore) {\n return pipes.reduce(async (value, pipe) => {\n value = await value;\n\n try {\n return await pipe.transform(value, param);\n } catch (er) {\n throw ParamValidationError.from(param, er);\n }\n }, scope as any);\n }\n\n async compileHandler<Context extends DIContext = DIContext>(\n metadata: CompileHandlerOptions<Context>\n ): Promise<HandlerWithScope<Context>> {\n const {token, propertyKey, getCustomArgs} = metadata;\n\n const provider = this.injector.getProvider(token);\n const getArguments = getCustomArgs || (await this.compile<Context>(JsonEntityStore.fromMethod(token, propertyKey!)));\n\n if (!provider || !provider.scope || provider.scope === ProviderScope.SINGLETON) {\n const instance = await this.injector.invoke<any>(token);\n const handler = instance[propertyKey!].bind(instance);\n\n return async (scope) => {\n const args = await getArguments(scope);\n\n return handler(...args, scope.$ctx);\n };\n }\n\n return async (scope) => {\n const [instance, args] = await Promise.all([this.injector.invoke<any>(token, scope.$ctx.container), getArguments(scope)]);\n\n const handler = instance[propertyKey!].bind(instance);\n\n return handler(...args, scope.$ctx);\n };\n }\n}\n"]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawBodyParams = exports.BodyParams = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const useParam_1 = require("./useParam");
6
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
7
+ function BodyParams(...args) {
8
+ const { expression, useType, useConverter = true, useValidation = true } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.BODY,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.BodyParams = BodyParams;
18
+ /**
19
+ * RawBodyParams return the value from [request.body](http://expressjs.com/en/4x/api.html#req.body) as a Buffer.
20
+ *
21
+ * #### Example
22
+ *
23
+ * ```typescript
24
+ * @Controller('/')
25
+ * class MyCtrl {
26
+ * @Post('/')
27
+ * create(@RawBodyParams() body: Buffer) {
28
+ * console.log('Entire body', body.toString("utf8"));
29
+ * }
30
+ * }
31
+ * ```
32
+ *
33
+ * @decorator
34
+ * @operation
35
+ * @input
36
+ * @alias BodyParams Example: @BodyParams() payload: Buffer
37
+ */
38
+ function RawBodyParams() {
39
+ return (0, useParam_1.UseParam)({
40
+ paramType: ParamTypes_1.ParamTypes.RAW_BODY,
41
+ useConverter: false,
42
+ useValidation: false
43
+ });
44
+ }
45
+ exports.RawBodyParams = RawBodyParams;
46
+ //# sourceMappingURL=bodyParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bodyParams.js","sourceRoot":"","sources":["../../../src/decorators/bodyParams.ts"],"names":[],"mappings":";;;AAEA,qDAAgD;AAChD,yCAAoC;AACpC,gEAA2D;AA4C3D,SAAgB,UAAU,CAAC,GAAG,IAAW;IACvC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAEhG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,IAAI;QAC1B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,gCAUC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,QAAQ;QAC9B,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAND,sCAMC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {UseParam} from \"./useParam\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\n\n/**\n * BodyParams return the value from [request.body](http://expressjs.com/en/4x/api.html#req.body) object.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Post('/')\n * create(@BodyParams() body: any) {\n * console.log('Entire body', body);\n * }\n *\n * @Post('/')\n * create(@BodyParams('id') id: string) {\n * console.log('ID', id);\n * }\n *\n * @Post('/')\n * create(@BodyParams('user') user: User) { // with deserialization\n * console.log('user', user);\n * }\n *\n * @Post('/')\n * create(@BodyParams('users', User) users: User[]) { // with deserialization\n * console.log('users', users);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @param useType The type of the class that to be used to deserialize the data.\n * @decorator\n * @operation\n * @input\n */\nexport function BodyParams(expression: string, useType: Type<any>): ParameterDecorator;\nexport function BodyParams(expression: string): ParameterDecorator;\nexport function BodyParams(useType: Type<any>): ParameterDecorator;\nexport function BodyParams(options: Partial<ParamOptions>): ParameterDecorator;\nexport function BodyParams(): ParameterDecorator;\nexport function BodyParams(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = true, useValidation = true} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.BODY,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n\n/**\n * RawBodyParams return the value from [request.body](http://expressjs.com/en/4x/api.html#req.body) as a Buffer.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Post('/')\n * create(@RawBodyParams() body: Buffer) {\n * console.log('Entire body', body.toString(\"utf8\"));\n * }\n * }\n * ```\n *\n * @decorator\n * @operation\n * @input\n * @alias BodyParams Example: @BodyParams() payload: Buffer\n */\nexport function RawBodyParams(): ParameterDecorator {\n return UseParam({\n paramType: ParamTypes.RAW_BODY,\n useConverter: false,\n useValidation: false\n });\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Context = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
6
+ const useParam_1 = require("./useParam");
7
+ function Context(...args) {
8
+ const { expression, useType, useConverter = false, useValidation = false } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.$CTX,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.Context = Context;
18
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/decorators/context.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAChD,gEAA2D;AAC3D,yCAAoC;AAqDpC,SAAgB,OAAO,CAAC,GAAG,IAAW;IACpC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAElG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,IAAI;QAC1B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,0BAUC","sourcesContent":["import {BaseContext} from \"@tsed/di\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {UseParam} from \"./useParam\";\n\n/**\n * Context decorator return the @@PlatformContext@@ created by Ts.ED when request is handled by the server.\n *\n * It contains some information as following:\n *\n * - The request id,\n * - The request container used by the Ts.ED DI. It contain all services annotated with `@Scope(ProviderScope.REQUEST)`,\n * - The current @@EndpointMetadata@@ resolved by Ts.ED during the request,\n * - The data return by the previous endpoint if you use multiple handler on the same route. By default data is empty.\n *\n * ::: tip\n * The @@PlatformContext@@ inherit from Map class. So you can store any information with.\n * :::\n *\n * #### Example\n *\n * ```typescript\n * @Middleware()\n * class AuthTokenMiddleware {\n * use(@Req() request: Req, @Context() context: PlatformContext) {\n * if (!context.has(\"auth\")){\n * context.set('auth', new AuthToken(request))\n * }\n *\n * try {\n * context.get(\"auth\").claims() // check token\n * } catch(er){\n * throw new Forbidden(\"Access forbidden - Bad token\")\n * }\n * }\n * }\n *\n * @Controller('/')\n * @UseBefore(AuthTokenMiddleware) // protect all routes for this controller\n * class MyCtrl {\n * @Get('/')\n * get(@Context('auth') auth: AuthToken) {\n * console.log('auth', auth);\n * console.log('auth.accessToken', auth.accessToken);\n * console.log('auth.idToken', auth.idToken);\n * }\n * }\n * ```\n *\n * @param expression The path of the property to get.\n * @decorator\n * @operation\n * @input\n */\nexport function Context(expression: string): ParameterDecorator;\nexport function Context(): ParameterDecorator;\nexport function Context(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = false, useValidation = false} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.$CTX,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n\nexport type Context = BaseContext;\n"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cookies = exports.CookiesParams = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
6
+ const useParam_1 = require("./useParam");
7
+ function CookiesParams(...args) {
8
+ const { expression, useType, useConverter = false, useValidation = false } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.COOKIES,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.CookiesParams = CookiesParams;
18
+ function Cookies(...args) {
19
+ // @ts-ignore
20
+ return CookiesParams(...args);
21
+ }
22
+ exports.Cookies = Cookies;
23
+ //# sourceMappingURL=cookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/decorators/cookies.ts"],"names":[],"mappings":";;;AAEA,qDAAgD;AAChD,gEAA2D;AAC3D,yCAAoC;AAsCpC,SAAgB,aAAa,CAAC,GAAG,IAAW;IAC1C,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAElG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,OAAO;QAC7B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,sCAUC;AA6CD,SAAgB,OAAO,CAAC,GAAG,IAAW;IACpC,aAAa;IACb,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAHD,0BAGC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {UseParam} from \"./useParam\";\n\n/**\n * Cookies or CookiesParams return the value from [request.cookies](http://expressjs.com/en/4x/api.html#req.cookies) object.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Post('/')\n * create(@Cookies() cookies: any) {\n * console.log('Entire cookies', cookies);\n * }\n *\n * @Post('/')\n * create(@Cookies('id') id: string) {\n * console.log('ID', id);\n * }\n *\n * @Post('/')\n * create(@Cookies('user') user: IUser) {\n * console.log('user', user);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @param useType The type of the class that to be used to deserialize the data.\n * @decorator\n * @operation\n * @input\n */\nexport function CookiesParams(expression: string | any, useType: any): ParameterDecorator;\nexport function CookiesParams(): ParameterDecorator;\nexport function CookiesParams(expression: string | any): ParameterDecorator;\nexport function CookiesParams(options: ParamOptions<any>): ParameterDecorator;\nexport function CookiesParams(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = false, useValidation = false} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.COOKIES,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n\n/**\n * Cookies or CookiesParams return the value from [request.cookies](http://expressjs.com/en/4x/api.html#req.cookies) object.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Post('/')\n * create(@Cookies() body: any) {\n * console.log('Entire body', body);\n * }\n *\n * @Post('/')\n * create(@Cookies('id') id: string) {\n * console.log('ID', id);\n * }\n *\n * @Post('/')\n * create(@Cookies('user') user: User) { // with deserialization\n * console.log('user', user);\n * }\n *\n * @Post('/')\n * create(@Cookies('users', User) users: User[]) { // with deserialization\n * console.log('users', users);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @param useType The type of the class that to be used to deserialize the data.\n * @decorator\n * @aliasof CookiesParams\n * @operation\n * @input\n */\nexport function Cookies(expression: string, useType: Type<any>): ParameterDecorator;\nexport function Cookies(expression: string): ParameterDecorator;\nexport function Cookies(useType: Type<any>): ParameterDecorator;\nexport function Cookies(options: Partial<ParamOptions>): ParameterDecorator;\nexport function Cookies(): ParameterDecorator;\nexport function Cookies(...args: any[]): ParameterDecorator {\n // @ts-ignore\n return CookiesParams(...args);\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeaderParams = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const useParam_1 = require("./useParam");
6
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
7
+ function HeaderParams(...args) {
8
+ const { expression, useType, useConverter = false, useValidation = false } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.HEADER,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.HeaderParams = HeaderParams;
18
+ //# sourceMappingURL=headerParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headerParams.js","sourceRoot":"","sources":["../../../src/decorators/headerParams.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAChD,yCAAoC;AACpC,gEAA2D;AAkC3D,SAAgB,YAAY,CAAC,GAAG,IAAW;IACzC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAElG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,MAAM;QAC5B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,oCAUC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {UseParam} from \"./useParam\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\n\n/**\n * HeaderParams return the value from [`request.get()`](http://expressjs.com/en/4x/api.html#req.get) method.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Get('/')\n * get(@HeaderParams() body: any) {\n * console.log('Entire body', body);\n * }\n *\n * @Get('/')\n * get(@HeaderParams('x-token') token: string) {\n * console.log('token', id);\n * }\n * }\n * ```\n *\n * @param expression The path of the property to get.\n * @param useType\n * @decorator\n * @operation\n * @input\n */\nexport function HeaderParams(expression: string, useType: Type<any>): ParameterDecorator;\nexport function HeaderParams(expression: string): ParameterDecorator;\nexport function HeaderParams(useType: Type<any>): ParameterDecorator;\nexport function HeaderParams(options: Partial<ParamOptions>): ParameterDecorator;\nexport function HeaderParams(): ParameterDecorator;\nexport function HeaderParams(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = false, useValidation = false} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.HEADER,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Locals = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
6
+ const useParam_1 = require("./useParam");
7
+ function Locals(...args) {
8
+ const { expression, useType, useConverter = false, useValidation = false } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.LOCALS,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.Locals = Locals;
18
+ //# sourceMappingURL=locals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locals.js","sourceRoot":"","sources":["../../../src/decorators/locals.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAChD,gEAA2D;AAC3D,yCAAoC;AA4CpC,SAAgB,MAAM,CAAC,GAAG,IAAW;IACnC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAElG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,MAAM;QAC5B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,wBAUC","sourcesContent":["import {ParamTypes} from \"../domain/ParamTypes\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {UseParam} from \"./useParam\";\n\n/**\n * Locals return the value from [response.locals](http://expressjs.com/en/4x/api.html#res.locals) object.\n *\n * ::: tip\n * Locals are generally used by express and third-party like templating engine to render a page/template.\n * See [Templating](http://tsed.io/tutorials/templating.html) section for more details.\n * :::\n *\n * #### Example\n *\n * ```typescript\n * * @Middleware()\n * class LocalsMiddleware {\n * use(@Locals() locals: any) {\n * // set some on locals\n * locals.user = \"user\"\n * }\n * }\n *\n * @Controller('/')\n * @UseBefore(LocalsMiddleware)\n * class MyCtrl {\n * @Get('/')\n * @View('home.ejs') // will use locals and returned data to render the page\n * get(@Locals('user') user: any) {\n * console.log('user', user);\n *\n * return {\n * description: 'Hello world'\n * }\n * }\n * }\n * ```\n *\n * @param expression The path of the property to get.\n * @decorator\n * @operation\n * @input\n * @response\n */\nexport function Locals(expression: string): ParameterDecorator;\nexport function Locals(): ParameterDecorator;\nexport function Locals(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = false, useValidation = false} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.LOCALS,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n"]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamFn = void 0;
4
+ const schema_1 = require("@tsed/schema");
5
+ /**
6
+ * Get the Param metadata. Use this decorator to compose your own decorator.
7
+ *
8
+ * @param fn
9
+ * @decorator
10
+ * @operation
11
+ * @input
12
+ */
13
+ function ParamFn(fn) {
14
+ return (0, schema_1.JsonEntityFn)(fn);
15
+ }
16
+ exports.ParamFn = ParamFn;
17
+ //# sourceMappingURL=paramFn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paramFn.js","sourceRoot":"","sources":["../../../src/decorators/paramFn.ts"],"names":[],"mappings":";;;AACA,yCAA8D;AAE9D;;;;;;;GAOG;AACH,SAAgB,OAAO,CAAC,EAAwE;IAC9F,OAAO,IAAA,qBAAY,EAAqB,EAAE,CAAC,CAAC;AAC9C,CAAC;AAFD,0BAEC","sourcesContent":["import {DecoratorParameters} from \"@tsed/core\";\nimport {JsonEntityFn, JsonParameterStore} from \"@tsed/schema\";\n\n/**\n * Get the Param metadata. Use this decorator to compose your own decorator.\n *\n * @param fn\n * @decorator\n * @operation\n * @input\n */\nexport function ParamFn(fn: (param: JsonParameterStore, parameters: DecoratorParameters) => void): ParameterDecorator {\n return JsonEntityFn<JsonParameterStore>(fn);\n}\n"]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawPathParams = exports.PathParams = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
6
+ const useParam_1 = require("./useParam");
7
+ function PathParams(...args) {
8
+ const { expression, useType, useConverter = true, useValidation = true } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.PATH,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.PathParams = PathParams;
18
+ /**
19
+ * RawPathParams return the raw value from [request.params](http://expressjs.com/en/4x/api.html#req.params) object.
20
+ *
21
+ * Any validation and transformation are performed on the value. Use [pipes](/docs/pipes.html) to validate and/or transform the value.
22
+ *
23
+ * #### Example
24
+ *
25
+ * ```typescript
26
+ * @Controller('/')
27
+ * class MyCtrl {
28
+ * @Get('/')
29
+ * get(@RawPathParams() params: string) {
30
+ * console.log('Entire params', params);
31
+ * }
32
+ *
33
+ * @Get('/')
34
+ * get(@RawPathParams('id') id: string) {
35
+ * console.log('ID', id);
36
+ * }
37
+ * }
38
+ * ```
39
+ * > For more information on deserialization see [converters](/docs/converters.md) page.
40
+ *
41
+ * @param expression The path of the property to get.
42
+ * @decorator
43
+ * @operation
44
+ * @input
45
+ */
46
+ function RawPathParams(expression) {
47
+ return (0, useParam_1.UseParam)({
48
+ paramType: ParamTypes_1.ParamTypes.PATH,
49
+ dataPath: "$ctx.request.params",
50
+ expression
51
+ });
52
+ }
53
+ exports.RawPathParams = RawPathParams;
54
+ //# sourceMappingURL=pathParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathParams.js","sourceRoot":"","sources":["../../../src/decorators/pathParams.ts"],"names":[],"mappings":";;;AAEA,qDAAgD;AAChD,gEAA2D;AAC3D,yCAAoC;AAuCpC,SAAgB,UAAU,CAAC,GAAG,IAAW;IACvC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAEhG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,IAAI;QAC1B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,gCAUC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAgB,aAAa,CAAC,UAAkB;IAC9C,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,IAAI;QAC1B,QAAQ,EAAE,qBAAqB;QAC/B,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAND,sCAMC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {UseParam} from \"./useParam\";\n\n/**\n * PathParams return the value from [request.params](http://expressjs.com/en/4x/api.html#req.params) object.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Get('/')\n * get(@PathParams() params: any) {\n * console.log('Entire params', params);\n * }\n *\n * @Get('/')\n * get(@PathParams('id') id: string) {\n * console.log('ID', id);\n * }\n *\n * @Get('/')\n * get(@PathParams({expression: 'id', useType: () => new MyCustomModel() }) id: string) {\n * console.log('ID', id);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @param useType The type of the class that to be used to deserialize the data.\n * @decorator\n * @operation\n * @input\n */\nexport function PathParams(expression: string, useType: Type<any>): ParameterDecorator;\nexport function PathParams(expression: string): ParameterDecorator;\nexport function PathParams(useType: Type<any>): ParameterDecorator;\nexport function PathParams(options: Partial<ParamOptions>): ParameterDecorator;\nexport function PathParams(): ParameterDecorator;\nexport function PathParams(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = true, useValidation = true} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.PATH,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n\n/**\n * RawPathParams return the raw value from [request.params](http://expressjs.com/en/4x/api.html#req.params) object.\n *\n * Any validation and transformation are performed on the value. Use [pipes](/docs/pipes.html) to validate and/or transform the value.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Get('/')\n * get(@RawPathParams() params: string) {\n * console.log('Entire params', params);\n * }\n *\n * @Get('/')\n * get(@RawPathParams('id') id: string) {\n * console.log('ID', id);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @decorator\n * @operation\n * @input\n */\nexport function RawPathParams(expression: string) {\n return UseParam({\n paramType: ParamTypes.PATH,\n dataPath: \"$ctx.request.params\",\n expression\n });\n}\n"]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawQueryParams = exports.QueryParams = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
6
+ const useParam_1 = require("./useParam");
7
+ function QueryParams(...args) {
8
+ const { expression, useType, useConverter = true, useValidation = true } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.QUERY,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.QueryParams = QueryParams;
18
+ /**
19
+ * RawQueryParams return the value from [request.query](http://expressjs.com/en/4x/api.html#req.query) object.
20
+ *
21
+ * Any validation and transformation are performed on the value. Use [pipes](/docs/pipes.html) to validate and/or transform the value.
22
+ *
23
+ * #### Example
24
+ *
25
+ * ```typescript
26
+ * @Controller('/')
27
+ * class MyCtrl {
28
+ * @Get('/')
29
+ * get(@RawPathParams() params: any) {
30
+ * console.log('Entire params', params);
31
+ * }
32
+ *
33
+ * @Get('/')
34
+ * get(@RawPathParams('id') id: string) {
35
+ * console.log('ID', id);
36
+ * }
37
+ * }
38
+ * ```
39
+ * > For more information on deserialization see [converters](/docs/converters.md) page.
40
+ *
41
+ * @param expression The path of the property to get.
42
+ * @decorator
43
+ * @operation
44
+ * @input
45
+ */
46
+ function RawQueryParams(expression) {
47
+ return QueryParams({
48
+ expression,
49
+ useConverters: false,
50
+ useValidation: false
51
+ });
52
+ }
53
+ exports.RawQueryParams = RawQueryParams;
54
+ //# sourceMappingURL=queryParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryParams.js","sourceRoot":"","sources":["../../../src/decorators/queryParams.ts"],"names":[],"mappings":";;;AAEA,qDAAgD;AAChD,gEAA2D;AAC3D,yCAAoC;AA4CpC,SAAgB,WAAW,CAAC,GAAG,IAAW;IACxC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAEhG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,KAAK;QAC3B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,kCAUC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAgB,cAAc,CAAC,UAAkB;IAC/C,OAAO,WAAW,CAAC;QACjB,UAAU;QACV,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAND,wCAMC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {UseParam} from \"./useParam\";\n\n/**\n * QueryParams return the value from [request.query](http://expressjs.com/en/4x/api.html#req.query) object.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Get('/')\n * get(@QueryParams() query: any) {\n * console.log('Entire query', query);\n * }\n *\n * @Get('/')\n * get(@QueryParams('id') id: string) {\n * console.log('ID', id);\n * }\n *\n * @Get('/')\n * get(@QueryParams('user') user: User) { // with deserialization\n * console.log('user', user);\n * }\n *\n * @Get('/')\n * get(@QueryParams('users', User) users: User[]) { // with deserialization\n * console.log('users', users);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @param useType The type of the class that to be used to deserialize the data.\n * @decorator\n * @operation\n * @input\n */\nexport function QueryParams(expression: string, useType: Type<any>): ParameterDecorator;\nexport function QueryParams(expression: string): ParameterDecorator;\nexport function QueryParams(useType: Type<any>): ParameterDecorator;\nexport function QueryParams(options: Partial<ParamOptions>): ParameterDecorator;\nexport function QueryParams(): ParameterDecorator;\nexport function QueryParams(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = true, useValidation = true} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.QUERY,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n\n/**\n * RawQueryParams return the value from [request.query](http://expressjs.com/en/4x/api.html#req.query) object.\n *\n * Any validation and transformation are performed on the value. Use [pipes](/docs/pipes.html) to validate and/or transform the value.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Get('/')\n * get(@RawPathParams() params: any) {\n * console.log('Entire params', params);\n * }\n *\n * @Get('/')\n * get(@RawPathParams('id') id: string) {\n * console.log('ID', id);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @decorator\n * @operation\n * @input\n */\nexport function RawQueryParams(expression: string) {\n return QueryParams({\n expression,\n useConverters: false,\n useValidation: false\n });\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Session = void 0;
4
+ const ParamTypes_1 = require("../domain/ParamTypes");
5
+ const mapParamsOptions_1 = require("../utils/mapParamsOptions");
6
+ const useParam_1 = require("./useParam");
7
+ function Session(...args) {
8
+ const { expression, useType, useConverter = false, useValidation = false } = (0, mapParamsOptions_1.mapParamsOptions)(args);
9
+ return (0, useParam_1.UseParam)({
10
+ paramType: ParamTypes_1.ParamTypes.SESSION,
11
+ expression,
12
+ useType,
13
+ useConverter,
14
+ useValidation
15
+ });
16
+ }
17
+ exports.Session = Session;
18
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/decorators/session.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAChD,gEAA2D;AAC3D,yCAAoC;AAqCpC,SAAgB,OAAO,CAAC,GAAG,IAAW;IACpC,MAAM,EAAC,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAC,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;IAElG,OAAO,IAAA,mBAAQ,EAAC;QACd,SAAS,EAAE,uBAAU,CAAC,OAAO;QAC7B,UAAU;QACV,OAAO;QACP,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAVD,0BAUC","sourcesContent":["import {ParamOptions} from \"../domain/ParamOptions\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {mapParamsOptions} from \"../utils/mapParamsOptions\";\nimport {UseParam} from \"./useParam\";\n\n/**\n * Session return the value from [request.session](http://expressjs.com/en/4x/api.html#req.session) object.\n *\n * #### Example\n *\n * ```typescript\n * @Controller('/')\n * class MyCtrl {\n * @Post('/')\n * create(@Session() session: Express.Session) {\n * console.log('Entire session', session);\n * }\n *\n * @Post('/')\n * create(@Session('id') id: string) {\n * console.log('ID', id);\n * }\n *\n * @Post('/') // Example to deserialize use from session\n * create(@Session({expression: 'user', useConverter: true}) user: User) {\n * console.log('user', user);\n * console.log('instanceOf user', user instanceof User);\n * }\n * }\n * ```\n * > For more information on deserialization see [converters](/docs/converters.md) page.\n *\n * @param expression The path of the property to get.\n * @decorator\n * @operation\n * @input\n */\nexport function Session(expression: string): ParameterDecorator;\nexport function Session(options: Partial<ParamOptions>): ParameterDecorator;\nexport function Session(): ParameterDecorator;\nexport function Session(...args: any[]): ParameterDecorator {\n const {expression, useType, useConverter = false, useValidation = false} = mapParamsOptions(args);\n\n return UseParam({\n paramType: ParamTypes.SESSION,\n expression,\n useType,\n useConverter,\n useValidation\n });\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseDeserialization = void 0;
4
+ const DeserializerPipe_1 = require("../pipes/DeserializerPipe");
5
+ const usePipe_1 = require("./usePipe");
6
+ /**
7
+ * Use JsonMapper to deserialize the data.
8
+ *
9
+ * @decorator
10
+ * @operation
11
+ * @input
12
+ * @pipe
13
+ */
14
+ function UseDeserialization(options = {}) {
15
+ return (0, usePipe_1.UsePipe)(DeserializerPipe_1.DeserializerPipe, options);
16
+ }
17
+ exports.UseDeserialization = UseDeserialization;
18
+ //# sourceMappingURL=useDeserialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeserialization.js","sourceRoot":"","sources":["../../../src/decorators/useDeserialization.ts"],"names":[],"mappings":";;;AAAA,gEAA2D;AAC3D,uCAAkC;AAElC;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,UAAe,EAAE;IAClD,OAAO,IAAA,iBAAO,EAAC,mCAAgB,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAFD,gDAEC","sourcesContent":["import {DeserializerPipe} from \"../pipes/DeserializerPipe\";\nimport {UsePipe} from \"./usePipe\";\n\n/**\n * Use JsonMapper to deserialize the data.\n *\n * @decorator\n * @operation\n * @input\n * @pipe\n */\nexport function UseDeserialization(options: any = {}) {\n return UsePipe(DeserializerPipe, options);\n}\n"]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseParam = void 0;
4
+ const core_1 = require("@tsed/core");
5
+ const schema_1 = require("@tsed/schema");
6
+ const ParamTypes_1 = require("../domain/ParamTypes");
7
+ const paramFn_1 = require("./paramFn");
8
+ const useDeserialization_1 = require("./useDeserialization");
9
+ const useParamType_1 = require("./useParamType");
10
+ const useType_1 = require("./useType");
11
+ const useValidation_1 = require("./useValidation");
12
+ /**
13
+ * @ignore
14
+ * @param options
15
+ */
16
+ function mapPipes(options) {
17
+ const { paramType, useType, expression, useValidation, useConverter, ...props } = options;
18
+ return [
19
+ useType
20
+ ? (0, useType_1.UseType)(useType)
21
+ : (0, paramFn_1.ParamFn)((entity, parameters) => {
22
+ if (entity.isCollection && entity.type === Object && paramType !== ParamTypes_1.ParamTypes.FILES) {
23
+ (0, schema_1.Any)()(...parameters);
24
+ }
25
+ }),
26
+ useValidation && (0, useValidation_1.UseValidation)(),
27
+ useConverter && (0, useDeserialization_1.UseDeserialization)(props)
28
+ ];
29
+ }
30
+ /**
31
+ * Register a new param. It use the paramType to extract value and give it to the next pipe.
32
+ *
33
+ * Given options allow to enable or disable following pipes:
34
+ *
35
+ * - useType: Add extra type for the json mapper,
36
+ * - expression: Get property from the returned value by the previous pipe.
37
+ * - useValidation: Apply validation from the returned value by the previous pipe.
38
+ * - useConverter: Apply json mapper from the returned value by the previous pipe.
39
+ *
40
+ * @param options
41
+ * @decorator
42
+ * @operation
43
+ * @input
44
+ * @pipe
45
+ */
46
+ function UseParam(options) {
47
+ return (0, core_1.useDecorators)((0, useParamType_1.UseParamType)(options), ...mapPipes(options));
48
+ }
49
+ exports.UseParam = UseParam;
50
+ //# sourceMappingURL=useParam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useParam.js","sourceRoot":"","sources":["../../../src/decorators/useParam.ts"],"names":[],"mappings":";;;AAAA,qCAA6D;AAC7D,yCAAiC;AAEjC,qDAAgD;AAChD,uCAAkC;AAClC,6DAAwD;AACxD,iDAA4C;AAC5C,uCAAkC;AAClC,mDAA8C;AAE9C;;;GAGG;AACH,SAAS,QAAQ,CAAC,OAA8B;IAC9C,MAAM,EAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;IAExF,OAAO;QACL,OAAO;YACL,CAAC,CAAC,IAAA,iBAAO,EAAC,OAAO,CAAC;YAClB,CAAC,CAAC,IAAA,iBAAO,EAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;gBAC7B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,KAAK,uBAAU,CAAC,KAAK,EAAE;oBACnF,IAAA,YAAG,GAAE,CAAC,GAAG,UAAU,CAAC,CAAC;iBACtB;YACH,CAAC,CAAC;QACN,aAAa,IAAI,IAAA,6BAAa,GAAE;QAChC,YAAY,IAAI,IAAA,uCAAkB,EAAC,KAAK,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,QAAQ,CAAC,OAA8B;IACrD,OAAO,IAAA,oBAAa,EAAC,IAAA,2BAAY,EAAC,OAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAuB,CAAC;AACjG,CAAC;AAFD,4BAEC","sourcesContent":["import {isBuffer, isString, useDecorators} from \"@tsed/core\";\nimport {Any} from \"@tsed/schema\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {ParamTypes} from \"../domain/ParamTypes\";\nimport {ParamFn} from \"./paramFn\";\nimport {UseDeserialization} from \"./useDeserialization\";\nimport {UseParamType} from \"./useParamType\";\nimport {UseType} from \"./useType\";\nimport {UseValidation} from \"./useValidation\";\n\n/**\n * @ignore\n * @param options\n */\nfunction mapPipes(options: Partial<ParamOptions>) {\n const {paramType, useType, expression, useValidation, useConverter, ...props} = options;\n\n return [\n useType\n ? UseType(useType)\n : ParamFn((entity, parameters) => {\n if (entity.isCollection && entity.type === Object && paramType !== ParamTypes.FILES) {\n Any()(...parameters);\n }\n }),\n useValidation && UseValidation(),\n useConverter && UseDeserialization(props)\n ];\n}\n\n/**\n * Register a new param. It use the paramType to extract value and give it to the next pipe.\n *\n * Given options allow to enable or disable following pipes:\n *\n * - useType: Add extra type for the json mapper,\n * - expression: Get property from the returned value by the previous pipe.\n * - useValidation: Apply validation from the returned value by the previous pipe.\n * - useConverter: Apply json mapper from the returned value by the previous pipe.\n *\n * @param options\n * @decorator\n * @operation\n * @input\n * @pipe\n */\nexport function UseParam(options: Partial<ParamOptions>): ParameterDecorator {\n return useDecorators(UseParamType(options as any), ...mapPipes(options)) as ParameterDecorator;\n}\n"]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseParamExpression = void 0;
4
+ const paramFn_1 = require("./paramFn");
5
+ /**
6
+ * Get data from a path inside the given object
7
+ *
8
+ * @param expression
9
+ * @decorator
10
+ * @operation
11
+ * @input
12
+ * @pipe
13
+ */
14
+ function UseParamExpression(expression) {
15
+ return (0, paramFn_1.ParamFn)((param) => {
16
+ param.expression = expression || "";
17
+ });
18
+ }
19
+ exports.UseParamExpression = UseParamExpression;
20
+ //# sourceMappingURL=useParamExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useParamExpression.js","sourceRoot":"","sources":["../../../src/decorators/useParamExpression.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAElC;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,UAAmB;IACpD,OAAO,IAAA,iBAAO,EAAC,CAAC,KAAK,EAAE,EAAE;QACvB,KAAK,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,gDAIC","sourcesContent":["import {ParamFn} from \"./paramFn\";\n\n/**\n * Get data from a path inside the given object\n *\n * @param expression\n * @decorator\n * @operation\n * @input\n * @pipe\n */\nexport function UseParamExpression(expression?: string) {\n return ParamFn((param) => {\n param.expression = expression || \"\";\n });\n}\n"]}
@@ -0,0 +1,32 @@
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
+ const ParamTypes_1 = require("../domain/ParamTypes");
9
+ /**
10
+ * Get the object from request (like body, params, query, etc...).
11
+ *
12
+ * @decorator
13
+ * @operation
14
+ * @input
15
+ * @pipe
16
+ */
17
+ function UseParamType(options) {
18
+ return (0, core_1.useDecorators)((0, paramFn_1.ParamFn)((param) => {
19
+ var _a;
20
+ if ((0, schema_1.isParameterType)(options.paramType)) {
21
+ param.parameter.in(options.paramType);
22
+ }
23
+ param.paramType = options.paramType;
24
+ if ((0, core_1.isBuffer)(param.type) || (0, core_1.isBuffer)(options.useType) || options.paramType === ParamTypes_1.ParamTypes.RAW_BODY) {
25
+ param.paramType = ParamTypes_1.ParamTypes.RAW_BODY;
26
+ (_a = param.parent.operation) === null || _a === void 0 ? void 0 : _a.consumes(["*/*"]);
27
+ }
28
+ param.dataPath = options.dataPath || ParamTypes_1.PARAM_TYPES_DATA_PATH[param.paramType] || "$ctx";
29
+ }), options.expression && (0, useParamExpression_1.UseParamExpression)(options.expression), options.expression && (0, schema_1.Name)(options.expression));
30
+ }
31
+ exports.UseParamType = UseParamType;
32
+ //# sourceMappingURL=useParamType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useParamType.js","sourceRoot":"","sources":["../../../src/decorators/useParamType.ts"],"names":[],"mappings":";;;AAAA,qCAAmD;AACnD,yCAAmD;AACnD,uCAAkC;AAElC,6DAAwD;AACxD,qDAAuE;AAEvE;;;;;;;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;QAEpC,IAAI,IAAA,eAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAA,eAAQ,EAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,uBAAU,CAAC,QAAQ,EAAE;YAClG,KAAK,CAAC,SAAS,GAAG,uBAAU,CAAC,QAAQ,CAAC;YACtC,MAAA,KAAK,CAAC,MAAM,CAAC,SAAS,0CAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3C;QAED,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,kCAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IACxF,CAAC,CAAC,EACF,OAAO,CAAC,UAAU,IAAI,IAAA,uCAAkB,EAAC,OAAO,CAAC,UAAU,CAAC,EAC5D,OAAO,CAAC,UAAU,IAAI,IAAA,aAAI,EAAC,OAAO,CAAC,UAAU,CAAC,CAC/C,CAAC;AACJ,CAAC;AAnBD,oCAmBC","sourcesContent":["import {isBuffer, useDecorators} from \"@tsed/core\";\nimport {isParameterType, Name} from \"@tsed/schema\";\nimport {ParamFn} from \"./paramFn\";\nimport {ParamOptions} from \"../domain/ParamOptions\";\nimport {UseParamExpression} from \"./useParamExpression\";\nimport {PARAM_TYPES_DATA_PATH, ParamTypes} from \"../domain/ParamTypes\";\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\n if (isBuffer(param.type) || isBuffer(options.useType) || options.paramType === ParamTypes.RAW_BODY) {\n param.paramType = ParamTypes.RAW_BODY;\n param.parent.operation?.consumes([\"*/*\"]);\n }\n\n param.dataPath = options.dataPath || PARAM_TYPES_DATA_PATH[param.paramType] || \"$ctx\";\n }),\n options.expression && UseParamExpression(options.expression),\n options.expression && Name(options.expression)\n );\n}\n"]}
@@ -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 \"@tsed/schema\";\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"]}