@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
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # `http`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const http = require('http');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
@@ -9,9 +9,9 @@ const cors = require('cors');
9
9
  const path_1 = require("path");
10
10
  const interfaces_1 = require("../interfaces");
11
11
  function dir(path) {
12
- return path_1.resolve(path_1.normalize(path_1.join(__dirname, path)));
12
+ return (0, path_1.resolve)((0, path_1.normalize)((0, path_1.join)(__dirname, path)));
13
13
  }
14
- const corsPath = path_1.resolve(path_1.normalize(path_1.join(process.cwd(), 'cors.json')));
14
+ const corsPath = (0, path_1.resolve)((0, path_1.normalize)((0, path_1.join)(process.cwd(), 'cors.json')));
15
15
  const origins = require(corsPath);
16
16
  const corsOptions = {
17
17
  origin(origin, callback) {
@@ -19,7 +19,7 @@ const corsOptions = {
19
19
  callback(null, true);
20
20
  }
21
21
  else {
22
- callback(new Error("cors not allowed"));
22
+ callback(new Error('cors not allowed'));
23
23
  }
24
24
  },
25
25
  credentials: true,
@@ -84,20 +84,20 @@ module.exports = {
84
84
  * Last resort fatal error fallback template, embedded in code
85
85
  * in case if we cannot render any static files
86
86
  */
87
- FatalTemplate: `<html>
88
- <head>
89
- <title>Oooops !</title>
90
- </head>
91
- <body>
92
- <h1>HTTP 500 - Internal Server Error</h1>
93
- <div>Looks like we're having some server issues.</div>
94
- <hr />
95
- <div>
96
- Go back to the previous page and try again. If you think something is broken, report a problem with fallowing ticket number:
97
- </div>
98
- <h3> Ticker no. {ticket}</h3>
99
- </body>
100
- </html>`,
87
+ FatalTemplate: `<html>
88
+ <head>
89
+ <title>Oooops !</title>
90
+ </head>
91
+ <body>
92
+ <h1>HTTP 500 - Internal Server Error</h1>
93
+ <div>Looks like we're having some server issues.</div>
94
+ <hr />
95
+ <div>
96
+ Go back to the previous page and try again. If you think something is broken, report a problem with fallowing ticket number:
97
+ </div>
98
+ <h3> Ticket no. {ticket}</h3>
99
+ </body>
100
+ </html>`,
101
101
  },
102
102
  };
