@breautek/storm 9.0.0 → 9.0.2

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 (101) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/docs/assets/hierarchy.js +1 -1
  3. package/docs/assets/navigation.js +1 -1
  4. package/docs/assets/search.js +1 -1
  5. package/docs/classes/Application.html +17 -17
  6. package/docs/classes/ConfigLoader.html +3 -3
  7. package/docs/classes/Database.html +2 -2
  8. package/docs/classes/DatabaseCastObject.html +2 -2
  9. package/docs/classes/DatabaseConnection.html +21 -21
  10. package/docs/classes/DatabaseQueryError.html +6 -6
  11. package/docs/classes/DeadLockError.html +6 -6
  12. package/docs/classes/DiskSpaceError.html +5 -5
  13. package/docs/classes/DropTemporaryTableQuery.html +7 -7
  14. package/docs/classes/DuplicateEntryError.html +5 -5
  15. package/docs/classes/EntityNotFoundError.html +5 -5
  16. package/docs/classes/ExpiredTokenError.html +5 -5
  17. package/docs/classes/Handler.html +2 -2
  18. package/docs/classes/InternalError.html +5 -5
  19. package/docs/classes/InvalidCredentialsError.html +5 -5
  20. package/docs/classes/InvalidValueError.html +5 -5
  21. package/docs/classes/LineString.html +2 -2
  22. package/docs/classes/LockWaitTimeoutError.html +6 -6
  23. package/docs/classes/ManagedDatabaseConnection.html +5 -5
  24. package/docs/classes/Middleware.html +2 -2
  25. package/docs/classes/MissingConfigError.html +5 -5
  26. package/docs/classes/MissingParameterError.html +5 -5
  27. package/docs/classes/MySQLConnection.html +25 -25
  28. package/docs/classes/MySQLDatabase.html +2 -2
  29. package/docs/classes/NotImplementedError.html +5 -5
  30. package/docs/classes/Point.html +2 -2
  31. package/docs/classes/Polygon.html +2 -2
  32. package/docs/classes/Query.html +7 -7
  33. package/docs/classes/RawError.html +5 -5
  34. package/docs/classes/RawQuery.html +7 -7
  35. package/docs/classes/Request.html +2 -2
  36. package/docs/classes/Response.html +2 -2
  37. package/docs/classes/ResponseData.html +2 -2
  38. package/docs/classes/ServiceProvider.html +2 -2
  39. package/docs/classes/ServiceResponse.html +2 -2
  40. package/docs/classes/SetSessionVariableQuery.html +7 -7
  41. package/docs/classes/StormError.html +5 -5
  42. package/docs/classes/TemporaryTableQuery.html +7 -7
  43. package/docs/classes/TimeoutError.html +5 -5
  44. package/docs/classes/Token.html +2 -2
  45. package/docs/classes/TokenManager.html +2 -2
  46. package/docs/classes/Transaction.html +2 -2
  47. package/docs/classes/UnauthorizedAccessError.html +5 -5
  48. package/docs/enums/ErrorCode.html +2 -2
  49. package/docs/enums/ExitCode.html +2 -2
  50. package/docs/enums/HTTPMethod.html +2 -2
  51. package/docs/enums/IsolationLevel.html +2 -2
  52. package/docs/enums/JWTError.html +2 -2
  53. package/docs/enums/StatusCode.html +2 -2
  54. package/docs/enums/TransactionAccessLevel.html +2 -2
  55. package/docs/functions/getInstance.html +1 -1
  56. package/docs/hierarchy.html +1 -1
  57. package/docs/index.html +1 -1
  58. package/docs/interfaces/IAdditionalErrorDetails.html +1 -1
  59. package/docs/interfaces/ICloudwatchConfig.html +2 -2
  60. package/docs/interfaces/ICloudwatchCredentials.html +2 -2
  61. package/docs/interfaces/ICloudwatchStreamConfig.html +2 -2
  62. package/docs/interfaces/IConfig.html +2 -2
  63. package/docs/interfaces/IDatabaseConfig.html +2 -2
  64. package/docs/interfaces/IDatabaseConnection.html +5 -5
  65. package/docs/interfaces/IDatabasePosition.html +2 -2
  66. package/docs/interfaces/IErrorResponse.html +2 -2
  67. package/docs/interfaces/IFormData.html +2 -2
  68. package/docs/interfaces/IInsertQueryResult.html +2 -2
  69. package/docs/interfaces/IJWTVerifyOptions.html +2 -2
  70. package/docs/interfaces/IOKPacket.html +2 -2
  71. package/docs/interfaces/IParameterMap.html +1 -1
  72. package/docs/interfaces/IQueryable.html +2 -2
  73. package/docs/interfaces/IRequestResponse.html +2 -2
  74. package/docs/interfaces/ISetSessionVariableQueryInput.html +2 -2
  75. package/docs/interfaces/IStormCLIArgs.html +2 -2
  76. package/docs/interfaces/ITemporaryTableQueryInput.html +2 -2
  77. package/docs/interfaces/IUpdateQueryResult.html +2 -2
  78. package/docs/interfaces/formidable.FileJSON.html +1 -1
  79. package/docs/interfaces/formidable.Part.html +1 -1
  80. package/docs/types/IDeleteQueryResult.html +1 -1
  81. package/docs/types/IStoredProcedureResult.html +1 -1
  82. package/docs/types/TCoordinate.html +1 -1
  83. package/docs/types/TSerializableResponse.html +11 -0
  84. package/docs/types/TSupportedResponsePrimitives.html +1 -0
  85. package/docs/types/TSupportedResponseTypes.html +1 -0
  86. package/lib/Handler.d.ts +3 -3
  87. package/lib/Handler.js.map +1 -1
  88. package/lib/IRequestResponse.d.ts +2 -2
  89. package/lib/Middleware.d.ts +4 -4
  90. package/lib/Middleware.js.map +1 -1
  91. package/lib/Response.d.ts +30 -6
  92. package/lib/Response.js +0 -2
  93. package/lib/Response.js.map +1 -1
  94. package/lib/api.d.ts +1 -1
  95. package/lib/api.js.map +1 -1
  96. package/package.json +1 -1
  97. package/src/Handler.ts +17 -17
  98. package/src/IRequestResponse.ts +2 -2
  99. package/src/Middleware.ts +4 -4
  100. package/src/Response.ts +44 -16
  101. package/src/api.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  import { Request } from './Request';
