@breautek/storm 4.1.0 → 4.2.0
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 +8 -1
- package/docs/README.md +6 -4
- package/docs/classes/Application.md +26 -26
- package/docs/classes/BackendAuthenticationMiddleware.md +2 -2
- package/docs/classes/CORSMiddleware.md +6 -6
- package/docs/classes/ConfigLoader.md +1 -1
- package/docs/classes/Database.md +12 -12
- package/docs/classes/DatabaseConnection.md +19 -19
- package/docs/classes/DatabaseQueryError.md +8 -8
- package/docs/classes/DiskSpaceError.md +8 -8
- package/docs/classes/DropTemporaryTableQuery.md +14 -8
- package/docs/classes/DumpStream.md +1 -1
- package/docs/classes/DuplicateEntryError.md +8 -8
- package/docs/classes/EntityNotFoundError.md +8 -8
- package/docs/classes/ExpiredTokenError.md +8 -8
- package/docs/classes/Handler.md +22 -22
- package/docs/classes/InternalError.md +8 -8
- package/docs/classes/InvalidCredentialsError.md +8 -8
- package/docs/classes/InvalidValueError.md +8 -8
- package/docs/classes/ManagedDatabaseConnection.md +19 -19
- package/docs/classes/Middleware.md +3 -3
- package/docs/classes/MissingConfigError.md +8 -8
- package/docs/classes/MissingParameterError.md +8 -8
- package/docs/classes/MySQLConnection.md +20 -20
- package/docs/classes/MySQLDatabase.md +13 -13
- package/docs/classes/NotImplementedError.md +301 -0
- package/docs/classes/Query.md +14 -8
- package/docs/classes/RawError.md +313 -0
- package/docs/classes/RawQuery.md +14 -8
- package/docs/classes/Request.md +18 -18
- package/docs/classes/Response.md +11 -11
- package/docs/classes/ResponseData.md +7 -7
- package/docs/classes/ServiceProvider.md +15 -15
- package/docs/classes/ServiceResponse.md +4 -4
- package/docs/classes/SetSessionVariableQuery.md +14 -8
- package/docs/classes/StormError.md +12 -8
- package/docs/classes/TemporaryTableQuery.md +14 -8
- package/docs/classes/Token.md +2 -2
- package/docs/classes/TokenManager.md +4 -4
- package/docs/classes/UnauthorizedAccessError.md +8 -8
- package/docs/enums/ErrorCode.md +9 -9
- package/docs/enums/ExitCode.md +2 -2
- package/docs/enums/HTTPMethod.md +4 -4
- package/docs/enums/JWTError.md +2 -2
- package/docs/enums/StatusCode.md +48 -48
- package/docs/interfaces/IConfig.md +8 -8
- package/docs/interfaces/IDatabaseConfig.md +6 -6
- package/docs/interfaces/IDatabaseConnection.md +14 -14
- package/docs/interfaces/IErrorResponse.md +4 -4
- package/docs/interfaces/IFormData.md +2 -2
- package/docs/interfaces/IHandler.md +1 -1
- package/docs/interfaces/IInsertQueryResult.md +3 -3
- package/docs/interfaces/IJWTVerifyOptions.md +1 -1
- package/docs/interfaces/IRequestResponse.md +2 -2
- package/docs/interfaces/ISetSessionVariableQueryInput.md +2 -2
- package/docs/interfaces/ITemporaryTableQueryInput.md +2 -2
- package/docs/interfaces/IUpdateQueryResult.md +2 -2
- package/lib/Application.d.ts +58 -0
- package/lib/Application.js +73 -0
- package/lib/Application.js.map +1 -1
- package/lib/ApplicationEvent.js +15 -0
- package/lib/ApplicationEvent.js.map +1 -1
- package/lib/BackendAuthenticationMiddleware.d.ts +12 -0
- package/lib/BackendAuthenticationMiddleware.js +28 -0
- package/lib/BackendAuthenticationMiddleware.js.map +1 -1
- package/lib/CORSMiddleware.d.ts +14 -0
- package/lib/CORSMiddleware.js +29 -0
- package/lib/CORSMiddleware.js.map +1 -1
- package/lib/ConfigLoader.js +16 -0
- package/lib/ConfigLoader.js.map +1 -1
- package/lib/Database.js +15 -0
- package/lib/Database.js.map +1 -1
- package/lib/DatabaseConnection.d.ts +115 -0
- package/lib/DatabaseConnection.js +71 -0
- package/lib/DatabaseConnection.js.map +1 -1
- package/lib/DatabaseQueryError.js +16 -0
- package/lib/DatabaseQueryError.js.map +1 -1
- package/lib/DiskSpaceError.js +15 -0
- package/lib/DiskSpaceError.js.map +1 -1
- package/lib/DropTemporaryTableQuery.js +15 -0
- package/lib/DropTemporaryTableQuery.js.map +1 -1
- package/lib/DumpStream.js +16 -0
- package/lib/DumpStream.js.map +1 -1
- package/lib/DuplicateEntryError.js +15 -0
- package/lib/DuplicateEntryError.js.map +1 -1
- package/lib/EntityNotFoundError.js +15 -0
- package/lib/EntityNotFoundError.js.map +1 -1
- package/lib/ErrorCode.js +15 -0
- package/lib/ErrorCode.js.map +1 -1
- package/lib/ExitCode.js +15 -0
- package/lib/ExitCode.js.map +1 -1
- package/lib/ExpiredTokenError.js +16 -0
- package/lib/ExpiredTokenError.js.map +1 -1
- package/lib/HTTPMethod.js +15 -0
- package/lib/HTTPMethod.js.map +1 -1
- package/lib/Handler.d.ts +22 -4
- package/lib/Handler.js +22 -6
- package/lib/Handler.js.map +1 -1
- package/lib/IAuthTokenData.js +15 -0
- package/lib/IAuthTokenData.js.map +1 -1
- package/lib/IConfig.js +15 -0
- package/lib/IConfig.js.map +1 -1
- package/lib/IDatabaseConfig.js +15 -0
- package/lib/IDatabaseConfig.js.map +1 -1
- package/lib/IDatabaseConnection.js +15 -0
- package/lib/IDatabaseConnection.js.map +1 -1
- package/lib/IDeleteQueryResult.js +15 -0
- package/lib/IDeleteQueryResult.js.map +1 -1
- package/lib/IFormData.js +15 -0
- package/lib/IFormData.js.map +1 -1
- package/lib/IHandler.js +15 -0
- package/lib/IHandler.js.map +1 -1
- package/lib/IInsertQueryResult.js +15 -0
- package/lib/IInsertQueryResult.js.map +1 -1
- package/lib/IJWTVerifyOptions.js +15 -0
- package/lib/IJWTVerifyOptions.js.map +1 -1
- package/lib/IRequestResponse.js +15 -0
- package/lib/IRequestResponse.js.map +1 -1
- package/lib/IServiceHeaders.js +15 -0
- package/lib/IServiceHeaders.js.map +1 -1
- package/lib/IUpdateQueryResult.js +15 -0
- package/lib/IUpdateQueryResult.js.map +1 -1
- package/lib/InternalError.js +16 -0
- package/lib/InternalError.js.map +1 -1
- package/lib/InvalidConfigError.js +15 -0
- package/lib/InvalidConfigError.js.map +1 -1
- package/lib/InvalidCredentialsError.js +16 -0
- package/lib/InvalidCredentialsError.js.map +1 -1
- package/lib/InvalidValueError.js +16 -0
- package/lib/InvalidValueError.js.map +1 -1
- package/lib/JWTError.js +15 -0
- package/lib/JWTError.js.map +1 -1
- package/lib/JWTVerifyOptionsParser.js +16 -0
- package/lib/JWTVerifyOptionsParser.js.map +1 -1
- package/lib/ManagedDatabaseConnection.d.ts +5 -0
- package/lib/ManagedDatabaseConnection.js +26 -0
- package/lib/ManagedDatabaseConnection.js.map +1 -1
- package/lib/Middleware.js +16 -0
- package/lib/Middleware.js.map +1 -1
- package/lib/MissingConfigError.js +15 -0
- package/lib/MissingConfigError.js.map +1 -1
- package/lib/MissingParameterError.js +15 -0
- package/lib/MissingParameterError.js.map +1 -1
- package/lib/MySQLConnection.js +24 -1
- package/lib/MySQLConnection.js.map +1 -1
- package/lib/MySQLDatabase.js +18 -0
- package/lib/MySQLDatabase.js.map +1 -1
- package/lib/NotImplementedError.d.ts +14 -0
- package/lib/NotImplementedError.js +40 -0
- package/lib/NotImplementedError.js.map +1 -0
- package/lib/Query.d.ts +21 -0
- package/lib/Query.js +37 -0
- package/lib/Query.js.map +1 -1
- package/lib/RawError.d.ts +14 -0
- package/lib/RawError.js +40 -0
- package/lib/RawError.js.map +1 -0
- package/lib/RawQuery.js +15 -0
- package/lib/RawQuery.js.map +1 -1
- package/lib/Request.js +15 -0
- package/lib/Request.js.map +1 -1
- package/lib/Response.js +17 -0
- package/lib/Response.js.map +1 -1
- package/lib/ResponseData.js +15 -0
- package/lib/ResponseData.js.map +1 -1
- package/lib/ServiceProvider.js +20 -0
- package/lib/ServiceProvider.js.map +1 -1
- package/lib/ServiceResponse.js +15 -0
- package/lib/ServiceResponse.js.map +1 -1
- package/lib/SetSessionVariableQuery.js +1 -0
- package/lib/SetSessionVariableQuery.js.map +1 -1
- package/lib/StatusCode.js +15 -0
- package/lib/StatusCode.js.map +1 -1
- package/lib/StormError.d.ts +7 -0
- package/lib/StormError.js +22 -0
- package/lib/StormError.js.map +1 -1
- package/lib/TemporaryTableQuery.js +15 -0
- package/lib/TemporaryTableQuery.js.map +1 -1
- package/lib/Token.js +15 -0
- package/lib/Token.js.map +1 -1
- package/lib/TokenManager.js +17 -0
- package/lib/TokenManager.js.map +1 -1
- package/lib/UnauthorizedAccessError.js +15 -0
- package/lib/UnauthorizedAccessError.js.map +1 -1
- package/lib/api.d.ts +2 -0
- package/lib/api.js +28 -1
- package/lib/api.js.map +1 -1
- package/lib/instance.js +15 -0
- package/lib/instance.js.map +1 -1
- package/lib/private/CommitQuery.js +15 -0
- package/lib/private/CommitQuery.js.map +1 -1
- package/lib/private/RollbackQuery.js +15 -0
- package/lib/private/RollbackQuery.js.map +1 -1
- package/lib/private/StartTransactionQuery.js +15 -0
- package/lib/private/StartTransactionQuery.js.map +1 -1
- package/package.json +1 -1
- package/src/Handler.ts +10 -9
- package/src/NotImplementedError.ts +45 -0
- package/src/Query.ts +8 -0
- package/src/RawError.ts +39 -0
- package/src/api.ts +2 -0
- package/tsconfig.json +0 -1
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
#### Defined in
|
|
21
21
|
|
|
22
|
-
[src/StormError.ts:31](https://github.com/breautek/storm/blob/
|
|
22
|
+
[src/StormError.ts:31](https://github.com/breautek/storm/blob/f198938/src/StormError.ts#L31)
|
|
23
23
|
|
|
24
24
|
___
|
|
25
25
|
|
|
@@ -29,7 +29,7 @@ ___
|
|
|
29
29
|
|
|
30
30
|
#### Defined in
|
|
31
31
|
|
|
32
|
-
[src/StormError.ts:32](https://github.com/breautek/storm/blob/
|
|
32
|
+
[src/StormError.ts:32](https://github.com/breautek/storm/blob/f198938/src/StormError.ts#L32)
|
|
33
33
|
|
|
34
34
|
___
|
|
35
35
|
|
|
@@ -39,7 +39,7 @@ ___
|
|
|
39
39
|
|
|
40
40
|
#### Defined in
|
|
41
41
|
|
|
42
|
-
[src/StormError.ts:30](https://github.com/breautek/storm/blob/
|
|
42
|
+
[src/StormError.ts:30](https://github.com/breautek/storm/blob/f198938/src/StormError.ts#L30)
|
|
43
43
|
|
|
44
44
|
___
|
|
45
45
|
|
|
@@ -49,4 +49,4 @@ ___
|
|
|
49
49
|
|
|
50
50
|
#### Defined in
|
|
51
51
|
|
|
52
|
-
[src/StormError.ts:29](https://github.com/breautek/storm/blob/
|
|
52
|
+
[src/StormError.ts:29](https://github.com/breautek/storm/blob/f198938/src/StormError.ts#L29)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/IFormData.ts:20](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/IFormData.ts:20](https://github.com/breautek/storm/blob/f198938/src/IFormData.ts#L20)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/IFormData.ts:21](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/IFormData.ts:21](https://github.com/breautek/storm/blob/f198938/src/IFormData.ts#L21)
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
#### Defined in
|
|
20
20
|
|
|
21
|
-
[src/IInsertQueryResult.ts:19](https://github.com/breautek/storm/blob/
|
|
21
|
+
[src/IInsertQueryResult.ts:19](https://github.com/breautek/storm/blob/f198938/src/IInsertQueryResult.ts#L19)
|
|
22
22
|
|
|
23
23
|
___
|
|
24
24
|
|
|
@@ -28,7 +28,7 @@ ___
|
|
|
28
28
|
|
|
29
29
|
#### Defined in
|
|
30
30
|
|
|
31
|
-
[src/IInsertQueryResult.ts:20](https://github.com/breautek/storm/blob/
|
|
31
|
+
[src/IInsertQueryResult.ts:20](https://github.com/breautek/storm/blob/f198938/src/IInsertQueryResult.ts#L20)
|
|
32
32
|
|
|
33
33
|
___
|
|
34
34
|
|
|
@@ -38,4 +38,4 @@ ___
|
|
|
38
38
|
|
|
39
39
|
#### Defined in
|
|
40
40
|
|
|
41
|
-
[src/IInsertQueryResult.ts:18](https://github.com/breautek/storm/blob/
|
|
41
|
+
[src/IInsertQueryResult.ts:18](https://github.com/breautek/storm/blob/f198938/src/IInsertQueryResult.ts#L18)
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
#### Defined in
|
|
26
26
|
|
|
27
|
-
[src/IRequestResponse.ts:21](https://github.com/breautek/storm/blob/
|
|
27
|
+
[src/IRequestResponse.ts:21](https://github.com/breautek/storm/blob/f198938/src/IRequestResponse.ts#L21)
|
|
28
28
|
|
|
29
29
|
___
|
|
30
30
|
|
|
@@ -34,4 +34,4 @@ ___
|
|
|
34
34
|
|
|
35
35
|
#### Defined in
|
|
36
36
|
|
|
37
|
-
[src/IRequestResponse.ts:22](https://github.com/breautek/storm/blob/
|
|
37
|
+
[src/IRequestResponse.ts:22](https://github.com/breautek/storm/blob/f198938/src/IRequestResponse.ts#L22)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/SetSessionVariableQuery.ts:7](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/SetSessionVariableQuery.ts:7](https://github.com/breautek/storm/blob/f198938/src/SetSessionVariableQuery.ts#L7)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/SetSessionVariableQuery.ts:8](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/SetSessionVariableQuery.ts:8](https://github.com/breautek/storm/blob/f198938/src/SetSessionVariableQuery.ts#L8)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/TemporaryTableQuery.ts:22](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/TemporaryTableQuery.ts:22](https://github.com/breautek/storm/blob/f198938/src/TemporaryTableQuery.ts#L22)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/TemporaryTableQuery.ts:21](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/TemporaryTableQuery.ts:21](https://github.com/breautek/storm/blob/f198938/src/TemporaryTableQuery.ts#L21)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#### Defined in
|
|
19
19
|
|
|
20
|
-
[src/IUpdateQueryResult.ts:18](https://github.com/breautek/storm/blob/
|
|
20
|
+
[src/IUpdateQueryResult.ts:18](https://github.com/breautek/storm/blob/f198938/src/IUpdateQueryResult.ts#L18)
|
|
21
21
|
|
|
22
22
|
___
|
|
23
23
|
|
|
@@ -27,4 +27,4 @@ ___
|
|
|
27
27
|
|
|
28
28
|
#### Defined in
|
|
29
29
|
|
|
30
|
-
[src/IUpdateQueryResult.ts:19](https://github.com/breautek/storm/blob/
|
|
30
|
+
[src/IUpdateQueryResult.ts:19](https://github.com/breautek/storm/blob/f198938/src/IUpdateQueryResult.ts#L19)
|
package/lib/Application.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ import { IConfig } from './IConfig';
|
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import { IAuthTokenData } from '@arashi/token';
|
|
10
10
|
import { Logger } from '@arashi/logger';
|
|
11
|
+
/**
|
|
12
|
+
* Main entry point for the Application. Should be extended and have the abstract methods implemented.
|
|
13
|
+
*/
|
|
11
14
|
export declare abstract class Application<TConfig extends IConfig = IConfig, TAuthToken extends IAuthTokenData = IAuthTokenData, TDBConfig = any, TDBConnectionAPI = any> extends EventEmitter {
|
|
12
15
|
private $logger;
|
|
13
16
|
private $name;
|
|
@@ -18,6 +21,11 @@ export declare abstract class Application<TConfig extends IConfig = IConfig, TAu
|
|
|
18
21
|
private $db;
|
|
19
22
|
private $socket;
|
|
20
23
|
private $program;
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param name The application name
|
|
27
|
+
* @param configPath The directory where bt-config.json and bt-local-config.json can be found. Defaults to current working directory.
|
|
28
|
+
*/
|
|
21
29
|
constructor(name: string, configPath: string);
|
|
22
30
|
private $load;
|
|
23
31
|
protected _initialize(config: TConfig): Promise<void>;
|
|
@@ -27,24 +35,74 @@ export declare abstract class Application<TConfig extends IConfig = IConfig, TAu
|
|
|
27
35
|
private $buildArgOptions;
|
|
28
36
|
protected _buildArgOptions(program: Command): void;
|
|
29
37
|
getProgram(): Command;
|
|
38
|
+
/**
|
|
39
|
+
* The maximum size limit for incoming requests that this service needs to handle.
|
|
40
|
+
*/
|
|
30
41
|
getRequestSizeLimit(): number;
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param path The URL API path. E.g. /api/myService/myCommand/
|
|
45
|
+
* @param HandlerClass The concrete class (not the instance) of Handler to be used for this API.
|
|
46
|
+
*/
|
|
31
47
|
attachHandler(path: string, HandlerClass: IHandler): void;
|
|
32
48
|
attachHandlerInstance(path: string, handler: Handler): void;
|
|
33
49
|
close(): Promise<void>;
|
|
34
50
|
protected _closeDatabase(): Promise<void>;
|
|
35
51
|
protected _closeSocket(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Subclasses are expected to attach the API handlers for their service. This will be invoked during application startup.
|
|
54
|
+
* @returns Promise<void>
|
|
55
|
+
*/
|
|
36
56
|
protected abstract _attachHandlers(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
*
|
|
59
|
+
* @param path The directory path that contains bt-config.json and bt-local-config.json
|
|
60
|
+
*/
|
|
37
61
|
loadConfig(path: string): Promise<TConfig>;
|
|
62
|
+
/**
|
|
63
|
+
* @returns the application name
|
|
64
|
+
*/
|
|
38
65
|
getName(): string;
|
|
39
66
|
private $getLogger;
|
|
67
|
+
/**
|
|
68
|
+
* @returns the config object.
|
|
69
|
+
*/
|
|
40
70
|
getConfig(): TConfig;
|
|
71
|
+
/**
|
|
72
|
+
* @returns true if the Application should bind to an IP address
|
|
73
|
+
*/
|
|
41
74
|
shouldListen(): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Invoked once the config has been loaded and ready to be used.
|
|
77
|
+
*
|
|
78
|
+
* @param config The config object (as defined in bt-config.json/bt-local-config.json)
|
|
79
|
+
*/
|
|
42
80
|
protected _onConfigLoad(config: TConfig): void;
|
|
81
|
+
/**
|
|
82
|
+
* Sets the TokenManager to be used for authentication.
|
|
83
|
+
* @param tokenManager
|
|
84
|
+
*/
|
|
43
85
|
setTokenManager(tokenManager: TokenManager<TAuthToken>): void;
|
|
86
|
+
/**
|
|
87
|
+
* @returns the token manager
|
|
88
|
+
*/
|
|
44
89
|
getTokenManager(): TokenManager<TAuthToken>;
|
|
90
|
+
/**
|
|
91
|
+
* @returns the database pool. This will need to be casted based on your preferred database dialect.
|
|
92
|
+
*/
|
|
45
93
|
getDB(): Database<TDBConfig, TDBConnectionAPI>;
|
|
94
|
+
/**
|
|
95
|
+
* @returns command line arguments
|
|
96
|
+
*/
|
|
46
97
|
getCmdLineArgs(): TConfig;
|
|
98
|
+
/**
|
|
99
|
+
* Subclasses are expected to override this to configure their database setup, if the service uses a database.
|
|
100
|
+
* @param config The bt-config object
|
|
101
|
+
*/
|
|
47
102
|
protected _initDB(config: TConfig): Promise<Database<TDBConfig, TDBConnectionAPI>>;
|
|
48
103
|
protected _onBeforeReadyAsync(): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Invoked when the application is considered ready for operation.
|
|
106
|
+
*/
|
|
49
107
|
protected _onReady(): void;
|
|
50
108
|
}
|
package/lib/Application.js
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2021 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
2
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
18
|
exports.Application = void 0;
|
|
4
19
|
const events_1 = require("events");
|
|
@@ -14,7 +29,15 @@ const http = require("http");
|
|
|
14
29
|
const logger_1 = require("@arashi/logger");
|
|
15
30
|
const StormError_1 = require("./StormError");
|
|
16
31
|
const TAG = 'Application';
|
|
32
|
+
/**
|
|
33
|
+
* Main entry point for the Application. Should be extended and have the abstract methods implemented.
|
|
34
|
+
*/
|
|
17
35
|
class Application extends events_1.EventEmitter {
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param name The application name
|
|
39
|
+
* @param configPath The directory where bt-config.json and bt-local-config.json can be found. Defaults to current working directory.
|
|
40
|
+
*/
|
|
18
41
|
constructor(name, configPath) {
|
|
19
42
|
super();
|
|
20
43
|
(0, instance_1.setInstance)(this);
|
|
@@ -117,8 +140,10 @@ class Application extends events_1.EventEmitter {
|
|
|
117
140
|
}
|
|
118
141
|
return port;
|
|
119
142
|
}
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
120
144
|
$buildArgOptions() {
|
|
121
145
|
this.$program = new commander_1.Command();
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
122
147
|
let pkg = require('../package.json');
|
|
123
148
|
this.$program.version(pkg.version, '-v, --version');
|
|
124
149
|
this.$program.allowUnknownOption(true);
|
|
@@ -128,13 +153,23 @@ class Application extends events_1.EventEmitter {
|
|
|
128
153
|
this.$program.option('--authentication_header <header>', 'The header name of the authentication token');
|
|
129
154
|
this._buildArgOptions(this.$program);
|
|
130
155
|
}
|
|
156
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
131
157
|
_buildArgOptions(program) { }
|
|
132
158
|
getProgram() {
|
|
133
159
|
return this.$program;
|
|
134
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* The maximum size limit for incoming requests that this service needs to handle.
|
|
163
|
+
*/
|
|
135
164
|
getRequestSizeLimit() {
|
|
136
165
|
return this.getConfig().request_size_limit;
|
|
137
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
*
|
|
169
|
+
* @param path The URL API path. E.g. /api/myService/myCommand/
|
|
170
|
+
* @param HandlerClass The concrete class (not the instance) of Handler to be used for this API.
|
|
171
|
+
*/
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
138
173
|
attachHandler(path, HandlerClass) {
|
|
139
174
|
let handler = new HandlerClass(this);
|
|
140
175
|
this.attachHandlerInstance(path, handler);
|
|
@@ -177,6 +212,10 @@ class Application extends events_1.EventEmitter {
|
|
|
177
212
|
}
|
|
178
213
|
});
|
|
179
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
*
|
|
217
|
+
* @param path The directory path that contains bt-config.json and bt-local-config.json
|
|
218
|
+
*/
|
|
180
219
|
loadConfig(path) {
|
|
181
220
|
return new Promise((resolve, reject) => {
|
|
182
221
|
ConfigLoader_1.ConfigLoader.load(path).then((config) => {
|
|
@@ -193,28 +232,55 @@ class Application extends events_1.EventEmitter {
|
|
|
193
232
|
});
|
|
194
233
|
});
|
|
195
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* @returns the application name
|
|
237
|
+
*/
|
|
196
238
|
getName() {
|
|
197
239
|
return this.$name;
|
|
198
240
|
}
|
|
199
241
|
$getLogger() {
|
|
200
242
|
return this.$logger;
|
|
201
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* @returns the config object.
|
|
246
|
+
*/
|
|
202
247
|
getConfig() {
|
|
203
248
|
return this.$config;
|
|
204
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* @returns true if the Application should bind to an IP address
|
|
252
|
+
*/
|
|
205
253
|
shouldListen() {
|
|
206
254
|
return true;
|
|
207
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Invoked once the config has been loaded and ready to be used.
|
|
258
|
+
*
|
|
259
|
+
* @param config The config object (as defined in bt-config.json/bt-local-config.json)
|
|
260
|
+
*/
|
|
208
261
|
_onConfigLoad(config) { }
|
|
262
|
+
/**
|
|
263
|
+
* Sets the TokenManager to be used for authentication.
|
|
264
|
+
* @param tokenManager
|
|
265
|
+
*/
|
|
209
266
|
setTokenManager(tokenManager) {
|
|
210
267
|
this.$tokenManager = tokenManager;
|
|
211
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* @returns the token manager
|
|
271
|
+
*/
|
|
212
272
|
getTokenManager() {
|
|
213
273
|
return this.$tokenManager;
|
|
214
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* @returns the database pool. This will need to be casted based on your preferred database dialect.
|
|
277
|
+
*/
|
|
215
278
|
getDB() {
|
|
216
279
|
return this.$db;
|
|
217
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* @returns command line arguments
|
|
283
|
+
*/
|
|
218
284
|
getCmdLineArgs() {
|
|
219
285
|
let program = this.$program;
|
|
220
286
|
let o = {};
|
|
@@ -233,10 +299,17 @@ class Application extends events_1.EventEmitter {
|
|
|
233
299
|
}
|
|
234
300
|
return o;
|
|
235
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Subclasses are expected to override this to configure their database setup, if the service uses a database.
|
|
304
|
+
* @param config The bt-config object
|
|
305
|
+
*/
|
|
236
306
|
_initDB(config) {
|
|
237
307
|
return Promise.resolve(null);
|
|
238
308
|
}
|
|
239
309
|
async _onBeforeReadyAsync() { }
|
|
310
|
+
/**
|
|
311
|
+
* Invoked when the application is considered ready for operation.
|
|
312
|
+
*/
|
|
240
313
|
_onReady() { }
|
|
241
314
|
}
|
|
242
315
|
exports.Application = Application;
|
package/lib/Application.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../src/Application.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../src/Application.ts"],"names":[],"mappings":"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"}
|
package/lib/ApplicationEvent.js
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2021 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
2
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
18
|
exports.ApplicationEvent = void 0;
|
|
4
19
|
var ApplicationEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationEvent.js","sourceRoot":"","sources":["../src/ApplicationEvent.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ApplicationEvent.js","sourceRoot":"","sources":["../src/ApplicationEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IACxB,mDAA+B,CAAA;AACnC,CAAC,EAFW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAE3B"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { Request } from './Request';
|
|
2
|
+
/**
|
|
3
|
+
* A base authentication strategy that handles 90% of the authentication process.
|
|
4
|
+
* This will verify that the token hasn't been manipulated or tainted.
|
|
5
|
+
* The authenticate API must be implemented by subclasses to further validate the token data
|
|
6
|
+
* for their specific use cases.
|
|
7
|
+
*/
|
|
2
8
|
export declare class BackendAuthenticationMiddleware {
|
|
3
9
|
private $logger;
|
|
4
10
|
constructor();
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @param request
|
|
14
|
+
* @param response
|
|
15
|
+
* @param options Arbituary object containing any relevant information used for authentication.
|
|
16
|
+
*/
|
|
5
17
|
execute(request: Request, options?: any): Promise<any>;
|
|
6
18
|
}
|
|
@@ -1,14 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2021 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
2
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
18
|
exports.BackendAuthenticationMiddleware = void 0;
|
|
4
19
|
const StatusCode_1 = require("./StatusCode");
|
|
5
20
|
const ResponseData_1 = require("./ResponseData");
|
|
6
21
|
const instance_1 = require("./instance");
|
|
7
22
|
const TAG = 'BackendAuthenticationMiddleware';
|
|
23
|
+
/**
|
|
24
|
+
* A base authentication strategy that handles 90% of the authentication process.
|
|
25
|
+
* This will verify that the token hasn't been manipulated or tainted.
|
|
26
|
+
* The authenticate API must be implemented by subclasses to further validate the token data
|
|
27
|
+
* for their specific use cases.
|
|
28
|
+
*/
|
|
8
29
|
class BackendAuthenticationMiddleware {
|
|
9
30
|
constructor() {
|
|
10
31
|
this.$logger = (0, instance_1.getInstance)().getLogger();
|
|
11
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @param request
|
|
36
|
+
* @param response
|
|
37
|
+
* @param options Arbituary object containing any relevant information used for authentication.
|
|
38
|
+
*/
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
12
40
|
execute(request, options) {
|
|
13
41
|
let config = (0, instance_1.getInstance)().getConfig();
|
|
14
42
|
let backendAuthHeader = config.backend_authentication_header;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackendAuthenticationMiddleware.js","sourceRoot":"","sources":["../src/BackendAuthenticationMiddleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BackendAuthenticationMiddleware.js","sourceRoot":"","sources":["../src/BackendAuthenticationMiddleware.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,6CAAwC;AAExC,iDAA4C;AAE5C,yCAAuC;AAGvC,MAAM,GAAG,GAAW,iCAAiC,CAAC;AAEtD;;;;;GAKG;AACH,MAAa,+BAA+B;IAGxC;QACI,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,6EAA6E;IACtE,OAAO,CAAC,OAAgB,EAAE,OAAa;QAC1C,IAAI,MAAM,GAAY,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC;QAEhD,IAAI,iBAAiB,GAAW,MAAM,CAAC,6BAA6B,CAAC;QAErE,IAAI,OAAO,GAAW,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAE3D,IAAI,OAAO,EAAE;YACT,IAAI,MAAM,CAAC,6BAA6B,KAAK,IAAI,EAAE;gBAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;gBAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,2BAAY,CAAC,uBAAU,CAAC,cAAc,CAAC,CAAC,CAAC;aACtE;YAED,IAAI,OAAO,KAAK,MAAM,CAAC,6BAA6B,EAAE;gBAClD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAChC;iBACI;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,2BAAY,CAAC,uBAAU,CAAC,gBAAgB,EAAE;oBAChE,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,gBAAgB;iBAC3B,CAAC,CAAC,CAAC;aACP;SACJ;aACI;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,2BAAY,CAAC,uBAAU,CAAC,gBAAgB,EAAE;gBAChE,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,gBAAgB;aAC3B,CAAC,CAAC,CAAC;SACP;IACL,CAAC;CACJ;AA5CD,0EA4CC"}
|
package/lib/CORSMiddleware.d.ts
CHANGED
|
@@ -2,11 +2,25 @@ import { Middleware } from './Middleware';
|
|
|
2
2
|
import { Request } from './Request';
|
|
3
3
|
import { Response } from './Response';
|
|
4
4
|
import { IRequestResponse } from './IRequestResponse';
|
|
5
|
+
/**
|
|
6
|
+
* CORSMiddleware is used to enable CORS on APIs.
|
|
7
|
+
* It will automatically add the necessary headers necessary to
|
|
8
|
+
* communicate with CORS enabled clients.
|
|
9
|
+
*/
|
|
5
10
|
export declare class CORSMiddleware extends Middleware {
|
|
6
11
|
private $allowedOrigin;
|
|
7
12
|
private $allowedHeaders;
|
|
8
13
|
private $allowedMethods;
|
|
14
|
+
/**
|
|
15
|
+
* @constructor
|
|
16
|
+
* @param allowedOrigin The allowed origin. By default it will use the request origin.
|
|
17
|
+
* @param allowedHeaders Array of allowed headers.
|
|
18
|
+
* @param allowedMethods Array of allowed HTTP methods.
|
|
19
|
+
*/
|
|
9
20
|
constructor(allowedOrigin?: string, allowedHeaders?: Array<string>, allowedMethods?: Array<string>);
|
|
21
|
+
/**
|
|
22
|
+
* Sets the allowed origin. By default,
|
|
23
|
+
*/
|
|
10
24
|
getDefaultAllowedOrigin(): string;
|
|
11
25
|
getDefaultAllowedHeaders(): Array<string>;
|
|
12
26
|
getDefaultAllowedMethods(): Array<string>;
|
package/lib/CORSMiddleware.js
CHANGED
|
@@ -1,15 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2021 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
2
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
18
|
exports.CORSMiddleware = void 0;
|
|
4
19
|
const Middleware_1 = require("./Middleware");
|
|
5
20
|
const instance_1 = require("./instance");
|
|
21
|
+
/**
|
|
22
|
+
* CORSMiddleware is used to enable CORS on APIs.
|
|
23
|
+
* It will automatically add the necessary headers necessary to
|
|
24
|
+
* communicate with CORS enabled clients.
|
|
25
|
+
*/
|
|
6
26
|
class CORSMiddleware extends Middleware_1.Middleware {
|
|
27
|
+
/**
|
|
28
|
+
* @constructor
|
|
29
|
+
* @param allowedOrigin The allowed origin. By default it will use the request origin.
|
|
30
|
+
* @param allowedHeaders Array of allowed headers.
|
|
31
|
+
* @param allowedMethods Array of allowed HTTP methods.
|
|
32
|
+
*/
|
|
7
33
|
constructor(allowedOrigin, allowedHeaders, allowedMethods) {
|
|
8
34
|
super();
|
|
9
35
|
this.$allowedOrigin = (!allowedOrigin) ? this.getDefaultAllowedOrigin() : allowedOrigin;
|
|
10
36
|
this.$allowedHeaders = (!allowedHeaders) ? this.getDefaultAllowedHeaders() : allowedHeaders;
|
|
11
37
|
this.$allowedMethods = (!allowedMethods) ? this.getDefaultAllowedMethods() : allowedMethods;
|
|
12
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Sets the allowed origin. By default,
|
|
41
|
+
*/
|
|
13
42
|
getDefaultAllowedOrigin() {
|
|
14
43
|
return null;
|
|
15
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CORSMiddleware.js","sourceRoot":"","sources":["../src/CORSMiddleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"CORSMiddleware.js","sourceRoot":"","sources":["../src/CORSMiddleware.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,6CAAwC;AAIxC,yCAAuC;AAEvC;;;;GAIG;AACH,MAAa,cAAe,SAAQ,uBAAU;IAK1C;;;;;OAKG;IACH,YAAmB,aAAsB,EAAE,cAA8B,EAAE,cAA8B;QACrG,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACxF,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;IAChG,CAAC;IAED;;OAEG;IACI,uBAAuB;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,wBAAwB;QAC3B,OAAO;YACH,QAAQ;YACR,IAAA,sBAAW,GAAE,CAAC,SAAS,EAAE,CAAC,qBAAqB;YAC/C,kBAAkB;YAClB,cAAc;YACd,6BAA6B;SAChC,CAAC;IACN,CAAC;IAEM,wBAAwB;QAC3B,OAAO;YACH,KAAK;YACL,MAAM;YACN,MAAM;YACN,SAAS;YACT,QAAQ;YACR,KAAK;SACR,CAAC;IACN,CAAC;IAES,QAAQ,CAAC,OAAgB,EAAE,QAAkB;QACnD,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,QAAQ,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SAC1E;aACI;YACD,QAAQ,CAAC,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;SAClF;QACD,QAAQ,CAAC,SAAS,CAAC,8BAA8B,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,QAAQ,CAAC,SAAS,CAAC,8BAA8B,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC;CACJ;AA9DD,wCA8DC"}
|
package/lib/ConfigLoader.js
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/// <reference path="./defs/merge-change.d.ts" />
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.ConfigLoader = void 0;
|
|
5
|
+
/*
|
|
6
|
+
Copyright 2017-2021 Norman Breau
|
|
7
|
+
|
|
8
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
you may not use this file except in compliance with the License.
|
|
10
|
+
You may obtain a copy of the License at
|
|
11
|
+
|
|
12
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
|
|
14
|
+
Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
See the License for the specific language governing permissions and
|
|
18
|
+
limitations under the License.
|
|
19
|
+
*/
|
|
4
20
|
const instance_1 = require("./instance");
|
|
5
21
|
const logger_1 = require("@arashi/logger");
|
|
6
22
|
const Path = require("path");
|