103
103
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/config/http.ts"],"names":[],"mappings":";;AAAA,kCAAkC;AAClC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,+BAAgD;AAChD,8CAAkD;AAElD,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,cAAO,CAAC,gBAAS,CAAC,WAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,QAAQ,GAAG,cAAO,CAAC,gBAAS,CAAC,WAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,GAAG;IAClB,MAAM,CAAC,MAAW,EAAE,QAAa;QAC/B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACtE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACtB;aAAM;YACH,QAAQ,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;SAC3C;IACH,CAAC;IACD,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9B,KAAK,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,WAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACvC;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,IAAI;SACf;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,WAAW,EAAE;YACX,MAAM,EAAE;YACR,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,KAAK;aACb,CAAC;YACF,OAAO,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,IAAI;aACf,CAAC;YACF,YAAY,EAAE;YACd,WAAW,EAAE;YACb,IAAI,CAAC,WAAW,CAAC;SAClB;QAED;;WAEG;QACH,KAAK,EAAE;YACL,OAAO,EAAE,IAAI,GAAG,IAAI;YAEpB,qFAAqF;YACrF,QAAQ,EAAE,GAAG,CAAC,oBAAoB,CAAC;SACpC;QAED;;WAEG;QACH,MAAM,EAAE;YACN;gBACE;;mBAEG;gBACH,KAAK,EAAE,SAAS;gBAEhB;;mBAEG;gBACH,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC;aACxB;SACF;QAED;;WAEG;QACH,aAAa,EAAE,8BAAiB,CAAC,IAAI,GAAG,8BAAiB,CAAC,IAAI;QAE9D;;;WAGG;QACH,aAAa,EAAE;;;;;;;;;;;;;QAaX;KACL;CACF,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/config/http.ts"],"names":[],"mappings":";;AAAA,kCAAkC;AAClC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,+BAAgD;AAChD,8CAAkD;AAElD,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,GAAG;IAClB,MAAM,CAAC,MAAW,EAAE,QAAa;QAC/B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACtE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACtB;aAAM;YACL,QAAQ,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;SACzC;IACH,CAAC;IACD,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9B,KAAK,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,WAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACvC;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,IAAI;SACf;KACF;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,WAAW,EAAE;YACX,MAAM,EAAE;YACR,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,KAAK;aACb,CAAC;YACF,OAAO,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,IAAI;aACf,CAAC;YACF,YAAY,EAAE;YACd,WAAW,EAAE;YACb,IAAI,CAAC,WAAW,CAAC;SAClB;QAED;;WAEG;QACH,KAAK,EAAE;YACL,OAAO,EAAE,IAAI,GAAG,IAAI;YAEpB,qFAAqF;YACrF,QAAQ,EAAE,GAAG,CAAC,oBAAoB,CAAC;SACpC;QAED;;WAEG;QACH,MAAM,EAAE;YACN;gBACE;;mBAEG;gBACH,KAAK,EAAE,SAAS;gBAEhB;;mBAEG;gBACH,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC;aACxB;SACF;QAED;;WAEG;QACH,aAAa,EAAE,8BAAiB,CAAC,IAAI,GAAG,8BAAiB,CAAC,IAAI;QAE9D;;;WAGG;QACH,aAAa,EAAE;;;;;;;;;;;;;4BAaS;KACzB;CACF,CAAC"}
@@ -4,14 +4,16 @@ import * as express from 'express';
4
4
  import { ClassInfo } from '@spinajs/reflection';
5
5
  import { HttpServer } from './server';
6
6
  import { Log } from '@spinajs/log';
7
+ import { DataValidator } from '@spinajs/validation';
7
8
  export declare abstract class BaseController extends AsyncModule implements IController {
8
9
  /**
9
10
  * Array index getter
10
11
  */
11
12
  [action: string]: any;
12
13
  protected _router: express.Router;
13
- protected Container: IContainer;
14
- protected Log: Log;
14
+ protected _container: IContainer;
15
+ protected _validator: DataValidator;
16
+ protected _log: Log;
15
17
  /**
16
18
  * Express router with middleware stack
17
19
  */
@@ -26,7 +28,7 @@ export declare abstract class BaseController extends AsyncModule implements ICon
26
28
  * It can be defined via `@BasePath` decorator, defaults to controller name without `Controller` part.
27
29
  */
28
30
  get BasePath(): string;
29
- resolveAsync(container: IContainer): Promise<void>;
31
+ resolveAsync(): Promise<void>;
30
32
  }