2
- import { Response, SendableData } from './Response';
3
- export interface IRequestResponse<TRequest = any, TResponse extends SendableData = SendableData> {
2
+ import { Response, TSupportedResponseTypes } from './Response';
3
+ export interface IRequestResponse<TRequest = any, TResponse extends TSupportedResponseTypes = TSupportedResponseTypes> {
4
4
  request: Request<TRequest>;
5
5
  response: Response<TResponse>;
6
6
  }
@@ -1,14 +1,14 @@
1
1
  import { Request } from './Request';
2
- import { Response } from './Response';
2
+ import { Response, TSupportedResponseTypes } from './Response';
3
3
  import { IRequestResponse } from './IRequestResponse';
4
4
  import { Application } from './Application';
5
5
  /**
6
6
  * @deprecated
7
7
  */
8
- export declare abstract class Middleware<TApplication extends Application = Application> {
8
+ export declare abstract class Middleware<TApplication extends Application = Application, TResponse extends TSupportedResponseTypes = TSupportedResponseTypes> {
9
9
  private $app;
10
10
  constructor(app: TApplication);
11
11
  getApplication(): TApplication;
12
- protected abstract _execute(request: Request, response: Response): Promise<IRequestResponse>;
13
- execute(request: Request, response: Response): Promise<IRequestResponse>;
12
+ protected abstract _execute(request: Request, response: Response<TResponse>): Promise<IRequestResponse>;
13
+ execute(request: Request, response: Response<TResponse>): Promise<IRequestResponse>;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Middleware.js","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAOF;;GAEG;AACH,MAAsB,UAAU;IAG5B,YAAmB,GAAiB;QAChC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAEM,cAAc;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAIM,OAAO,CAAC,OAAgB,EAAE,QAAkB;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;CACJ;AAhBD,gCAgBC"}
1
+ {"version":3,"file":"Middleware.js","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAOF;;GAEG;AACH,MAAsB,UAAU;IAG5B,YAAmB,GAAiB;QAChC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAEM,cAAc;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAIM,OAAO,CAAC,OAAgB,EAAE,QAA6B;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;CACJ;AAhBD,gCAgBC"}
package/lib/Response.d.ts CHANGED
@@ -1,28 +1,52 @@
1
1
  import { StatusCode } from './StatusCode';
2
2
  import { ResponseData } from './ResponseData';
3
- import { IErrorResponse } from './StormError';
3
+ import { StormError, IErrorResponse } from './StormError';
4
4
  import * as express from 'express';
5
5
  import { Stream } from 'stream';
6
6
  import { Application } from './Application';
7
- export type SendableData = ResponseData<SendableData> | Error | IErrorResponse | Buffer | string | number | void | ReadableStream | Stream.Readable;
7
+ export type TSupportedResponsePrimitives = number | boolean | string | Date | IErrorResponse | void | TSupportedResponsePrimitives[] | {
8
+ [key: string]: TSupportedResponsePrimitives;
9
+ };
10
+ /**
11
+ * Utility type wrap, useful if you have a concrete interface of TSupportedResponsePrimitives properties.
12
+ * Use this to declare that your interface is Response Serializable.
13
+ *
14
+ * e.g.
15
+ *
16
+ * ```typescript
17
+ * interface MyInterface {...}
18
+ * type TMyInterface = FuseSerializable<MyInterface>;
19
+ * ```
20
+ *
21
+ * OR
22
+ *
23
+ * ```typescript
24
+ * type MyInterface = TSerializableResponse<{...}>;
25
+ * ```
26
+ *
27
+ */
28
+ export type TSerializableResponse<T> = {
29
+ [k in keyof T]: TSupportedResponsePrimitives;
30
+ };
31
+ export type TSupportedResponseTypes = TSupportedResponsePrimitives | Error | StormError | Buffer | ReadableStream | Stream.Readable;
8
32
  export interface IHeaderKeyValuePair {
9
33
  [key: string]: string;
10
34
  }
11
- export declare class Response<TResponse extends SendableData = SendableData, TErrorResponse extends SendableData = SendableData> {
35
+ export declare class Response<TResponse extends TSupportedResponseTypes> {
12
36
  private $app;
13
37
  private $response;
14
38
  private $created;
15
39
  private $requestURL;
16
40
  constructor(app: Application, response: express.Response, requestURL: string);
17
- setStatus(status: StatusCode): Response<TResponse, TErrorResponse>;
41
+ setStatus(status: StatusCode): Response<TResponse>;
18
42
  getStatus(): StatusCode;
19
43
  redirect(url: string): void;
20
44
  private $send;
21
- send(data?: SendableData): void;
45
+ send(data?: TResponse | ResponseData<TResponse> | ResponseData<StormError> | StormError | IErrorResponse): void;
22
46
  pipe(stream: NodeJS.ReadableStream): void;
23
47
  success(data?: TResponse): void;
24
48
  setHeader(key: string, value: string): void;
25
49
  setHeaders(keyValuePair: IHeaderKeyValuePair): void;
26
50
  isHeadersSent(): boolean;
27
- error(error?: TErrorResponse | ResponseData<TErrorResponse>): void;
51
+ error(error?: StormError | IErrorResponse | ResponseData<StormError> | unknown): void;
28
52
  }
package/lib/Response.js CHANGED
@@ -113,8 +113,6 @@ class Response {
113
113
  for (let header of headers) {
114
114
  this.setHeader(header[0], header[1]);
115
115
  }
116
- // If it was not ResponseData<TResponse> then
117
- // the method signature should have caught it
118
116
  this.send(error);
119
117
  }
120
118
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"Response.js","sourceRoot":"","sources":["../src/Response.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,6CAAwC;AACxC,iDAA4C;AAC5C,6CAAwD;AAExD,mDAAgD;AAChD,mCAAgC;AAGhC,MAAM,GAAG,GAAW,UAAU,CAAC;AAkB/B,MAAa,QAAQ;IAMjB,YAAmB,GAAgB,EAAE,QAA0B,EAAE,UAAkB;QAC/E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAEM,SAAS,CAAC,MAAkB;QAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACrC,CAAC;IAEM,QAAQ,CAAC,GAAW;QACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,IAAmB,EAAE,cAA2B;QAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,uBAAU,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;aACI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,kCAAkC;YAClC,8CAA8C;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC;aACI,IAAI,IAAI,YAAY,MAAM,IAAI,CAAE,QAAQ,EAAE,SAAS,CAAE,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aACI,IAAI,IAAI,YAAY,eAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aACI,IAAI,IAAI,YAAY,2BAAY,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAClC,OAAO;YACX,CAAC;YAED,IAAI,OAAO,GAAwB,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;aACI,IAAI,IAAI,YAAY,uBAAU,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvF,CAAC;aACI,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,gGAAgG;IACzF,IAAI,CAAC,IAAmB;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE,kBAAkB,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtJ,CAAC;IAEM,IAAI,CAAC,MAA6B;QACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAEM,OAAO,CAAC,IAAgB;QAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,uBAAU,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;aACI,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,uBAAU,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEM,SAAS,CAAC,GAAW,EAAE,KAAa;QACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,YAAiC;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,KAAqD;QAC9D,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,YAAY,uBAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBACI,IAAI,KAAK,YAAY,2BAAY,EAAE,CAAC;gBACrC,IAAI,OAAO,GAAwB,KAAK,CAAC,UAAU,EAAE,CAAC;gBACtD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,6CAA6C;gBAC7C,6CAA6C;gBAC7C,IAAI,CAAC,IAAI,CAAE,KAAmC,CAAC,CAAC;YACpD,CAAC;iBACI,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;aACI,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;CACJ;AA3HD,4BA2HC"}
1
+ {"version":3,"file":"Response.js","sourceRoot":"","sources":["../src/Response.ts"],"names":[],"mappings":"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"}
package/lib/api.d.ts CHANGED
@@ -41,7 +41,7 @@ export { LockWaitTimeoutError } from './LockWaitTimeoutError';
41
41
  export { StatusCode } from './StatusCode';
42
42
  export { Middleware } from './Middleware';
43
43
  export { Request, IParameterMap } from './Request';
44
- export { Response } from './Response';
44
+ export { Response, TSerializableResponse, TSupportedResponseTypes, TSupportedResponsePrimitives } from './Response';
45
45
  export { ResponseData } from './ResponseData';
46
46
  export { Handler } from './Handler';
47
47
  export { ServiceProvider } from './ServiceProvider';
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAGnB,mEAAgE;AAAxD,gIAAA,sBAAsB,OAAA;AAE9B,SAAS;AACT,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AAId,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,iEAA8D;AAAtD,8HAAA,qBAAqB,OAAA;AAC7B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAE5B,OAAO;AACP,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAiD;AAAzC,kGAAA,OAAO,OAAA;AACf,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AACf,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AAkBvB,QAAQ;AACR,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,QAAQ;AACR,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AAEf,cAAc;AACd,+DAAyC;AACjC,gCAAU"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAGnB,mEAAgE;AAAxD,gIAAA,sBAAsB,OAAA;AAE9B,SAAS;AACT,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AAId,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,iEAA8D;AAAtD,8HAAA,qBAAqB,OAAA;AAC7B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAE5B,OAAO;AACP,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAiD;AAAzC,kGAAA,OAAO,OAAA;AACf,uCAAkH;AAA1G,oGAAA,QAAQ,OAAA;AAChB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AACf,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AAkBvB,QAAQ;AACR,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,QAAQ;AACR,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AAEf,cAAc;AACd,+DAAyC;AACjC,gCAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@breautek/storm",
3
- "version": "9.0.0",
3
+ "version": "9.0.2",
4
4
  "description": "Object-Oriented REST API framework",
5
5
  "main": "lib/api.js",
6
6
  "types": "lib/api.d.ts",
package/src/Handler.ts CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  import {Application} from './Application';
18
18
  import {Request} from './Request';
19
- import {Response, SendableData} from './Response';
19
+ import {Response, TSupportedResponseTypes} from './Response';
20
20
  import {Middleware} from './Middleware';
21
21
  import {StormError} from './StormError';
22
22
  import {IConfig} from './IConfig';
@@ -31,14 +31,14 @@ const TAG: string = 'Handler';
31
31
 
32
32
  export class Handler<
33
33
  TApplication extends Application = Application,
34
- TGetRequest extends SendableData = void | SendableData,
35
- TGetResponse extends SendableData = void | SendableData,
36
- TPostRequest extends SendableData = void | SendableData,
37
- TPostResponse extends SendableData = void | SendableData,
38
- TPutRequest extends SendableData = void | SendableData,
39
- TPutResponse extends SendableData = void | SendableData,
40
- TDeleteRequest extends SendableData = void | SendableData,
41
- TDeleteResponse extends SendableData = void | SendableData
34
+ TGetRequest = void,
35
+ TGetResponse extends TSupportedResponseTypes = TSupportedResponseTypes,
36
+ TPostRequest = void,
37
+ TPostResponse extends TSupportedResponseTypes = TSupportedResponseTypes,
38
+ TPutRequest = void,
39
+ TPutResponse extends TSupportedResponseTypes = TSupportedResponseTypes,
40
+ TDeleteRequest = void,
41
+ TDeleteResponse extends TSupportedResponseTypes = TSupportedResponseTypes
42
42
  > {
43
43
 
44
44
  private $app: TApplication;
@@ -76,7 +76,7 @@ export class Handler<
76
76
  * @param response
77
77
  * @returns
78
78
  */
79
- private async $executeMiddlewares(request: Request, response: Response): Promise<IRequestResponse> {
79
+ private async $executeMiddlewares(request: Request, response: Response<any>): Promise<IRequestResponse> {
80
80
  let result: IRequestResponse = {
81
81
  request,
82
82
  response
@@ -128,13 +128,13 @@ export class Handler<
128
128
  * @param response
129
129
  * @param error
130
130
  */
131
- protected _onMiddlewareReject(request: Request, response: Response, error: StormError): void {}
131
+ protected _onMiddlewareReject(request: Request, response: Response<any>, error: StormError): void {}
132
132
 
133
- private $handleResponse<TResponse extends SendableData>(response: Response<TResponse>, data: TResponse | ResponseData<TResponse>): void {
133
+ private $handleResponse<TResponse extends TGetResponse | TPostResponse | TPutResponse | TDeleteResponse>(response: Response<TResponse>, data: TResponse | ResponseData<TResponse>): void {
134
134
  response.send(data);
135
135
  }
136
136
 
137
- private $handleResponseError<TResponse extends SendableData>(response: Response<TResponse>, error: any): void {
137
+ private $handleResponseError(response: Response<StormError>, error: StormError | unknown): void {
138
138
  response.error(error);
139
139
  }
140
140
 
@@ -147,7 +147,7 @@ export class Handler<
147
147
  this.$handleResponse(response, req);
148
148
  }
149
149
  catch (ex) {
150
- this.$handleResponseError(response, ex);
150
+ this.$handleResponseError(response as Response<StormError>, ex);
151
151
  }
152
152
  }
153
153
 
@@ -160,7 +160,7 @@ export class Handler<
160
160
  this.$handleResponse(response, req);
161
161
  }
162
162
  catch (ex) {
163
- this.$handleResponseError(response, ex);
163
+ this.$handleResponseError(response as Response<StormError>, ex);
164
164
  }
165
165
  }
166
166
 
@@ -173,7 +173,7 @@ export class Handler<
173
173
  this.$handleResponse(response, req);
174
174
  }
175
175
  catch (ex) {
176
- this.$handleResponseError(response, ex);
176
+ this.$handleResponseError(response as Response<StormError>, ex);
177
177
  }
178
178
  }
179
179
 
@@ -186,7 +186,7 @@ export class Handler<
186
186
  this.$handleResponse(response, req);
187
187
  }
188
188
  catch (ex) {
189
- this.$handleResponseError(response, ex);
189
+ this.$handleResponseError(response as Response<StormError>, ex);
190
190
  }
191
191
  }
192
192
 
@@ -15,9 +15,9 @@
15
15
  */
16
16
 
17
17
  import {Request} from './Request';
18
- import {Response, SendableData} from './Response';
18
+ import {Response, TSupportedResponseTypes} from './Response';
19
19
 
20
- export interface IRequestResponse<TRequest = any, TResponse extends SendableData = SendableData> {
20
+ export interface IRequestResponse<TRequest = any, TResponse extends TSupportedResponseTypes = TSupportedResponseTypes> {
21
21
  request: Request<TRequest>;
22
22
  response: Response<TResponse>;
23
23
  }
package/src/Middleware.ts CHANGED
@@ -15,14 +15,14 @@
15
15
  */
16
16
 
17
17
  import {Request} from './Request';
18
- import {Response} from './Response';
18
+ import {Response, TSupportedResponseTypes} from './Response';
19
19
  import {IRequestResponse} from './IRequestResponse';
20
20
  import { Application } from './Application';
21
21
 
22
22
  /**
23
23
  * @deprecated
24
24
  */
25
- export abstract class Middleware<TApplication extends Application = Application> {
25
+ export abstract class Middleware<TApplication extends Application = Application, TResponse extends TSupportedResponseTypes = TSupportedResponseTypes> {
26
26
  private $app: TApplication;
27
27
 
28
28
  public constructor(app: TApplication) {
@@ -33,9 +33,9 @@ export abstract class Middleware<TApplication extends Application = Application>
33
33
  return this.$app;
34
34
  }
35
35
 
36
- protected abstract _execute(request: Request, response: Response): Promise<IRequestResponse>;
36
+ protected abstract _execute(request: Request, response: Response<TResponse>): Promise<IRequestResponse>;
37
37
 
38
- public execute(request: Request, response: Response): Promise<IRequestResponse> {
38
+ public execute(request: Request, response: Response<TResponse>): Promise<IRequestResponse> {
39
39
  return this._execute(request, response);
40
40
  }
41
41
  }
package/src/Response.ts CHANGED
@@ -24,23 +24,52 @@ import { Application } from './Application';
24
24
 
25
25
  const TAG: string = 'Response';
26
26
 
27
- export type SendableData =
28
- ResponseData<SendableData> |
29
- Error |
30
- IErrorResponse |
31
- Buffer |
32
- string |
27
+ export type TSupportedResponsePrimitives =
33
28
  number |
29
+ boolean |
30
+ string |
31
+ Date |
32
+ IErrorResponse |
34
33
  void |
35
- ReadableStream |
36
- Stream.Readable
34
+ TSupportedResponsePrimitives[] |
35
+ {[key: string]: TSupportedResponsePrimitives; }
37
36
  ;
38
37
 
38
+ /**
39
+ * Utility type wrap, useful if you have a concrete interface of TSupportedResponsePrimitives properties.
40
+ * Use this to declare that your interface is Response Serializable.
41
+ *
42
+ * e.g.
43
+ *
44
+ * ```typescript
45
+ * interface MyInterface {...}
46
+ * type TMyInterface = FuseSerializable<MyInterface>;
47
+ * ```
48
+ *
49
+ * OR
50
+ *
51
+ * ```typescript
52
+ * type MyInterface = TSerializableResponse<{...}>;
53
+ * ```
54
+ *
55
+ */
56
+ export type TSerializableResponse<T> = {
57
+ [k in keyof T]: TSupportedResponsePrimitives;
58
+ }
59
+
60
+ export type TSupportedResponseTypes =
61
+ TSupportedResponsePrimitives |
62
+ Error |
63
+ StormError |
64
+ Buffer |
65
+ ReadableStream |
66
+ Stream.Readable;
67
+
39
68
  export interface IHeaderKeyValuePair {
40
69
  [key: string]: string;
41
70
  }
42
71
 
43
- export class Response<TResponse extends SendableData = SendableData, TErrorResponse extends SendableData = SendableData> {
72
+ export class Response<TResponse extends TSupportedResponseTypes> {
44
73
  private $app: Application;
45
74
  private $response: express.Response;
46
75
  private $created: Date;
@@ -53,7 +82,7 @@ export class Response<TResponse extends SendableData = SendableData, TErrorRespo
53
82
  this.$requestURL = requestURL;
54
83
  }
55
84
 
56
- public setStatus(status: StatusCode): Response<TResponse, TErrorResponse> {
85
+ public setStatus(status: StatusCode): Response<TResponse> {
57
86
  this.$response.status(status);
58
87
  return this;
59
88
  }
@@ -66,7 +95,7 @@ export class Response<TResponse extends SendableData = SendableData, TErrorRespo
66
95
  this.$response.redirect(url);
67
96
  }
68
97
 
69
- private $send(data?: SendableData, statusOverride?: StatusCode): void {
98
+ private $send(data?: TResponse | ResponseData<TResponse> | ResponseData<StormError> | StormError | IErrorResponse, statusOverride?: StatusCode): void {
70
99
  if (data === null || data === undefined) {
71
100
  this.setStatus(statusOverride || StatusCode.OK_NO_CONTENT);
72
101
  this.$response.send()
@@ -105,7 +134,7 @@ export class Response<TResponse extends SendableData = SendableData, TErrorRespo
105
134
  }
106
135
 
107
136
  // public send(data?: TResponse | TErrorResponse | StormError | IErrorResponse | Buffer): void {
108
- public send(data?: SendableData): void {
137
+ public send(data?: TResponse | ResponseData<TResponse> | ResponseData<StormError> | StormError | IErrorResponse): void {
109
138
  this.$send(data);
110
139
  this.$app.getLogger().info(TAG, `API ${this.$requestURL} (${this.getStatus()}) responded in ${new Date().getTime() - this.$created.getTime()}ms`);
111
140
  }
@@ -141,7 +170,7 @@ export class Response<TResponse extends SendableData = SendableData, TErrorRespo
141
170
  return this.$response.headersSent;
142
171
  }
143
172
 
144
- public error(error?: TErrorResponse | ResponseData<TErrorResponse>): void {
173
+ public error(error?: StormError | IErrorResponse | ResponseData<StormError> | unknown): void {
145
174
  if (error) {
146
175
  if (error instanceof StormError) {
147
176
  this.send(error);
@@ -151,9 +180,8 @@ export class Response<TResponse extends SendableData = SendableData, TErrorRespo
151
180
  for (let header of headers) {
152
181
  this.setHeader(header[0], header[1]);
153
182
  }
154
- // If it was not ResponseData<TResponse> then
155
- // the method signature should have caught it
156
- this.send((error as unknown as TErrorResponse));
183
+
184
+ this.send(error);
157
185
  }
158
186
  else {
159
187
  this.send(new InternalError(error));
package/src/api.ts CHANGED
@@ -73,7 +73,7 @@ export {LockWaitTimeoutError} from './LockWaitTimeoutError';
73
73
  export {StatusCode} from './StatusCode';
74
74
  export {Middleware} from './Middleware';
75
75
  export {Request, IParameterMap} from './Request';
76
- export {Response} from './Response';
76
+ export {Response, TSerializableResponse, TSupportedResponseTypes, TSupportedResponsePrimitives} from './Response';
77
77
  export {ResponseData} from './ResponseData';
78
78
  export {Handler} from './Handler';
79
79
  export {ServiceProvider} from './ServiceProvider';