@spinajs/http 1.0.14 → 1.2.103

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 (139) hide show
  1. package/README.md +11 -0
  2. package/lib/config/http.js +17 -17
  3. package/lib/config/http.js.map +1 -1
  4. package/lib/controllers.d.ts +6 -4
  5. package/lib/controllers.js +53 -184
  6. package/lib/controllers.js.map +1 -1
  7. package/lib/decorators.d.ts +49 -24
  8. package/lib/decorators.js +97 -40
  9. package/lib/decorators.js.map +1 -1
  10. package/lib/exceptions.d.ts +0 -0
  11. package/lib/exceptions.js +1 -0
  12. package/lib/exceptions.js.map +1 -0
  13. package/lib/http.d.ts +0 -0
  14. package/lib/http.js +1 -0
  15. package/lib/http.js.map +1 -0
  16. package/lib/hydrators/datetime.d.ts +8 -0
  17. package/lib/hydrators/datetime.js +63 -0
  18. package/lib/hydrators/datetime.js.map +1 -0
  19. package/lib/index.d.ts +1 -1
  20. package/lib/index.js +8 -3
  21. package/lib/index.js.map +1 -1
  22. package/lib/interfaces.d.ts +44 -15
  23. package/lib/interfaces.js +31 -12
  24. package/lib/interfaces.js.map +1 -1
  25. package/lib/response-methods/badRequest.d.ts +3 -2
  26. package/lib/response-methods/badRequest.js +1 -1
  27. package/lib/response-methods/badRequest.js.map +1 -1
  28. package/lib/response-methods/conflict.d.ts +3 -2
  29. package/lib/response-methods/conflict.js +1 -1
  30. package/lib/response-methods/conflict.js.map +1 -1
  31. package/lib/response-methods/cookieResponse.d.ts +3 -2
  32. package/lib/response-methods/cookieResponse.js +9 -5
  33. package/lib/response-methods/cookieResponse.js.map +1 -1
  34. package/lib/response-methods/created.d.ts +3 -2
  35. package/lib/response-methods/created.js +1 -1
  36. package/lib/response-methods/created.js.map +1 -1
  37. package/lib/response-methods/file.d.ts +16 -2
  38. package/lib/response-methods/file.js +67 -5
  39. package/lib/response-methods/file.js.map +1 -1
  40. package/lib/response-methods/forbidden.d.ts +3 -2
  41. package/lib/response-methods/forbidden.js +1 -1
  42. package/lib/response-methods/forbidden.js.map +1 -1
  43. package/lib/response-methods/index.js +6 -2
  44. package/lib/response-methods/index.js.map +1 -1
  45. package/lib/response-methods/noContent.d.ts +3 -2
  46. package/lib/response-methods/noContent.js +1 -1
  47. package/lib/response-methods/noContent.js.map +1 -1
  48. package/lib/response-methods/notFound.d.ts +3 -2
  49. package/lib/response-methods/notFound.js +1 -1
  50. package/lib/response-methods/notFound.js.map +1 -1
  51. package/lib/response-methods/ok.d.ts +3 -2
  52. package/lib/response-methods/ok.js +1 -1
  53. package/lib/response-methods/ok.js.map +1 -1
  54. package/lib/response-methods/pug.d.ts +3 -2
  55. package/lib/response-methods/pug.js +1 -1
  56. package/lib/response-methods/pug.js.map +1 -1
  57. package/lib/response-methods/redirect.d.ts +2 -2
  58. package/lib/response-methods/redirect.js +2 -4
  59. package/lib/response-methods/redirect.js.map +1 -1
  60. package/lib/response-methods/serverError.d.ts +3 -2
  61. package/lib/response-methods/serverError.js +1 -1
  62. package/lib/response-methods/serverError.js.map +1 -1
  63. package/lib/response-methods/unauthorized.d.ts +3 -2
  64. package/lib/response-methods/unauthorized.js +1 -1
  65. package/lib/response-methods/unauthorized.js.map +1 -1
  66. package/lib/responses.d.ts +1 -1
  67. package/lib/responses.js +28 -11
  68. package/lib/responses.js.map +1 -1
  69. package/lib/route-args/ArgAsRequest.d.ts +11 -0
  70. package/lib/{transformers/PureFormatter.js → route-args/ArgAsRequest.js} +13 -12
  71. package/lib/route-args/ArgAsRequest.js.map +1 -0
  72. package/lib/route-args/ArgAsResponse.d.ts +10 -0
  73. package/lib/{dto/order-dto.js → route-args/ArgAsResponse.js} +16 -18
  74. package/lib/route-args/ArgAsResponse.js.map +1 -0
  75. package/lib/route-args/ArgHydrator.d.ts +3 -0
  76. package/lib/route-args/ArgHydrator.js +7 -0
  77. package/lib/route-args/ArgHydrator.js.map +1 -0
  78. package/lib/route-args/FromBody.d.ts +10 -0
  79. package/lib/route-args/FromBody.js +44 -0
  80. package/lib/route-args/FromBody.js.map +1 -0
  81. package/lib/route-args/FromCoockie.d.ts +13 -0
  82. package/lib/route-args/FromCoockie.js +71 -0
  83. package/lib/route-args/FromCoockie.js.map +1 -0
  84. package/lib/route-args/FromCookie.d.ts +13 -0
  85. package/lib/route-args/FromCookie.js +74 -0
  86. package/lib/route-args/FromCookie.js.map +1 -0
  87. package/lib/route-args/FromDi.d.ts +14 -0
  88. package/lib/route-args/FromDi.js +36 -0
  89. package/lib/route-args/FromDi.js.map +1 -0
  90. package/lib/route-args/FromForm.d.ts +82 -0
  91. package/lib/route-args/FromForm.js +259 -0
  92. package/lib/route-args/FromForm.js.map +1 -0
  93. package/lib/route-args/FromHeaderArg.d.ts +12 -0
  94. package/lib/route-args/FromHeaderArg.js +30 -0
  95. package/lib/route-args/FromHeaderArg.js.map +1 -0
  96. package/lib/route-args/FromParams.d.ts +10 -0
  97. package/lib/route-args/FromParams.js +25 -0
  98. package/lib/route-args/FromParams.js.map +1 -0
  99. package/lib/route-args/FromQuery.d.ts +10 -0
  100. package/lib/{dto/limit-dto.js → route-args/FromQuery.js} +16 -18
  101. package/lib/route-args/FromQuery.js.map +1 -0
  102. package/lib/route-args/RouteArgs.d.ts +19 -0
  103. package/lib/route-args/RouteArgs.js +64 -0
  104. package/lib/route-args/RouteArgs.js.map +1 -0
  105. package/lib/route-args/index.d.ts +11 -0
  106. package/lib/route-args/index.js +28 -0
  107. package/lib/route-args/index.js.map +1 -0
  108. package/lib/schemas/RouteArgsSchemas.d.ts +15 -0
  109. package/lib/schemas/RouteArgsSchemas.js +19 -0
  110. package/lib/schemas/RouteArgsSchemas.js.map +1 -0
  111. package/lib/server.d.ts +3 -2
  112. package/lib/server.js +30 -14
  113. package/lib/server.js.map +1 -1
  114. package/lib/transformers/PureTransformer.d.ts +1 -1
  115. package/lib/transformers/PureTransformer.js +2 -2
  116. package/lib/transformers/PureTransformer.js.map +1 -1
  117. package/package.json +27 -54
  118. package/lib/dto/index.d.ts +0 -2
  119. package/lib/dto/index.js +0 -15
  120. package/lib/dto/index.js.map +0 -1
  121. package/lib/dto/limit-dto.d.ts +0 -32
  122. package/lib/dto/limit-dto.js.map +0 -1
  123. package/lib/dto/order-dto.d.ts +0 -32
  124. package/lib/dto/order-dto.js.map +0 -1
  125. package/lib/schemas.d.ts +0 -24
  126. package/lib/schemas.js +0 -96
  127. package/lib/schemas.js.map +0 -1
  128. package/lib/static/favicon.ico +0 -0
  129. package/lib/static/style.css +0 -15
  130. package/lib/transformers/PureFormatter.d.ts +0 -7
  131. package/lib/transformers/PureFormatter.js.map +0 -1
  132. package/lib/views/responses/badRequest.pug +0 -13
  133. package/lib/views/responses/conflict.pug +0 -13
  134. package/lib/views/responses/forbidden.pug +0 -13
  135. package/lib/views/responses/noContent.pug +0 -13
  136. package/lib/views/responses/notFound.pug +0 -13
  137. package/lib/views/responses/ok.pug +0 -12
  138. package/lib/views/responses/serverError.pug +0 -13
  139. package/lib/views/responses/unauthorized.pug +0 -13
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.FromForm = exports.FromFormField = exports.CsvFileRouteArgs = exports.JsonFileRouteArgs = exports.FromFile = exports.FromFormBase = void 0;
36
+ const RouteArgs_1 = require("./RouteArgs");
37
+ const interfaces_1 = require("../interfaces");
38
+ const formidable_1 = require("formidable");
39
+ const configuration_1 = require("@spinajs/configuration");
40
+ const lodash_1 = require("lodash");
41
+ const di_1 = require("@spinajs/di");
42
+ const parse_1 = require("@fast-csv/parse");
43
+ const fs = __importStar(require("fs"));
44
+ class FromFormBase extends RouteArgs_1.RouteArgs {
45
+ async parseForm(callData, param, req) {
46
+ if (callData && callData.Payload && callData.Payload.Form) {
47
+ this.Data = callData.Payload.Form;
48
+ }
49
+ if (!this.Data) {
50
+ await this.parse(req, param.Options);
51
+ }
52
+ }
53
+ async parse(req, options) {
54
+ if (!this.Data) {
55
+ let opts = options || { multiples: true };
56
+ if (options && (0, lodash_1.isFunction)(options)) {
57
+ opts = await options(di_1.DI.get(configuration_1.Configuration));
58
+ }
59
+ this.Data = await this._parse(req, opts);
60
+ }
61
+ }
62
+ _parse(req, options) {
63
+ const form = new formidable_1.IncomingForm(options);
64
+ return new Promise((res, rej) => {
65
+ form.parse(req, (err, fields, files) => {
66
+ if (err) {
67
+ rej(err);
68
+ return;
69
+ }
70
+ res({ Fields: fields, Files: files });
71
+ });
72
+ });
73
+ }
74
+ }
75
+ exports.FromFormBase = FromFormBase;
76
+ let FromFile = class FromFile extends FromFormBase {
77
+ get SupportedType() {
78
+ return interfaces_1.ParameterType.FromFile;
79
+ }
80
+ constructor(data) {
81
+ super();
82
+ this.Data = data;
83
+ }
84
+ async extract(callData, param, req) {
85
+ if (!this.Data) {
86
+ await this.parseForm(callData, param, req);
87
+ }
88
+ // map from formidable to our object
89
+ // of type IUploadedFile
90
+ const formFiles = this.Data.Files[param.Name];
91
+ if (Array.isArray(formFiles)) {
92
+ return {
93
+ CallData: Object.assign(Object.assign({}, callData), { Payload: {
94
+ Form: this.Data,
95
+ } }),
96
+ Args: formFiles.map((f) => {
97
+ return {
98
+ Size: f.size,
99
+ Path: f.filepath,
100
+ Name: f.originalFilename,
101
+ Type: f.mimetype,
102
+ LastModifiedDate: f.mtime,
103
+ Hash: f.hash,
104
+ };
105
+ }),
106
+ };
107
+ }
108
+ else {
109
+ return {
110
+ CallData: Object.assign(Object.assign({}, callData), { Payload: {
111
+ Form: this.Data,
112
+ } }),
113
+ Args: {
114
+ Size: formFiles.size,
115
+ Path: formFiles.filepath,
116
+ Name: formFiles.originalFilename,
117
+ Type: formFiles.mimetype,
118
+ LastModifiedDate: formFiles.mtime,
119
+ Hash: formFiles.hash,
120
+ },
121
+ };
122
+ }
123
+ }
124
+ };
125
+ FromFile = __decorate([
126
+ (0, di_1.Injectable)(),
127
+ (0, di_1.NewInstance)(),
128
+ __metadata("design:paramtypes", [Object])
129
+ ], FromFile);
130
+ exports.FromFile = FromFile;
131
+ let JsonFileRouteArgs = class JsonFileRouteArgs extends FromFile {
132
+ get SupportedType() {
133
+ return interfaces_1.ParameterType.FromJSONFile;
134
+ }
135
+ constructor(data) {
136
+ super(data);
137
+ }
138
+ async extract(callData, param, req) {
139
+ var _a;
140
+ if (!this.Data) {
141
+ await this.parseForm(callData, param, req);
142
+ }
143
+ const sourceFile = this.Data.Files[param.Name].filepath;
144
+ const content = await fs.promises.readFile(sourceFile, { encoding: (_a = param.Options.Encoding) !== null && _a !== void 0 ? _a : 'utf-8', flag: 'r' });
145
+ if (param.Options.DeleteFile) {
146
+ fs.promises.unlink(sourceFile);
147
+ }
148
+ return {
149
+ CallData: Object.assign(Object.assign({}, callData), { Payload: {
150
+ Form: this.Data,
151
+ } }),
152
+ Args: JSON.parse(content.toString()),
153
+ };
154
+ }
155
+ };
156
+ JsonFileRouteArgs = __decorate([
157
+ (0, di_1.Injectable)(),
158
+ (0, di_1.NewInstance)(),
159
+ __metadata("design:paramtypes", [Object])
160
+ ], JsonFileRouteArgs);
161
+ exports.JsonFileRouteArgs = JsonFileRouteArgs;
162
+ let CsvFileRouteArgs = class CsvFileRouteArgs extends FromFile {
163
+ get SupportedType() {
164
+ return interfaces_1.ParameterType.FromCSV;
165
+ }
166
+ constructor(data) {
167
+ super(data);
168
+ }
169
+ async extract(callData, param, req) {
170
+ if (!this.Data) {
171
+ await this.parseForm(callData, param, req);
172
+ }
173
+ const sourceFile = this.Data.Files[param.Name].filepath;
174
+ if (param.Options.DeleteFile) {
175
+ fs.promises.unlink(sourceFile);
176
+ }
177
+ const data = await this.parseCvs(sourceFile, param.Options);
178
+ return {
179
+ CallData: Object.assign(Object.assign({}, callData), { Payload: {
180
+ Form: this.Data,
181
+ } }),
182
+ Args: data,
183
+ };
184
+ }
185
+ async parseCvs(path, options) {
186
+ const data = [];
187
+ return new Promise((res, rej) => {
188
+ fs.createReadStream(path)
189
+ .pipe((0, parse_1.parse)(options))
190
+ .on('error', (err) => rej(err))
191
+ .on('data', (row) => data.push(row))
192
+ .on('end', () => res(data));
193
+ });
194
+ }
195
+ };
196
+ CsvFileRouteArgs = __decorate([
197
+ (0, di_1.Injectable)(),
198
+ (0, di_1.NewInstance)(),
199
+ __metadata("design:paramtypes", [Object])
200
+ ], CsvFileRouteArgs);
201
+ exports.CsvFileRouteArgs = CsvFileRouteArgs;
202
+ let FromFormField = class FromFormField extends FromFormBase {
203
+ get SupportedType() {
204
+ return interfaces_1.ParameterType.FormField;
205
+ }
206
+ constructor(data) {
207
+ super();
208
+ this.Data = data;
209
+ }
210
+ async extract(callData, param, req) {
211
+ if (!this.Data) {
212
+ await this.parseForm(callData, param, req);
213
+ }
214
+ return {
215
+ CallData: Object.assign(Object.assign({}, callData), { Payload: {
216
+ Form: this.Data,
217
+ } }),
218
+ Args: this.Data.Fields[param.Name],
219
+ };
220
+ }
221
+ };
222
+ FromFormField = __decorate([
223
+ (0, di_1.Injectable)(),
224
+ (0, di_1.NewInstance)(),
225
+ __metadata("design:paramtypes", [Object])
226
+ ], FromFormField);
227
+ exports.FromFormField = FromFormField;
228
+ let FromForm = class FromForm extends FromFormBase {
229
+ get SupportedType() {
230
+ return interfaces_1.ParameterType.FromForm;
231
+ }
232
+ constructor(data) {
233
+ super();
234
+ this.Data = data;
235
+ }
236
+ async extract(callData, param, req) {
237
+ if (!this.Data) {
238
+ await this.parseForm(callData, param, req);
239
+ }
240
+ let result = this.Data.Fields;
241
+ const [hydrated, hValue] = await this.tryHydrateObject(this.Data.Fields, param);
242
+ if (hydrated) {
243
+ result = hValue;
244
+ }
245
+ return {
246
+ CallData: Object.assign(Object.assign({}, callData), { Payload: {
247
+ Form: this.Data,
248
+ } }),
249
+ Args: result,
250
+ };
251
+ }
252
+ };
253
+ FromForm = __decorate([
254
+ (0, di_1.Injectable)(),
255
+ (0, di_1.NewInstance)(),
256
+ __metadata("design:paramtypes", [Object])
257
+ ], FromForm);
258
+ exports.FromForm = FromForm;
259
+ //# sourceMappingURL=FromForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FromForm.js","sourceRoot":"","sources":["../../src/route-args/FromForm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,8CAA2E;AAE3E,2CAA+D;AAC/D,0DAAuD;AACvD,mCAAoC;AACpC,oCAA0D;AAC1D,2CAAwC;AACxC,uCAAyB;AAqBzB,MAAsB,YAAa,SAAQ,qBAAS;IAGxC,KAAK,CAAC,SAAS,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QAC1F,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;YACzD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;SACnC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;IAES,KAAK,CAAC,KAAK,CAAC,GAAoB,EAAE,OAA0C;QACpF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,IAAI,GAAQ,OAAO,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAE/C,IAAI,OAAO,IAAI,IAAA,mBAAU,EAAC,OAAO,CAAC,EAAE;gBAClC,IAAI,GAAG,MAAM,OAAO,CAAC,OAAE,CAAC,GAAG,CAAC,6BAAa,CAAC,CAAC,CAAC;aAC7C;YAED,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC1C;IACH,CAAC;IAEO,MAAM,CAAC,GAAoB,EAAE,OAAY;QAC/C,MAAM,IAAI,GAAG,IAAI,yBAAY,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,OAAO,CAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAQ,EAAE,MAAc,EAAE,KAAY,EAAE,EAAE;gBACzD,IAAI,GAAG,EAAE;oBACP,GAAG,CAAC,GAAG,CAAC,CAAC;oBACT,OAAO;iBACR;gBAED,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAtCD,oCAsCC;AAID,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,YAAY;IACxC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,YAAY,IAAS;QACnB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,oCAAoC;QACpC,wBAAwB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC5B,OAAO;gBACL,QAAQ,kCACH,QAAQ,KACX,OAAO,EAAE;wBACP,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB,GACF;gBACD,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAO,EAAE,EAAE;oBAC9B,OAAO;wBACL,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,CAAC,CAAC,QAAQ;wBAChB,IAAI,EAAE,CAAC,CAAC,gBAAgB;wBACxB,IAAI,EAAE,CAAC,CAAC,QAAQ;wBAChB,gBAAgB,EAAE,CAAC,CAAC,KAAK;wBACzB,IAAI,EAAE,CAAC,CAAC,IAAI;qBACb,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;SACH;aAAM;YACL,OAAO;gBACL,QAAQ,kCACH,QAAQ,KACX,OAAO,EAAE;wBACP,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB,GACF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,IAAI,EAAE,SAAS,CAAC,QAAQ;oBACxB,IAAI,EAAE,SAAS,CAAC,gBAAgB;oBAChC,IAAI,EAAE,SAAS,CAAC,QAAQ;oBACxB,gBAAgB,EAAE,SAAS,CAAC,KAAK;oBACjC,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB;aACF,CAAC;SACH;IACH,CAAC;CACF,CAAA;AAzDY,QAAQ;IAFpB,IAAA,eAAU,GAAE;IACZ,IAAA,gBAAW,GAAE;;GACD,QAAQ,CAyDpB;AAzDY,4BAAQ;AA6DrB,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,QAAQ;IAC7C,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,YAAY,IAAS;QACnB,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;;QACrF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,MAAM,UAAU,GAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAU,CAAC,QAAQ,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,mCAAI,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEnH,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;YAC5B,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAChC;QAED,OAAO;YACL,QAAQ,kCACH,QAAQ,KACX,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,GACF;YACD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;SACrC,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,iBAAiB;IAF7B,IAAA,eAAU,GAAE;IACZ,IAAA,gBAAW,GAAE;;GACD,iBAAiB,CA+B7B;AA/BY,8CAAiB;AAmC9B,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,QAAQ;IAC5C,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,YAAY,IAAS;QACnB,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,MAAM,UAAU,GAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAU,CAAC,QAAQ,CAAC;QAClE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;YAC5B,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAChC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5D,OAAO;YACL,QAAQ,kCACH,QAAQ,KACX,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,GACF;YACD,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAY;QACjD,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9B,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;iBACtB,IAAI,CAAC,IAAA,aAAK,EAAC,OAAO,CAAC,CAAC;iBACpB,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACnC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA1CY,gBAAgB;IAF5B,IAAA,eAAU,GAAE;IACZ,IAAA,gBAAW,GAAE;;GACD,gBAAgB,CA0C5B;AA1CY,4CAAgB;AA8C7B,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,YAAY;IAC7C,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,YAAY,IAAS;QACnB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,OAAO;YACL,QAAQ,kCACH,QAAQ,KACX,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,GACF;YACD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;SACnC,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,aAAa;IAFzB,IAAA,eAAU,GAAE;IACZ,IAAA,gBAAW,GAAE;;GACD,aAAa,CAyBzB;AAzBY,sCAAa;AA4B1B,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,YAAY;IACxC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,YAAY,IAAS;QACnB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChF,IAAI,QAAQ,EAAE;YACZ,MAAM,GAAG,MAAM,CAAC;SACjB;QAED,OAAO;YACL,QAAQ,kCACH,QAAQ,KACX,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,GACF;YACD,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,QAAQ;IAFpB,IAAA,eAAU,GAAE;IACZ,IAAA,gBAAW,GAAE;;GACD,QAAQ,CA+BpB;AA/BY,4BAAQ"}
@@ -0,0 +1,12 @@
1
+ import { RouteArgs } from './RouteArgs';
2
+ import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
3
+ import * as express from 'express';
4
+ import { DateTime } from 'luxon';
5
+ export declare class FromHeader extends RouteArgs {
6
+ get SupportedType(): ParameterType;
7
+ extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
8
+ CallData: IRouteCall;
9
+ Args: any;
10
+ }>;
11
+ protected handleDate(arg: any): DateTime;
12
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FromHeader = void 0;
10
+ const RouteArgs_1 = require("./RouteArgs");
11
+ const interfaces_1 = require("../interfaces");
12
+ const di_1 = require("@spinajs/di");
13
+ const luxon_1 = require("luxon");
14
+ let FromHeader = class FromHeader extends RouteArgs_1.RouteArgs {
15
+ get SupportedType() {
16
+ return interfaces_1.ParameterType.FromHeader;
17
+ }
18
+ async extract(callData, param, req) {
19
+ let arg = param.Options && param.Options.key ? req.headers[param.Options.key] : req.headers[param.Name.toLowerCase()];
20
+ return { CallData: callData, Args: await this.tryHydrateParam(arg, param) };
21
+ }
22
+ handleDate(arg) {
23
+ return luxon_1.DateTime.fromHTTP(arg.startsWith('Date:') ? arg.substring(5).trim() : arg.trim());
24
+ }
25
+ };
26
+ FromHeader = __decorate([
27
+ (0, di_1.Injectable)()
28
+ ], FromHeader);
29
+ exports.FromHeader = FromHeader;
30
+ //# sourceMappingURL=FromHeaderArg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FromHeaderArg.js","sourceRoot":"","sources":["../../src/route-args/FromHeaderArg.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAA2E;AAE3E,oCAAyC;AAEzC,iCAAiC;AAGjC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,qBAAS;IACvC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9E,CAAC;IAES,UAAU,CAAC,GAAQ;QAC3B,OAAO,gBAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3F,CAAC;CACF,CAAA;AAbY,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAatB;AAbY,gCAAU"}
@@ -0,0 +1,10 @@
1
+ import { RouteArgs } from './RouteArgs';
2
+ import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
3
+ import * as express from 'express';
4
+ export declare class FromParams extends RouteArgs {
5
+ get SupportedType(): ParameterType;
6
+ extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
7
+ CallData: IRouteCall;
8
+ Args: any;
9
+ }>;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FromParams = void 0;
10
+ const RouteArgs_1 = require("./RouteArgs");
11
+ const interfaces_1 = require("../interfaces");
12
+ const di_1 = require("@spinajs/di");
13
+ let FromParams = class FromParams extends RouteArgs_1.RouteArgs {
14
+ get SupportedType() {
15
+ return interfaces_1.ParameterType.FromParams;
16
+ }
17
+ async extract(callData, param, req) {
18
+ return { CallData: callData, Args: await this.tryHydrateParam(req.params[param.Name], param) };
19
+ }
20
+ };
21
+ FromParams = __decorate([
22
+ (0, di_1.Injectable)()
23
+ ], FromParams);
24
+ exports.FromParams = FromParams;
25
+ //# sourceMappingURL=FromParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FromParams.js","sourceRoot":"","sources":["../../src/route-args/FromParams.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAA2E;AAE3E,oCAAyC;AAGzC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,qBAAS;IACvC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACjG,CAAC;CACF,CAAA;AARY,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAQtB;AARY,gCAAU"}
@@ -0,0 +1,10 @@
1
+ import { RouteArgs } from './RouteArgs';
2
+ import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
3
+ import * as express from 'express';
4
+ export declare class FromQuery extends RouteArgs {
5
+ get SupportedType(): ParameterType;
6
+ extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
7
+ CallData: IRouteCall;
8
+ Args: any;
9
+ }>;
10
+ }
@@ -6,22 +6,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.LimitDto = exports.LimitDtoSchema = void 0;
10
- const decorators_1 = require("../decorators");
11
- exports.LimitDtoSchema = {
12
- $schema: 'http://json-schema.org/draft-07/schema#',
13
- title: 'Limit DTO',
14
- type: 'object',
15
- properties: [{ Page: { type: 'number', minimum: 0 } }, { PerPage: { type: 'number', minimum: 1 } }],
16
- required: ['PerPage', 'Page'],
9
+ exports.FromQuery = void 0;
10
+ const RouteArgs_1 = require("./RouteArgs");
11
+ const interfaces_1 = require("../interfaces");
12
+ const di_1 = require("@spinajs/di");
13
+ let FromQuery = class FromQuery extends RouteArgs_1.RouteArgs {
14
+ get SupportedType() {
15
+ return interfaces_1.ParameterType.FromQuery;
16
+ }
17
+ async extract(callData, param, req) {
18
+ return { CallData: callData, Args: await this.tryHydrateParam(req.query[param.Name], param) };
19
+ }
17
20
  };
18
- /**
19
- * Limit dto for queries
20
- */
21
- let LimitDto = class LimitDto {
22
- };
23
- LimitDto = __decorate([
24
- decorators_1.Schema(exports.LimitDtoSchema)
25
- ], LimitDto);
26
- exports.LimitDto = LimitDto;
27
- //# sourceMappingURL=limit-dto.js.map
21
+ FromQuery = __decorate([
22
+ (0, di_1.Injectable)()
23
+ ], FromQuery);
24
+ exports.FromQuery = FromQuery;
25
+ //# sourceMappingURL=FromQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FromQuery.js","sourceRoot":"","sources":["../../src/route-args/FromQuery.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAA2E;AAE3E,oCAAyC;AAIzC,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,qBAAS;IACtC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB;QACrF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAChG,CAAC;CACF,CAAA;AARY,SAAS;IADrB,IAAA,eAAU,GAAE;GACA,SAAS,CAQrB;AARY,8BAAS"}
@@ -0,0 +1,19 @@
1
+ import { ParameterType, IRouteParameter, IRouteCall, IRoute } from './../interfaces';
2
+ import * as express from 'express';
3
+ import { DateTime } from 'luxon';
4
+ export interface IRouteArgsResult {
5
+ CallData: IRouteCall;
6
+ Args: any;
7
+ }
8
+ export interface IRouteArgs {
9
+ SupportedType: ParameterType | string;
10
+ extract(callData: IRouteCall, routeParameter: IRouteParameter, req: express.Request, res: express.Response, route?: IRoute): Promise<IRouteArgsResult>;
11
+ }
12
+ export declare abstract class RouteArgs implements IRouteArgs {
13
+ abstract get SupportedType(): ParameterType | string;
14
+ abstract extract(callData: IRouteCall, routeParameter: IRouteParameter, req: express.Request, res: express.Response, route?: IRoute): Promise<IRouteArgsResult>;
15
+ protected handleDate(arg: any): DateTime;
16
+ protected tryHydrateParam(arg: any, routeParameter: IRouteParameter): Promise<any>;
17
+ protected tryHydrateObject(arg: any, param: IRouteParameter): Promise<any[]>;
18
+ protected fromRuntimeType(param: IRouteParameter, arg: any): any;
19
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RouteArgs = void 0;
7
+ const di_1 = require("@spinajs/di");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const luxon_1 = require("luxon");
10
+ class RouteArgs {
11
+ handleDate(arg) {
12
+ const milis = Number(arg);
13
+ if (!isNaN(milis)) {
14
+ return luxon_1.DateTime.fromSeconds(milis);
15
+ }
16
+ if (lodash_1.default.isString(arg)) {
17
+ return luxon_1.DateTime.fromISO(arg);
18
+ }
19
+ return luxon_1.DateTime.invalid('no iso or unix timestamp');
20
+ }
21
+ async tryHydrateParam(arg, routeParameter) {
22
+ let result = null;
23
+ const [hydrated, hValue] = await this.tryHydrateObject(arg, routeParameter);
24
+ if (hydrated) {
25
+ result = hValue;
26
+ }
27
+ else {
28
+ result = this.fromRuntimeType(routeParameter, arg);
29
+ }
30
+ return result;
31
+ }
32
+ async tryHydrateObject(arg, param) {
33
+ if (!(0, di_1.isConstructor)(param.RuntimeType)) {
34
+ return [false, null];
35
+ }
36
+ const hydrator = Reflect.getMetadata('custom:arg_hydrator', param.RuntimeType);
37
+ if (hydrator) {
38
+ const hInstance = await di_1.DI.resolve(hydrator.hydrator, hydrator.options);
39
+ const result = await hInstance.hydrate(arg);
40
+ return [true, result];
41
+ }
42
+ return [false, null];
43
+ }
44
+ fromRuntimeType(param, arg) {
45
+ switch (param.RuntimeType.name) {
46
+ // query params are always sent as strings, even numbers,
47
+ // we must try to parse them as integers / booleans / objects
48
+ case 'String':
49
+ return arg;
50
+ case 'Number':
51
+ return Number(arg);
52
+ case 'Boolean':
53
+ return arg.toLowerCase() === 'true' ? true : false;
54
+ case 'Object':
55
+ return lodash_1.default.isString(arg) ? JSON.parse(arg) : arg;
56
+ case 'DateTime':
57
+ return this.handleDate(arg);
58
+ default:
59
+ return new param.RuntimeType(lodash_1.default.isString(arg) ? JSON.parse(arg) : arg);
60
+ }
61
+ }
62
+ }
63
+ exports.RouteArgs = RouteArgs;
64
+ //# sourceMappingURL=RouteArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteArgs.js","sourceRoot":"","sources":["../../src/route-args/RouteArgs.ts"],"names":[],"mappings":";;;;;;AAGA,oCAAgD;AAChD,oDAAuB;AACvB,iCAAiC;AAajC,MAAsB,SAAS;IAKnB,UAAU,CAAC,GAAQ;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO,gBAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnB,OAAO,gBAAQ,CAAC,OAAO,CAAC,GAAa,CAAC,CAAC;SACxC;QAED,OAAO,gBAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACtD,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,GAAQ,EAAE,cAA+B;QACvE,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC5E,IAAI,QAAQ,EAAE;YACZ,MAAM,GAAG,MAAM,CAAC;SACjB;aAAM;YACL,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;SACpD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,GAAQ,EAAE,KAAsB;QAC/D,IAAI,CAAC,IAAA,kBAAa,EAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACrC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACtB;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/E,IAAI,QAAQ,EAAE;YACZ,MAAM,SAAS,GAAG,MAAM,OAAE,CAAC,OAAO,CAAc,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE5C,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACvB;QAED,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;IAES,eAAe,CAAC,KAAsB,EAAE,GAAQ;QACxD,QAAQ,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;YAC9B,yDAAyD;YACzD,6DAA6D;YAC7D,KAAK,QAAQ;gBACX,OAAO,GAAG,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,KAAK,SAAS;gBACZ,OAAQ,GAAc,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACjE,KAAK,QAAQ;gBACX,OAAO,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACjD,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B;gBACE,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACzE;IACH,CAAC;CACF;AAjED,8BAiEC"}
@@ -0,0 +1,11 @@
1
+ export * from './ArgAsRequest';
2
+ export * from './ArgAsResponse';
3
+ export * from './ArgHydrator';
4
+ export * from './FromBody';
5
+ export * from './FromCookie';
6
+ export * from './FromDi';
7
+ export * from './FromForm';
8
+ export * from './FromHeaderArg';
9
+ export * from './FromParams';
10
+ export * from './FromQuery';
11
+ export * from './RouteArgs';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ArgAsRequest"), exports);
18
+ __exportStar(require("./ArgAsResponse"), exports);
19
+ __exportStar(require("./ArgHydrator"), exports);
20
+ __exportStar(require("./FromBody"), exports);
21
+ __exportStar(require("./FromCookie"), exports);
22
+ __exportStar(require("./FromDi"), exports);
23
+ __exportStar(require("./FromForm"), exports);
24
+ __exportStar(require("./FromHeaderArg"), exports);
25
+ __exportStar(require("./FromParams"), exports);
26
+ __exportStar(require("./FromQuery"), exports);
27
+ __exportStar(require("./RouteArgs"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/route-args/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,+CAA6B;AAC7B,2CAAyB;AACzB,6CAA2B;AAC3B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Default schema for common route parameters taken from url
3
+ */
4
+ export declare const ROUTE_ARG_SCHEMA: {
5
+ Number: {
6
+ type: string;
7
+ };
8
+ String: {
9
+ type: string;
10
+ maxLength: number;
11
+ };
12
+ Boolean: {
13
+ type: string;
14
+ };
15
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ROUTE_ARG_SCHEMA = void 0;
4
+ /**
5
+ * Default schema for common route parameters taken from url
6
+ */
7
+ exports.ROUTE_ARG_SCHEMA = {
8
+ Number: {
9
+ type: 'number',
10
+ },
11
+ String: {
12
+ type: 'string',
13
+ maxLength: 512,
14
+ },
15
+ Boolean: {
16
+ type: 'boolean',
17
+ },
18
+ };
19
+ //# sourceMappingURL=RouteArgsSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteArgsSchemas.js","sourceRoot":"","sources":["../../src/schemas/RouteArgsSchemas.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,GAAG;KACf;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;KAChB;CACF,CAAC"}
package/lib/server.d.ts CHANGED
@@ -7,6 +7,7 @@ import { RequestHandler } from 'express';
7
7
  import Express = require('express');
8
8
  export declare class HttpServer extends AsyncModule {
9
9
  protected Configuration: Configuration;
10
+ protected Container: IContainer;
10
11
  /**
11
12
  * Express app instance
12
13
  */
@@ -20,11 +21,11 @@ export declare class HttpServer extends AsyncModule {
20
21
  */
21
22
  protected Log: Log;
22
23
  constructor();
23
- resolveAsync(container: IContainer): Promise<void>;
24
+ resolveAsync(): Promise<void>;
24
25
  /**
25
26
  * Starts http server & express
26
27
  */
27
- start(): Promise<unknown>;
28
+ start(): Promise<void>;
28
29
  stop(): void;
29
30
  /**
30
31
  * Registers global middleware to express app