@sectester/core 0.36.0 → 0.36.1
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/README.md +54 -67
- package/package.json +3 -6
- package/src/DefaultProjects.d.ts +7 -0
- package/src/DefaultProjects.js +28 -0
- package/src/DefaultProjects.js.map +1 -0
- package/src/Projects.d.ts +8 -0
- package/src/Projects.js +5 -0
- package/src/Projects.js.map +1 -0
- package/src/api/ApiClient.d.ts +4 -0
- package/src/api/ApiClient.js +5 -0
- package/src/api/ApiClient.js.map +1 -0
- package/src/api/FetchApiClient.d.ts +21 -0
- package/src/api/FetchApiClient.js +95 -0
- package/src/api/FetchApiClient.js.map +1 -0
- package/src/api/RateLimiter.d.ts +16 -0
- package/src/api/RateLimiter.js +72 -0
- package/src/api/RateLimiter.js.map +1 -0
- package/src/api/RetryHandler.d.ts +22 -0
- package/src/api/RetryHandler.js +74 -0
- package/src/api/RetryHandler.js.map +1 -0
- package/src/api/index.d.ts +4 -0
- package/src/api/index.js +8 -0
- package/src/api/index.js.map +1 -0
- package/src/configuration/Configuration.d.ts +10 -8
- package/src/configuration/Configuration.js +55 -19
- package/src/configuration/Configuration.js.map +1 -1
- package/src/exceptions/ApiError.d.ts +5 -0
- package/src/exceptions/ApiError.js +12 -0
- package/src/exceptions/ApiError.js.map +1 -0
- package/src/exceptions/RateLimitError.d.ts +5 -0
- package/src/exceptions/RateLimitError.js +12 -0
- package/src/exceptions/RateLimitError.js.map +1 -0
- package/src/exceptions/index.d.ts +2 -1
- package/src/exceptions/index.js +2 -1
- package/src/exceptions/index.js.map +1 -1
- package/src/index.d.ts +4 -3
- package/src/index.js +4 -4
- package/src/index.js.map +1 -1
- package/src/register.js +7 -17
- package/src/register.js.map +1 -1
- package/src/utils/index.d.ts +0 -2
- package/src/utils/index.js +0 -2
- package/src/utils/index.js.map +1 -1
- package/src/commands/Command.d.ts +0 -14
- package/src/commands/Command.js +0 -23
- package/src/commands/Command.js.map +0 -1
- package/src/commands/CommandDispatcher.d.ts +0 -5
- package/src/commands/CommandDispatcher.js +0 -5
- package/src/commands/CommandDispatcher.js.map +0 -1
- package/src/commands/HttpRequest.d.ts +0 -19
- package/src/commands/HttpRequest.js +0 -20
- package/src/commands/HttpRequest.js.map +0 -1
- package/src/commands/Message.d.ts +0 -7
- package/src/commands/Message.js +0 -15
- package/src/commands/Message.js.map +0 -1
- package/src/commands/RetryStartegy.d.ts +0 -4
- package/src/commands/RetryStartegy.js +0 -5
- package/src/commands/RetryStartegy.js.map +0 -1
- package/src/commands/index.d.ts +0 -5
- package/src/commands/index.js +0 -9
- package/src/commands/index.js.map +0 -1
- package/src/dispatchers/ExponentialBackoffRetryStrategy.d.ts +0 -13
- package/src/dispatchers/ExponentialBackoffRetryStrategy.js +0 -65
- package/src/dispatchers/ExponentialBackoffRetryStrategy.js.map +0 -1
- package/src/dispatchers/HttpCommandDispatcher.d.ts +0 -14
- package/src/dispatchers/HttpCommandDispatcher.js +0 -95
- package/src/dispatchers/HttpCommandDispatcher.js.map +0 -1
- package/src/dispatchers/HttpCommandDispatcherConfig.d.ts +0 -12
- package/src/dispatchers/HttpCommandDispatcherConfig.js +0 -5
- package/src/dispatchers/HttpCommandDispatcherConfig.js.map +0 -1
- package/src/dispatchers/index.d.ts +0 -3
- package/src/dispatchers/index.js +0 -7
- package/src/dispatchers/index.js.map +0 -1
- package/src/exceptions/HttpCommandError.d.ts +0 -9
- package/src/exceptions/HttpCommandError.js +0 -17
- package/src/exceptions/HttpCommandError.js.map +0 -1
- package/src/utils/delay.d.ts +0 -1
- package/src/utils/delay.js +0 -7
- package/src/utils/delay.js.map +0 -1
- package/src/utils/get-type-name.d.ts +0 -6
- package/src/utils/get-type-name.js +0 -11
- package/src/utils/get-type-name.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { CredentialProvider, Credentials, CredentialsOptions } from '../credenti
|
|
|
2
2
|
import { LogLevel } from '../logger';
|
|
3
3
|
export interface ConfigurationOptions {
|
|
4
4
|
hostname: string;
|
|
5
|
+
projectId?: string;
|
|
5
6
|
logLevel?: LogLevel;
|
|
6
7
|
credentials?: Credentials | CredentialsOptions;
|
|
7
8
|
credentialProviders?: CredentialProvider[];
|
|
@@ -9,23 +10,24 @@ export interface ConfigurationOptions {
|
|
|
9
10
|
export declare class Configuration {
|
|
10
11
|
private readonly SCHEMA_REGEXP;
|
|
11
12
|
private readonly HOSTNAME_NORMALIZATION_REGEXP;
|
|
13
|
+
private _fetchProjectIdPromise?;
|
|
14
|
+
private _loadCredentialsPromise?;
|
|
12
15
|
private _credentialProviders?;
|
|
13
16
|
get credentialProviders(): readonly CredentialProvider[] | undefined;
|
|
14
17
|
private _container;
|
|
15
18
|
get container(): import("tsyringe").DependencyContainer;
|
|
16
19
|
private _credentials?;
|
|
17
|
-
get credentials(): Credentials
|
|
18
|
-
private
|
|
19
|
-
get
|
|
20
|
+
get credentials(): Credentials;
|
|
21
|
+
private _projectId?;
|
|
22
|
+
get projectId(): string;
|
|
23
|
+
private _baseURL;
|
|
24
|
+
get baseURL(): string;
|
|
20
25
|
private _logLevel?;
|
|
21
26
|
get logLevel(): LogLevel | undefined;
|
|
22
|
-
/**
|
|
23
|
-
* @deprecated use {@link version} right after v1 has been released
|
|
24
|
-
*/
|
|
25
|
-
get repeaterVersion(): string;
|
|
26
27
|
get version(): string;
|
|
27
28
|
get name(): string;
|
|
28
|
-
constructor({ hostname, credentials, logLevel, credentialProviders }: ConfigurationOptions);
|
|
29
|
+
constructor({ hostname, credentials, projectId, logLevel, credentialProviders }: ConfigurationOptions);
|
|
30
|
+
fetchProjectId(): Promise<void>;
|
|
29
31
|
loadCredentials(): Promise<void>;
|
|
30
32
|
private resolveUrls;
|
|
31
33
|
}
|
|
@@ -5,6 +5,7 @@ const credentials_provider_1 = require("../credentials-provider");
|
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const logger_1 = require("../logger");
|
|
7
7
|
const package_json_1 = require("../../package.json");
|
|
8
|
+
const Projects_1 = require("../Projects");
|
|
8
9
|
const tsyringe_1 = require("tsyringe");
|
|
9
10
|
class Configuration {
|
|
10
11
|
get credentialProviders() {
|
|
@@ -14,27 +15,30 @@ class Configuration {
|
|
|
14
15
|
return this._container;
|
|
15
16
|
}
|
|
16
17
|
get credentials() {
|
|
18
|
+
if (!this._credentials) {
|
|
19
|
+
throw new Error('Please provide credentials or try to load them using `loadCredentials()`.');
|
|
20
|
+
}
|
|
17
21
|
return this._credentials;
|
|
18
22
|
}
|
|
19
|
-
get
|
|
20
|
-
|
|
23
|
+
get projectId() {
|
|
24
|
+
if (!this._projectId) {
|
|
25
|
+
throw new Error('Please provide a project ID or call `fetchProjectId()` to use the default project.');
|
|
26
|
+
}
|
|
27
|
+
return this._projectId;
|
|
28
|
+
}
|
|
29
|
+
get baseURL() {
|
|
30
|
+
return this._baseURL;
|
|
21
31
|
}
|
|
22
32
|
get logLevel() {
|
|
23
33
|
return this._logLevel;
|
|
24
34
|
}
|
|
25
|
-
/**
|
|
26
|
-
* @deprecated use {@link version} right after v1 has been released
|
|
27
|
-
*/
|
|
28
|
-
get repeaterVersion() {
|
|
29
|
-
return package_json_1.secTester.repeaterVersion;
|
|
30
|
-
}
|
|
31
35
|
get version() {
|
|
32
36
|
return package_json_1.version;
|
|
33
37
|
}
|
|
34
38
|
get name() {
|
|
35
39
|
return package_json_1.secTester.name;
|
|
36
40
|
}
|
|
37
|
-
constructor({ hostname, credentials, logLevel = logger_1.LogLevel.ERROR, credentialProviders = [new credentials_provider_1.EnvCredentialProvider()] }) {
|
|
41
|
+
constructor({ hostname, credentials, projectId, logLevel = logger_1.LogLevel.ERROR, credentialProviders = [new credentials_provider_1.EnvCredentialProvider()] }) {
|
|
38
42
|
this.SCHEMA_REGEXP = /^.+:\/\//;
|
|
39
43
|
this.HOSTNAME_NORMALIZATION_REGEXP = /^(?!(?:\w+:)?\/\/)|^\/\//;
|
|
40
44
|
this._container = tsyringe_1.container.createChildContainer();
|
|
@@ -49,19 +53,51 @@ class Configuration {
|
|
|
49
53
|
throw new Error(`Please provide 'hostname' option.`);
|
|
50
54
|
}
|
|
51
55
|
this.resolveUrls(hostname);
|
|
56
|
+
this._projectId = projectId;
|
|
52
57
|
this._logLevel = logLevel;
|
|
53
58
|
this._container.register(Configuration, { useValue: this });
|
|
54
59
|
}
|
|
60
|
+
async fetchProjectId() {
|
|
61
|
+
if (this._projectId) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!this._fetchProjectIdPromise) {
|
|
65
|
+
this._fetchProjectIdPromise = (async () => {
|
|
66
|
+
try {
|
|
67
|
+
const projects = this.container.resolve(Projects_1.Projects);
|
|
68
|
+
const { id } = await projects.getDefaultProject();
|
|
69
|
+
this._projectId = id;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this._fetchProjectIdPromise = undefined;
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
})();
|
|
76
|
+
}
|
|
77
|
+
await this._fetchProjectIdPromise;
|
|
78
|
+
}
|
|
55
79
|
async loadCredentials() {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
80
|
+
if (this._credentials) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (!this._loadCredentialsPromise) {
|
|
84
|
+
this._loadCredentialsPromise = (async () => {
|
|
85
|
+
var _a;
|
|
86
|
+
try {
|
|
87
|
+
const chain = ((_a = this.credentialProviders) !== null && _a !== void 0 ? _a : []).map(provider => provider.get());
|
|
88
|
+
const credentials = await (0, utils_1.first)(chain, val => !!val);
|
|
89
|
+
if (!credentials) {
|
|
90
|
+
throw new Error('Could not load credentials from any providers');
|
|
91
|
+
}
|
|
92
|
+
this._credentials = new credentials_provider_1.Credentials(credentials);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
this._loadCredentialsPromise = undefined;
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
})();
|
|
64
99
|
}
|
|
100
|
+
await this._loadCredentialsPromise;
|
|
65
101
|
}
|
|
66
102
|
resolveUrls(hostname) {
|
|
67
103
|
if (!this.SCHEMA_REGEXP.test(hostname)) {
|
|
@@ -74,10 +110,10 @@ class Configuration {
|
|
|
74
110
|
throw new Error(`Please make sure that you pass correct 'hostname' option.`);
|
|
75
111
|
}
|
|
76
112
|
if (['localhost', '127.0.0.1'].includes(hostname)) {
|
|
77
|
-
this.
|
|
113
|
+
this._baseURL = `http://${hostname}:8000`;
|
|
78
114
|
}
|
|
79
115
|
else {
|
|
80
|
-
this.
|
|
116
|
+
this._baseURL = `https://${hostname}`;
|
|
81
117
|
}
|
|
82
118
|
}
|
|
83
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/configuration/Configuration.ts"],"names":[],"mappings":";;;AAAA,kEAKiC;AACjC,oCAAiC;AACjC,sCAAqC;AACrC,qDAAwD;AACxD,uCAAqC;
|
|
1
|
+
{"version":3,"file":"Configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/configuration/Configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiError = void 0;
|
|
4
|
+
const SecTesterError_1 = require("./SecTesterError");
|
|
5
|
+
class ApiError extends SecTesterError_1.SecTesterError {
|
|
6
|
+
constructor(response, message) {
|
|
7
|
+
super(message !== null && message !== void 0 ? message : `API request failed with status ${response.status}`);
|
|
8
|
+
this.response = response;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ApiError = ApiError;
|
|
12
|
+
//# sourceMappingURL=ApiError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiError.js","sourceRoot":"","sources":["../../../../../packages/core/src/exceptions/ApiError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,QAAS,SAAQ,+BAAc;IAC1C,YACkB,QAAkB,EAClC,OAAgB;QAEhB,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,kCAAkC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAHtD,aAAQ,GAAR,QAAQ,CAAU;IAIpC,CAAC;CACF;AAPD,4BAOC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RateLimitError = void 0;
|
|
4
|
+
const ApiError_1 = require("./ApiError");
|
|
5
|
+
class RateLimitError extends ApiError_1.ApiError {
|
|
6
|
+
constructor(response, retryAfter, message = `Rate limited, retry after ${retryAfter} seconds`) {
|
|
7
|
+
super(response, message);
|
|
8
|
+
this.retryAfter = retryAfter;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.RateLimitError = RateLimitError;
|
|
12
|
+
//# sourceMappingURL=RateLimitError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitError.js","sourceRoot":"","sources":["../../../../../packages/core/src/exceptions/RateLimitError.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC,MAAa,cAAe,SAAQ,mBAAQ;IAC1C,YACE,QAAkB,EACF,UAAkB,EAClC,UAAkB,6BAA6B,UAAU,UAAU;QAEnE,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAHT,eAAU,GAAV,UAAU,CAAQ;IAIpC,CAAC;CACF;AARD,wCAQC"}
|
package/src/exceptions/index.js
CHANGED
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./SecTesterError"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./
|
|
5
|
+
tslib_1.__exportStar(require("./ApiError"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./RateLimitError"), exports);
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/exceptions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/exceptions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,qDAA2B;AAC3B,2DAAiC"}
|
package/src/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import './register';
|
|
3
|
-
export * from './
|
|
3
|
+
export * from './api';
|
|
4
4
|
export * from './configuration';
|
|
5
5
|
export * from './credentials-provider';
|
|
6
|
-
export * from './dispatchers';
|
|
7
6
|
export * from './exceptions';
|
|
8
7
|
export * from './logger';
|
|
9
|
-
export
|
|
8
|
+
export * from './DefaultProjects';
|
|
9
|
+
export * from './Projects';
|
|
10
|
+
export { NumBoundaries, checkBoundaries, contains, isBoolean, isDate, isFormData, isNumber, isObject, isPresent, isStream, isString, isURLSearchParams, truncate } from './utils';
|
package/src/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.truncate = exports.isURLSearchParams = exports.isString = exports.isStream = exports.isPresent = exports.isObject = exports.isNumber = exports.isFormData = exports.isDate = exports.isBoolean = exports.
|
|
3
|
+
exports.truncate = exports.isURLSearchParams = exports.isString = exports.isStream = exports.isPresent = exports.isObject = exports.isNumber = exports.isFormData = exports.isDate = exports.isBoolean = exports.contains = exports.checkBoundaries = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
require("reflect-metadata");
|
|
6
6
|
require("./register");
|
|
7
|
-
tslib_1.__exportStar(require("./
|
|
7
|
+
tslib_1.__exportStar(require("./api"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./configuration"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./credentials-provider"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./dispatchers"), exports);
|
|
11
10
|
tslib_1.__exportStar(require("./exceptions"), exports);
|
|
12
11
|
tslib_1.__exportStar(require("./logger"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./DefaultProjects"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./Projects"), exports);
|
|
13
14
|
var utils_1 = require("./utils");
|
|
14
15
|
Object.defineProperty(exports, "checkBoundaries", { enumerable: true, get: function () { return utils_1.checkBoundaries; } });
|
|
15
16
|
Object.defineProperty(exports, "contains", { enumerable: true, get: function () { return utils_1.contains; } });
|
|
16
|
-
Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return utils_1.delay; } });
|
|
17
17
|
Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function () { return utils_1.isBoolean; } });
|
|
18
18
|
Object.defineProperty(exports, "isDate", { enumerable: true, get: function () { return utils_1.isDate; } });
|
|
19
19
|
Object.defineProperty(exports, "isFormData", { enumerable: true, get: function () { return utils_1.isFormData; } });
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":";;;;AAAA,4BAA0B;AAC1B,sBAAoB;AAEpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":";;;;AAAA,4BAA0B;AAC1B,sBAAoB;AAEpB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,uDAA6B;AAC7B,mDAAyB;AACzB,4DAAkC;AAClC,qDAA2B;AAC3B,iCAciB;AAZf,wGAAA,eAAe,OAAA;AACf,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,+FAAA,MAAM,OAAA;AACN,mGAAA,UAAU,OAAA;AACV,iGAAA,QAAQ,OAAA;AACR,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,iGAAA,QAAQ,OAAA;AACR,iGAAA,QAAQ,OAAA;AACR,0GAAA,iBAAiB,OAAA;AACjB,iGAAA,QAAQ,OAAA"}
|
package/src/register.js
CHANGED
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const api_1 = require("./api");
|
|
4
4
|
const configuration_1 = require("./configuration");
|
|
5
|
-
const dispatchers_1 = require("./dispatchers");
|
|
6
5
|
const logger_1 = require("./logger");
|
|
7
6
|
const tsyringe_1 = require("tsyringe");
|
|
8
|
-
tsyringe_1.container.register(commands_1.RetryStrategy, {
|
|
9
|
-
useFactory() {
|
|
10
|
-
return new dispatchers_1.ExponentialBackoffRetryStrategy({ maxDepth: 5 });
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
7
|
tsyringe_1.container.register(logger_1.Logger, {
|
|
14
8
|
useFactory: (0, tsyringe_1.instancePerContainerCachingFactory)((child) => child.isRegistered(configuration_1.Configuration, true)
|
|
15
9
|
? new logger_1.Logger(child.resolve(configuration_1.Configuration).logLevel)
|
|
16
10
|
: new logger_1.Logger())
|
|
17
11
|
});
|
|
18
|
-
tsyringe_1.container.register(
|
|
19
|
-
tsyringe_1.container.register(dispatchers_1.HttpCommandDispatcherConfig, {
|
|
12
|
+
tsyringe_1.container.register(api_1.ApiClient, {
|
|
20
13
|
useFactory(childContainer) {
|
|
21
14
|
const configuration = childContainer.resolve(configuration_1.Configuration);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
baseUrl: configuration.api,
|
|
28
|
-
token: configuration.credentials.token
|
|
29
|
-
};
|
|
15
|
+
return new api_1.FetchApiClient({
|
|
16
|
+
baseUrl: configuration.baseURL,
|
|
17
|
+
apiKey: configuration.credentials.token,
|
|
18
|
+
userAgent: `${configuration.name}/${configuration.version}`
|
|
19
|
+
});
|
|
30
20
|
}
|
|
31
21
|
});
|
|
32
22
|
//# sourceMappingURL=register.js.map
|
package/src/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../packages/core/src/register.ts"],"names":[],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../packages/core/src/register.ts"],"names":[],"mappings":";;AAAA,+BAAkD;AAClD,mDAAgD;AAChD,qCAAkC;AAClC,uCAIkB;AAElB,oBAAS,CAAC,QAAQ,CAAC,eAAM,EAAE;IACzB,UAAU,EAAE,IAAA,6CAAkC,EAC5C,CAAC,KAA0B,EAAE,EAAE,CAC7B,KAAK,CAAC,YAAY,CAAC,6BAAa,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC,IAAI,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,6BAAa,CAAC,CAAC,QAAQ,CAAC;QACnD,CAAC,CAAC,IAAI,eAAM,EAAE,CACnB;CACF,CAAC,CAAC;AAEH,oBAAS,CAAC,QAAQ,CAAC,eAAS,EAAE;IAC5B,UAAU,CAAC,cAAmC;QAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,6BAAa,CAAC,CAAC;QAE5D,OAAO,IAAI,oBAAc,CAAC;YACxB,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK;YACvC,SAAS,EAAE,GAAG,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
package/src/utils/index.d.ts
CHANGED
package/src/utils/index.js
CHANGED
|
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./check-boundaries"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./contains"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./delay"), exports);
|
|
7
6
|
tslib_1.__exportStar(require("./first"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./get-type-name"), exports);
|
|
9
7
|
tslib_1.__exportStar(require("./truncate"), exports);
|
|
10
8
|
tslib_1.__exportStar(require("./types"), exports);
|
|
11
9
|
//# sourceMappingURL=index.js.map
|
package/src/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,qDAA2B;AAC3B,kDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,qDAA2B;AAC3B,kDAAwB;AACxB,qDAA2B;AAC3B,kDAAwB"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CommandDispatcher } from './CommandDispatcher';
|
|
2
|
-
import { Message } from './Message';
|
|
3
|
-
export declare abstract class Command<T, R> extends Message<T> {
|
|
4
|
-
readonly expectReply: boolean;
|
|
5
|
-
readonly ttl: number;
|
|
6
|
-
protected constructor(payload: T, options?: {
|
|
7
|
-
expectReply?: boolean;
|
|
8
|
-
ttl?: number;
|
|
9
|
-
type?: string;
|
|
10
|
-
correlationId?: string;
|
|
11
|
-
createdAt?: Date;
|
|
12
|
-
});
|
|
13
|
-
execute(dispatcher: CommandDispatcher): Promise<R | undefined>;
|
|
14
|
-
}
|
package/src/commands/Command.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Command = void 0;
|
|
4
|
-
const Message_1 = require("./Message");
|
|
5
|
-
class Command extends Message_1.Message {
|
|
6
|
-
constructor(payload, options = {}) {
|
|
7
|
-
super(payload, options.type, options.correlationId, options.createdAt);
|
|
8
|
-
this.expectReply = true;
|
|
9
|
-
this.ttl = 10000;
|
|
10
|
-
const { expectReply, ttl } = options;
|
|
11
|
-
if (typeof expectReply === 'boolean') {
|
|
12
|
-
this.expectReply = expectReply;
|
|
13
|
-
}
|
|
14
|
-
if (typeof ttl === 'number' && ttl > 0) {
|
|
15
|
-
this.ttl = ttl;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
execute(dispatcher) {
|
|
19
|
-
return dispatcher.execute(this);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.Command = Command;
|
|
23
|
-
//# sourceMappingURL=Command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../../../packages/core/src/commands/Command.ts"],"names":[],"mappings":";;;AACA,uCAAoC;AAEpC,MAAsB,OAAc,SAAQ,iBAAU;IAIpD,YACE,OAAU,EACV,UAMI,EAAE;QAEN,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAbzD,gBAAW,GAAY,IAAI,CAAC;QAC5B,QAAG,GAAW,KAAK,CAAC;QAclC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACrC,IAAI,OAAO,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,UAA6B;QAC1C,OAAO,UAAU,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AA7BD,0BA6BC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommandDispatcher.js","sourceRoot":"","sources":["../../../../../packages/core/src/commands/CommandDispatcher.ts"],"names":[],"mappings":";;;AAMa,QAAA,iBAAiB,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Command } from './Command';
|
|
2
|
-
import { Method } from 'axios';
|
|
3
|
-
export interface HttpOptions<T> {
|
|
4
|
-
url: string;
|
|
5
|
-
payload: T;
|
|
6
|
-
method?: Method;
|
|
7
|
-
expectReply?: boolean;
|
|
8
|
-
ttl?: number;
|
|
9
|
-
type?: string;
|
|
10
|
-
correlationId?: string;
|
|
11
|
-
params?: Record<string, unknown>;
|
|
12
|
-
createdAt?: Date;
|
|
13
|
-
}
|
|
14
|
-
export declare class HttpRequest<T = undefined, R = void> extends Command<T, R> {
|
|
15
|
-
readonly method: Method;
|
|
16
|
-
readonly url: string;
|
|
17
|
-
readonly params?: Record<string, unknown>;
|
|
18
|
-
constructor({ payload, expectReply, ttl, type, params, correlationId, createdAt, url, method }: HttpOptions<T>);
|
|
19
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpRequest = void 0;
|
|
4
|
-
const Command_1 = require("./Command");
|
|
5
|
-
class HttpRequest extends Command_1.Command {
|
|
6
|
-
constructor({ payload, expectReply, ttl, type, params, correlationId, createdAt, url = '/', method = 'GET' }) {
|
|
7
|
-
super(payload, { expectReply, ttl, type, correlationId, createdAt });
|
|
8
|
-
if (typeof url !== 'string') {
|
|
9
|
-
throw new TypeError('`url` must be string. Please provide a valid URL or path that will be used for the command.');
|
|
10
|
-
}
|
|
11
|
-
this.url = url;
|
|
12
|
-
if (typeof method !== 'string') {
|
|
13
|
-
throw new TypeError('`method` must be string. Please provide a valid HTTP method that will be used for the command.');
|
|
14
|
-
}
|
|
15
|
-
this.method = method;
|
|
16
|
-
this.params = params;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.HttpRequest = HttpRequest;
|
|
20
|
-
//# sourceMappingURL=HttpRequest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HttpRequest.js","sourceRoot":"","sources":["../../../../../packages/core/src/commands/HttpRequest.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAepC,MAAa,WAAqC,SAAQ,iBAAa;IAKrE,YAAY,EACV,OAAO,EACP,WAAW,EACX,GAAG,EACH,IAAI,EACJ,MAAM,EACN,aAAa,EACb,SAAS,EACT,GAAG,GAAG,GAAG,EACT,MAAM,GAAG,KAAK,EACC;QACf,KAAK,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;QAErE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CACjB,6FAA6F,CAC9F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,gGAAgG,CACjG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAnCD,kCAmCC"}
|
package/src/commands/Message.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Message = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
const uuid_1 = require("uuid");
|
|
6
|
-
class Message {
|
|
7
|
-
constructor(payload, type, correlationId, createdAt) {
|
|
8
|
-
this.payload = payload;
|
|
9
|
-
this.type = type || (0, utils_1.getTypeName)(this);
|
|
10
|
-
this.correlationId = correlationId || (0, uuid_1.v4)();
|
|
11
|
-
this.createdAt = createdAt || new Date();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.Message = Message;
|
|
15
|
-
//# sourceMappingURL=Message.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../../../packages/core/src/commands/Message.ts"],"names":[],"mappings":";;;AAAA,oCAAuC;AACvC,+BAA0B;AAE1B,MAAsB,OAAO;IAK3B,YACkB,OAAU,EAC1B,IAAa,EACb,aAAsB,EACtB,SAAgB;QAHA,YAAO,GAAP,OAAO,CAAG;QAK1B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAA,SAAE,GAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;IAC3C,CAAC;CACF;AAfD,0BAeC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RetryStartegy.js","sourceRoot":"","sources":["../../../../../packages/core/src/commands/RetryStartegy.ts"],"names":[],"mappings":";;;AAMa,QAAA,aAAa,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAC"}
|
package/src/commands/index.d.ts
DELETED
package/src/commands/index.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./Command"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./CommandDispatcher"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./HttpRequest"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./Message"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./RetryStartegy"), exports);
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/commands/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,8DAAoC;AACpC,wDAA8B;AAC9B,oDAA0B;AAC1B,0DAAgC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { RetryStrategy } from '../commands';
|
|
2
|
-
export interface ExponentialBackoffOptions {
|
|
3
|
-
maxDepth: number;
|
|
4
|
-
}
|
|
5
|
-
export declare class ExponentialBackoffRetryStrategy implements RetryStrategy {
|
|
6
|
-
private readonly options;
|
|
7
|
-
private readonly RETRYABLE_AMQP_CODES;
|
|
8
|
-
private readonly RETRYABLE_HTTP_METHODS;
|
|
9
|
-
private readonly RETRYABLE_CODES;
|
|
10
|
-
constructor(options: ExponentialBackoffOptions);
|
|
11
|
-
acquire<T extends (...args: unknown[]) => unknown>(task: T): Promise<ReturnType<T>>;
|
|
12
|
-
private shouldRetry;
|
|
13
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExponentialBackoffRetryStrategy = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const tsyringe_1 = require("tsyringe");
|
|
7
|
-
let ExponentialBackoffRetryStrategy = class ExponentialBackoffRetryStrategy {
|
|
8
|
-
constructor(options) {
|
|
9
|
-
this.options = options;
|
|
10
|
-
this.RETRYABLE_AMQP_CODES = new Set([
|
|
11
|
-
311, 312, 313, 320, 404, 405, 406, 502, 503, 504, 505, 506
|
|
12
|
-
]);
|
|
13
|
-
this.RETRYABLE_HTTP_METHODS = new Set([
|
|
14
|
-
'get',
|
|
15
|
-
'head',
|
|
16
|
-
'options',
|
|
17
|
-
'put',
|
|
18
|
-
'delete'
|
|
19
|
-
]);
|
|
20
|
-
this.RETRYABLE_CODES = new Set([
|
|
21
|
-
'ECONNRESET',
|
|
22
|
-
'ETIMEDOUT',
|
|
23
|
-
'ECONNREFUSED',
|
|
24
|
-
'ENETUNREACH',
|
|
25
|
-
'ENOTFOUND',
|
|
26
|
-
'EADDRINUSE',
|
|
27
|
-
'EHOSTUNREACH',
|
|
28
|
-
'EPIPE',
|
|
29
|
-
'EAI_AGAIN'
|
|
30
|
-
]);
|
|
31
|
-
}
|
|
32
|
-
async acquire(task) {
|
|
33
|
-
let depth = 0;
|
|
34
|
-
for (;;) {
|
|
35
|
-
try {
|
|
36
|
-
return (await task());
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
depth++;
|
|
40
|
-
// eslint-disable-next-line max-depth
|
|
41
|
-
if (!this.shouldRetry(e) || depth > this.options.maxDepth) {
|
|
42
|
-
throw e;
|
|
43
|
-
}
|
|
44
|
-
await (0, utils_1.delay)(2 ** depth * 50);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
shouldRetry(err) {
|
|
49
|
-
const code = err.code;
|
|
50
|
-
if (typeof code === 'string') {
|
|
51
|
-
return this.RETRYABLE_CODES.has(code);
|
|
52
|
-
}
|
|
53
|
-
if (typeof code === 'number') {
|
|
54
|
-
return this.RETRYABLE_AMQP_CODES.has(+code);
|
|
55
|
-
}
|
|
56
|
-
const { status = 200, method = 'get' } = err;
|
|
57
|
-
return (status >= 500 && this.RETRYABLE_HTTP_METHODS.has(method.toLowerCase()));
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
exports.ExponentialBackoffRetryStrategy = ExponentialBackoffRetryStrategy;
|
|
61
|
-
exports.ExponentialBackoffRetryStrategy = ExponentialBackoffRetryStrategy = tslib_1.__decorate([
|
|
62
|
-
(0, tsyringe_1.injectable)(),
|
|
63
|
-
tslib_1.__metadata("design:paramtypes", [Object])
|
|
64
|
-
], ExponentialBackoffRetryStrategy);
|
|
65
|
-
//# sourceMappingURL=ExponentialBackoffRetryStrategy.js.map
|