31
33
  export declare class Controllers extends AsyncModule {
32
34
  /**
@@ -36,5 +38,5 @@ export declare class Controllers extends AsyncModule {
36
38
  protected Log: Log;
37
39
  protected Container: IContainer;
38
40
  protected Server: HttpServer;
39
- resolveAsync(container: IContainer): Promise<void>;
41
+ resolveAsync(): Promise<void>;
40
42
  }
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -20,7 +24,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
20
24
  var __importStar = (this && this.__importStar) || function (mod) {
21
25
  if (mod && mod.__esModule) return mod;
22
26
  var result = {};
23
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
28
  __setModuleDefault(result, mod);
25
29
  return result;
26
30
  };
@@ -37,11 +41,7 @@ const exceptions_1 = require("@spinajs/exceptions");
37
41
  const reflection_1 = require("@spinajs/reflection");
38
42
  const server_1 = require("./server");
39
43
  const log_1 = require("@spinajs/log");
40
- const formidable_1 = require("formidable");
41
- const cs = __importStar(require("cookie-signature"));
42
- const configuration_1 = require("@spinajs/configuration");
43
- const schemas_1 = require("./schemas");
44
- const lodash_1 = require("lodash");
44
+ const validation_1 = require("@spinajs/validation");
45
45
  class BaseController extends di_1.AsyncModule {
46
46
  /**
47
47
  * Express router with middleware stack
@@ -63,13 +63,11 @@ class BaseController extends di_1.AsyncModule {
63
63
  get BasePath() {
64
64
  return this.Descriptor.BasePath ? this.Descriptor.BasePath : this.constructor.name.toLowerCase();
65
65
  }
66
- async resolveAsync(container) {
66
+ async resolveAsync() {
67
67
  const self = this;
68
- this.Container = container;
69
68
  this._router = express.Router();
70
69
  for (const [, route] of this.Descriptor.Routes) {
71
70
  const handlers = [];
72
- const action = this[route.Method];
73
71
  let path = '';
74
72
  if (route.Path) {
75
73
  if (route.Path === '/') {
@@ -83,18 +81,19 @@ class BaseController extends di_1.AsyncModule {
83
81
  path = `/${this.BasePath}/${route.Method}`;
84
82
  }
85
83
  const middlewares = await Promise.all(this.Descriptor.Middlewares.concat(route.Middlewares || []).map((m) => {
86
- return self.Container.resolve(m.Type, m.Options);
84
+ return self._container.resolve(m.Type, m.Options);
87
85
  }));
88
86
  const policies = await Promise.all(this.Descriptor.Policies.concat(route.Policies || []).map((m) => {
89
- return self.Container.resolve(m.Type, m.Options);
87
+ return self._container.resolve(m.Type, m.Options);
90
88
  }));
91
- this.Log.trace(`Registering route ${route.Method}:${path}`);
92
- handlers.push(...policies.filter(p => p.isEnabled(route, this)).map(p => _invokePolicyAction(p, p.execute.bind(p), route)));
93
- handlers.push(...middlewares.filter(m => m.isEnabled(route, this)).map(m => _invokeAction(m, m.onBeforeAction.bind(m))));
89
+ const enabledMiddlewares = middlewares.filter((m) => m.isEnabled(route, this));
90
+ this._log.trace(`Registering route ${route.Type.toUpperCase()} ${this.constructor.name}::${route.Method} at ${path}`);
91
+ handlers.push(...policies.filter((p) => p.isEnabled(route, this)).map((p) => _invokePolicyAction(p, p.execute.bind(p), route)));
92
+ handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onBeforeAction.bind(m))));
94
93
  const acionWrapper = async (req, res, next) => {
95
94
  try {
96
95
  const args = (await _extractRouteArgs(route, req, res)).concat([req, res, next]);
97
- res.locals.response = await action.call(this, ...args);
96
+ res.locals.response = await this[route.Method].call(this, ...args);
98
97
  next();
99
98
  }
100
99
  catch (err) {
@@ -106,7 +105,7 @@ class BaseController extends di_1.AsyncModule {
106
105
  writable: true,
107
106
  });
108
107
  handlers.push(acionWrapper);
109
- handlers.push(...middlewares.filter(m => m.isEnabled(route, this)).map(m => _invokeAction(m, m.onAfterAction.bind(m))));
108
+ handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onAfterAction.bind(m))));
110
109
  // register to express router
111
110
  this._router[route.InternalType](path, handlers);
112
111
  }
@@ -131,7 +130,7 @@ class BaseController extends di_1.AsyncModule {
131
130
  action(req, route, self)
132
131
  .then(next)
133
132
  .catch((err) => {
134
- self.Log.trace(`route ${self.constructor.name}:${route.Method} ${self.BasePath}${route.Path} error ${err}, policy: ${source.constructor.name}`);
133
+ self._log.trace(`route ${self.constructor.name}:${route.Method} ${self.BasePath}${route.Path} error ${err}, policy: ${source.constructor.name}`);
135
134
  next(err);
136
135
  });
137
136
  };
@@ -143,185 +142,51 @@ class BaseController extends di_1.AsyncModule {
143
142
  }
144
143
  async function _extractRouteArgs(route, req, res) {
145
144
  const args = new Array(route.Parameters.size);
146
- let multipartsCache = null;
145
+ let callData = {
146
+ Payload: {},
147
+ };
148
+ const argsCache = new Map();
149
+ let formCache = null;
147
150
  for (const [, param] of route.Parameters) {
148
- let source = null;
149
- switch (param.Type) {
150
- case interfaces_1.ParameterType.FromBody:
151
- source = req.body;
152
- break;
153
- case interfaces_1.ParameterType.FromParams:
154
- source = req.params;
155
- break;
156
- case interfaces_1.ParameterType.FromQuery:
157
- source = req.query;
158
- break;
159
- case interfaces_1.ParameterType.FromCookie:
160
- source = req.cookies;
161
- break;
162
- case interfaces_1.ParameterType.FromModel:
163
- source = await _extractModel(param.Options, param.RuntimeType, req);
164
- break;
165
- case interfaces_1.ParameterType.FromDi:
166
- source = await _inject(param.RuntimeType, param.Options);
167
- break;
168
- case interfaces_1.ParameterType.FormField:
169
- case interfaces_1.ParameterType.FromFile:
170
- case interfaces_1.ParameterType.FromForm:
171
- source = await _extractMultipart(param.Options, req, param.Type);
172
- break;
173
- case interfaces_1.ParameterType.Res:
174
- args[param.Index] = res;
175
- continue;
176
- case interfaces_1.ParameterType.Req:
177
- args[param.Index] = req;
178
- continue;
179
- }
180
- // if parameter have name defined load it up
181
- if (param.Name) {
182
- // form fields goes to one
183
- if (param.Type === interfaces_1.ParameterType.FromCookie) {
184
- const secret = di_1.DI.get(configuration_1.Configuration).get('http.cookie.secret');
185
- const val = source[param.Name];
186
- if (!val) {
187
- args[param.Index] = null;
188
- }
189
- else {
190
- args[param.Index] = cs.unsign(val, secret);
191
- }
192
- }
193
- else if (param.Type === interfaces_1.ParameterType.FromFile) {
194
- // map from formidable to our object
195
- // of type IUploadedFile
196
- const sourceFile = source[param.Name];
197
- args[param.Index] = {
198
- Size: sourceFile.size,
199
- Path: sourceFile.path,
200
- Name: sourceFile.name,
201
- Type: sourceFile.type,
202
- LastModifiedDate: sourceFile.lastModifiedDate,
203
- Hash: sourceFile.hash
204
- };
205
- }
206
- else if (param.Type === interfaces_1.ParameterType.FromForm || param.Type === interfaces_1.ParameterType.FromModel) {
207
- args[param.Index] = source;
208
- }
209
- else {
210
- args[param.Index] = source[param.Name];
151
+ if (!argsCache.has(param.Type)) {
152
+ const fArg = await di_1.DI.resolve(param.Type, formCache ? [formCache.Data] : []);
153
+ argsCache.set(param.Type, fArg);
154
+ if (!formCache && (param.Type === interfaces_1.ParameterType.FormField || param.Type === interfaces_1.ParameterType.FromCSV || param.Type === interfaces_1.ParameterType.FromJSONFile || param.Type === interfaces_1.ParameterType.FromForm || param.Type === interfaces_1.ParameterType.FromFile)) {
155
+ formCache = fArg;
211
156
  }
212
157
  }
213
- else {
214
- // no parameter name, all query params goes to one val
215
- args[param.Index] = source;
216
- }
217
- const dtoSchema = Reflect.getMetadata(decorators_1.SCHEMA_SYMBOL, param.RuntimeType);
218
- let schema = dtoSchema !== null && dtoSchema !== void 0 ? dtoSchema : param.Schema;
219
- // try gues schema if one of basic type
220
- if (!schema) {
221
- switch (param.RuntimeType.name) {
222
- case "Number":
223
- schema = {
224
- type: "number"
225
- };
226
- break;
227
- case "String":
228
- schema = {
229
- type: "string",
230
- maxLength: 512
231
- };
232
- break;
233
- case "Boolean":
234
- schema = {
235
- type: "boolean"
236
- };
237
- break;
238
- }
239
- }
240
- // query params are always sent as strings, even numbers,
241
- // we must try to parse them as integers / booleans first
242
- if (param.RuntimeType.name === 'Number') {
243
- args[param.Index] = Number(args[param.Index]);
244
- }
245
- if (param.RuntimeType.name === 'Boolean' && typeof args[param.Index] === "string") {
246
- args[param.Index] = args[param.Index] === "true" ? true : false;
247
- }
248
- if (schema) {
249
- const validator = await self.Container.resolve(schemas_1.DataValidator);
250
- if (!validator) {
251
- throw new exceptions_1.UnexpectedServerError('validation service is not avaible');
252
- }
253
- const result = validator.validate(schema, args[param.Index]);
254
- if (!result.valid) {
255
- if (schema.required || schema.required === undefined) {
256
- throw new exceptions_1.ValidationFailed(`parameter validation error ${param.Name}`, {
257
- param: param.Name,
258
- errors: result.errors,
259
- });
260
- }
261
- }
158
+ const extractor = argsCache.get(param.Type);
159
+ if (!extractor) {
160
+ throw new exceptions_1.UnexpectedServerError('invalid route parameter type for param: ' + param.Name);
262
161
  }
162
+ const { Args } = await extractor.extract(callData, param, req, res, route);
163
+ param.Schema ? self._validator.validate(param.Schema, Args) : self._validator.validate(Args);
164
+ args[param.Index] = Args;
263
165
  }
264
166
  return args;
265
- async function _inject(type, options) {
266
- return await self.Container.resolve(type, options);
267
- }
268
- async function _extractModel(options, type, req) {
269
- var _a, _b, _c;
270
- if (type.find === undefined) {
271
- throw new exceptions_1.NotSupported(`${type.name} does not support method find, make sure its model type`);
272
- }
273
- const key = (_a = options.KeyName) !== null && _a !== void 0 ? _a : 'Id';
274
- const pkVal = (_c = (_b = req.params[key]) !== null && _b !== void 0 ? _b : req.query[key]) !== null && _c !== void 0 ? _c : req.body[key];
275
- if (!pkVal) {
276
- throw new exceptions_1.BadRequest(`key value invalid`);
277
- }
278
- return await type.find.call(null, [pkVal]);
279
- }
280
- async function _extractMultipart(options, req, type) {
281
- if (!multipartsCache) {
282
- multipartsCache = await _parse();
283
- }
284
- switch (type) {
285
- case interfaces_1.ParameterType.FromFile:
286
- return multipartsCache.files;
287
- case interfaces_1.ParameterType.FromForm:
288
- case interfaces_1.ParameterType.FormField:
289
- return multipartsCache.fields;
290
- }
291
- async function _parse() {
292
- const formOptions = options;
293
- if (options && options.uploadDir && lodash_1.isFunction(options.uploadDir)) {
294
- const cfg = di_1.DI.resolve(configuration_1.Configuration);
295
- formOptions.uploadDir = await options.uploadDir(cfg);
296
- }
297
- const form = new formidable_1.IncomingForm(formOptions);
298
- return new Promise((res, rej) => {
299
- form.parse(req, (err, fields, files) => {
300
- if (err) {
301
- rej(err);
302
- return;
303
- }
304
- res({ fields, files });
305
- });
306
- });
307
- }
308
- }
309
167
  }
310
168
  }
311
169
  }
312
170
  __decorate([
313
- log_1.Logger({ module: 'BaseController' }),
171
+ (0, di_1.Autoinject)(di_1.Container),
314
172
  __metadata("design:type", Object)
315
- ], BaseController.prototype, "Log", void 0);
173
+ ], BaseController.prototype, "_container", void 0);
174
+ __decorate([
175
+ (0, di_1.Autoinject)(),
176
+ __metadata("design:type", validation_1.DataValidator)
177
+ ], BaseController.prototype, "_validator", void 0);
178
+ __decorate([
179
+ (0, log_1.Logger)('http'),
180
+ __metadata("design:type", log_1.Log)
181
+ ], BaseController.prototype, "_log", void 0);
316
182
  exports.BaseController = BaseController;
317
183
  class Controllers extends di_1.AsyncModule {
318
- async resolveAsync(container) {
319
- this.Container = container;
184
+ async resolveAsync() {
320
185
  /**
321
186
  * globally register controller validator, we use ajv lib
322
187
  * we use factory func register as singlegon
323
188
  */
324
- di_1.DI.register(schemas_1.DataValidator).asSelf().singleInstance();
189
+ di_1.DI.register(validation_1.DataValidator).asSelf().singleInstance();
325
190
  // extract parameters info from controllers source code & register in http server
326
191
  for (const controller of await this.Controllers) {
327
192
  this.Log.trace(`Loading controller: ${controller.name}`);
@@ -346,15 +211,19 @@ class Controllers extends di_1.AsyncModule {
346
211
  }
347
212
  }
348
213
  __decorate([
349
- reflection_1.ResolveFromFiles('/**/!(*.d).{ts,js}', 'system.dirs.controllers'),
214
+ (0, reflection_1.ResolveFromFiles)('/**/!(*.d).{ts,js}', 'system.dirs.controllers'),
350
215
  __metadata("design:type", Promise)
351
216
  ], Controllers.prototype, "Controllers", void 0);
352
217
  __decorate([
353
- log_1.Logger({ module: 'Controllers' }),
354
- __metadata("design:type", Object)
218
+ (0, log_1.Logger)('http'),
219
+ __metadata("design:type", log_1.Log)
355
220
  ], Controllers.prototype, "Log", void 0);
356
221
  __decorate([
357
- di_1.Autoinject(),
222
+ (0, di_1.Autoinject)(di_1.Container),
223
+ __metadata("design:type", Object)
224
+ ], Controllers.prototype, "Container", void 0);
225
+ __decorate([
226
+ (0, di_1.Autoinject)(),
358
227
  __metadata("design:type", server_1.HttpServer)
359
228
  ], Controllers.prototype, "Server", void 0);
360
229
  exports.Controllers = Controllers;
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"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"}
@@ -1,62 +1,94 @@
1
- import { BasePolicy, BaseMiddleware, IUploadOptions } from './interfaces';
1
+ import { Constructor } from '@spinajs/di';
2
+ import { ParameterType, BasePolicy, BaseMiddleware, IUploadOptions, UuidVersion, IFormOptions } from './interfaces';
3
+ import { ArgHydrator } from './route-args/ArgHydrator';
2
4
  export declare const CONTROLLED_DESCRIPTOR_SYMBOL: unique symbol;
