@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.
- package/CHANGELOG.md +13 -1
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/Application.html +17 -17
- package/docs/classes/ConfigLoader.html +3 -3
- package/docs/classes/Database.html +2 -2
- package/docs/classes/DatabaseCastObject.html +2 -2
- package/docs/classes/DatabaseConnection.html +21 -21
- package/docs/classes/DatabaseQueryError.html +6 -6
- package/docs/classes/DeadLockError.html +6 -6
- package/docs/classes/DiskSpaceError.html +5 -5
- package/docs/classes/DropTemporaryTableQuery.html +7 -7
- package/docs/classes/DuplicateEntryError.html +5 -5
- package/docs/classes/EntityNotFoundError.html +5 -5
- package/docs/classes/ExpiredTokenError.html +5 -5
- package/docs/classes/Handler.html +2 -2
- package/docs/classes/InternalError.html +5 -5
- package/docs/classes/InvalidCredentialsError.html +5 -5
- package/docs/classes/InvalidValueError.html +5 -5
- package/docs/classes/LineString.html +2 -2
- package/docs/classes/LockWaitTimeoutError.html +6 -6
- package/docs/classes/ManagedDatabaseConnection.html +5 -5
- package/docs/classes/Middleware.html +2 -2
- package/docs/classes/MissingConfigError.html +5 -5
- package/docs/classes/MissingParameterError.html +5 -5
- package/docs/classes/MySQLConnection.html +25 -25
- package/docs/classes/MySQLDatabase.html +2 -2
- package/docs/classes/NotImplementedError.html +5 -5
- package/docs/classes/Point.html +2 -2
- package/docs/classes/Polygon.html +2 -2
- package/docs/classes/Query.html +7 -7
- package/docs/classes/RawError.html +5 -5
- package/docs/classes/RawQuery.html +7 -7
- package/docs/classes/Request.html +2 -2
- package/docs/classes/Response.html +2 -2
- package/docs/classes/ResponseData.html +2 -2
- package/docs/classes/ServiceProvider.html +2 -2
- package/docs/classes/ServiceResponse.html +2 -2
- package/docs/classes/SetSessionVariableQuery.html +7 -7
- package/docs/classes/StormError.html +5 -5
- package/docs/classes/TemporaryTableQuery.html +7 -7
- package/docs/classes/TimeoutError.html +5 -5
- package/docs/classes/Token.html +2 -2
- package/docs/classes/TokenManager.html +2 -2
- package/docs/classes/Transaction.html +2 -2
- package/docs/classes/UnauthorizedAccessError.html +5 -5
- package/docs/enums/ErrorCode.html +2 -2
- package/docs/enums/ExitCode.html +2 -2
- package/docs/enums/HTTPMethod.html +2 -2
- package/docs/enums/IsolationLevel.html +2 -2
- package/docs/enums/JWTError.html +2 -2
- package/docs/enums/StatusCode.html +2 -2
- package/docs/enums/TransactionAccessLevel.html +2 -2
- package/docs/functions/getInstance.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +1 -1
- package/docs/interfaces/IAdditionalErrorDetails.html +1 -1
- package/docs/interfaces/ICloudwatchConfig.html +2 -2
- package/docs/interfaces/ICloudwatchCredentials.html +2 -2
- package/docs/interfaces/ICloudwatchStreamConfig.html +2 -2
- package/docs/interfaces/IConfig.html +2 -2
- package/docs/interfaces/IDatabaseConfig.html +2 -2
- package/docs/interfaces/IDatabaseConnection.html +5 -5
- package/docs/interfaces/IDatabasePosition.html +2 -2
- package/docs/interfaces/IErrorResponse.html +2 -2
- package/docs/interfaces/IFormData.html +2 -2
- package/docs/interfaces/IInsertQueryResult.html +2 -2
- package/docs/interfaces/IJWTVerifyOptions.html +2 -2
- package/docs/interfaces/IOKPacket.html +2 -2
- package/docs/interfaces/IParameterMap.html +1 -1
- package/docs/interfaces/IQueryable.html +2 -2
- package/docs/interfaces/IRequestResponse.html +2 -2
- package/docs/interfaces/ISetSessionVariableQueryInput.html +2 -2
- package/docs/interfaces/IStormCLIArgs.html +2 -2
- package/docs/interfaces/ITemporaryTableQueryInput.html +2 -2
- package/docs/interfaces/IUpdateQueryResult.html +2 -2
- package/docs/interfaces/formidable.FileJSON.html +1 -1
- package/docs/interfaces/formidable.Part.html +1 -1
- package/docs/types/IDeleteQueryResult.html +1 -1
- package/docs/types/IStoredProcedureResult.html +1 -1
- package/docs/types/TCoordinate.html +1 -1
- package/docs/types/TSerializableResponse.html +11 -0
- package/docs/types/TSupportedResponsePrimitives.html +1 -0
- package/docs/types/TSupportedResponseTypes.html +1 -0
- package/lib/Handler.d.ts +3 -3
- package/lib/Handler.js.map +1 -1
- package/lib/IRequestResponse.d.ts +2 -2
- package/lib/Middleware.d.ts +4 -4
- package/lib/Middleware.js.map +1 -1
- package/lib/Response.d.ts +30 -6
- package/lib/Response.js +0 -2
- package/lib/Response.js.map +1 -1
- package/lib/api.d.ts +1 -1
- package/lib/api.js.map +1 -1
- package/package.json +1 -1
- package/src/Handler.ts +17 -17
- package/src/IRequestResponse.ts +2 -2
- package/src/Middleware.ts +4 -4
- package/src/Response.ts +44 -16
- package/src/api.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request } from './Request';
|
|
2
|
-
import { Response,
|
|
3
|
-
export interface IRequestResponse<TRequest = any, TResponse extends
|
|
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
|
}
|
package/lib/Middleware.d.ts
CHANGED
|
@@ -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
|
}
|
package/lib/Middleware.js.map
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
|
41
|
+
setStatus(status: StatusCode): Response<TResponse>;
|
|
18
42
|
getStatus(): StatusCode;
|
|
19
43
|
redirect(url: string): void;
|
|
20
44
|
private $send;
|
|
21
|
-
send(data?:
|
|
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?:
|
|
51
|
+
error(error?: StormError | IErrorResponse | ResponseData<StormError> | unknown): void;
|
|
28
52
|
}
|
package/lib/Response.js
CHANGED
package/lib/Response.js.map
CHANGED
|
@@ -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;
|
|
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,
|
|
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
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,
|
|
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
|
|
35
|
-
TGetResponse extends
|
|
36
|
-
TPostRequest
|
|
37
|
-
TPostResponse extends
|
|
38
|
-
TPutRequest
|
|
39
|
-
TPutResponse extends
|
|
40
|
-
TDeleteRequest
|
|
41
|
-
TDeleteResponse extends
|
|
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
|
|
131
|
+
protected _onMiddlewareReject(request: Request, response: Response<any>, error: StormError): void {}
|
|
132
132
|
|
|
133
|
-
private $handleResponse<TResponse extends
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
189
|
+
this.$handleResponseError(response as Response<StormError>, ex);
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
|
package/src/IRequestResponse.ts
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import {Request} from './Request';
|
|
18
|
-
import {Response,
|
|
18
|
+
import {Response, TSupportedResponseTypes} from './Response';
|
|
19
19
|
|
|
20
|
-
export interface IRequestResponse<TRequest = any, TResponse extends
|
|
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
|
|
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
|
-
|
|
36
|
-
|
|
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
|
|
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
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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
|
-
|
|
155
|
-
|
|
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';
|