3
- export declare const SCHEMA_SYMBOL: unique symbol;
5
+ /**
6
+ * Tells controller how to fill up incoming parameters in controller actions
7
+ *
8
+ * @param hydrator - hydrator class that will fill up incoming argument
9
+ * @param options - additional options passed to hydrator
10
+ */
11
+ export declare function Hydrator(hydrator: Constructor<ArgHydrator>, ...options: any[]): (target: any) => void;
4
12
  export declare function Policy(policy: Constructor<BasePolicy>, ...options: any[]): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
5
13
  export declare function Middleware(policy: Constructor<BaseMiddleware>, ...options: any[]): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
6
14
  export declare function BasePath(path: string): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
7
- export declare function Inject(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
15
+ export declare function FromDI(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
8
16
  /**
9
17
  * Route parameter taken from query string eg. route?id=1
10
18
  *
11
- * @param schema parameter json schema for optional validation
19
+ * @param schema - parameter json schema for optional validation
12
20
  */
13
21
  export declare function Query(schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
14
22
  /**
15
23
  * Route parameter taken from message body (POST)
16
24
  *
17
- * @param schema parameter json schema for optional validation
25
+ * @param schema - parameter json schema for optional validation
18
26
  */
19
27
  export declare function Body(schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
20
28
  /**
21
29
  * Route parameter taken from url parameters eg. route/:id
22
30
  *
23
- * @param schema parameter json schema for optional validation
31
+ * @param schema - parameter json schema for optional validation
24
32
  */
25
33
  export declare function Param(schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
26
34
  export declare function FromModel(schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
35
+ /**
36
+ * Gets parameter from request header. If not keyname is provided
37
+ * variable name is used as header key name
38
+ *
39
+ * @param keyName - header key name ( optional )
40
+ * @param schema - schema for validation ( optional )
41
+ * @returns
42
+ */
43
+ export declare function Header(keyName?: string, schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
27
44
  /**
28
45
  *
29
46
  * Parameter as file
30
47
  *
31
- * @param options upload options
48
+ * @param options - upload options
49
+ */
50
+ export declare function File(options?: IUploadOptions): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
51
+ /**
52
+ * Data taken from cvs file that is uploaded. Actions receives parsed data
53
+ *
54
+ * @param options - upload options
55
+ * @param cvsParseOptions - cvs parser options
56
+ * @param schema - optional schema for data validation
32
57
  */
33
- export declare function Upload(options?: IUploadOptions): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
58
+ export declare function CsvFile(options?: IUploadOptions, cvsParseOptions?: any, schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
59
+ /**
60
+ * Data taken from cvs file that is uploaded. Actions receives parsed data
61
+ *
62
+ * @param options - upload options
63
+ * @param schema - optional schema for data validation
64
+ */
65
+ export declare function JsonFile(options?: IUploadOptions, schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
34
66
  /**
35
67
  *
36
68
  * Parameter taken from form data (multipart-form)
37
69
  *
38
- * @param options upload options
70
+ * @param options - upload options
39
71
  */
40
- export declare function Form(schema?: any): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
72
+ export declare function Form(schema?: any, options?: IFormOptions): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
41
73
  /**
42
74
  *
43
75
  * Parameter taken from form data (multipart-form)
44
76
  *
45
- * @param options upload options
77
+ * @param options - upload options
46
78
  */
47
- export declare function FormField(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
79
+ export declare function FormField(schema?: any, options?: IFormOptions): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
48
80
  /**
49
81
  *
50
82
  * Shortcut for parameter as autoincrement primary key ( number greater than 0)
51
83
  *
52
84
  */
53
- export declare function IncPkey(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
85
+ export declare function PKey(type?: ParameterType): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
54
86
  /**
55
87
  *
56
88
  * Shortcut for parameter as uuid primary key ( string with 32 length )
57
89
  *
58
90
  */
59
- export declare function UuidPkey(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
91
+ export declare function Uuid(type?: ParameterType, version?: UuidVersion): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
60
92
  /**
61
93
  *
62
94
  * Express request
@@ -73,14 +105,14 @@ export declare function Res(): (target: any, propertyKey?: string | symbol, inde
73
105
  *
74
106
  * Parameter taken from model
75
107
  *
76
- * @param options upload options
108
+ * @param options - upload options
77
109
  */
78
110
  export declare function Model(model: Constructor<any>): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
79
111
  /**
80
112
  *
81
- * Parameter taken from model
113
+ * Parameter taken from coockie
82
114
  *
83
- * @param options upload options
115
+ * @param options - upload options
84
116
  */
85
117
  export declare function Cookie(): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
86
118
  /**
@@ -115,10 +147,3 @@ export declare function Get(path?: string): (target: any, propertyKey?: string |
115
147
  * @param path - url path to method eg. /foo/bar
116
148
  */
117
149
  export declare function Post(path?: string): (target: any, propertyKey?: string | symbol, indexOrDescriptor?: number | PropertyDescriptor) => void;
118
- /**
119
- *
120
- * Add schema for object eg. model or dto
121
- *
122
- * @param schema schema for object
123
- */
124
- export declare function Schema(schema: any): (target: any) => void;