@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.
Files changed (82) hide show
  1. package/README.md +54 -67
  2. package/package.json +3 -6
  3. package/src/DefaultProjects.d.ts +7 -0
  4. package/src/DefaultProjects.js +28 -0
  5. package/src/DefaultProjects.js.map +1 -0
  6. package/src/Projects.d.ts +8 -0
  7. package/src/Projects.js +5 -0
  8. package/src/Projects.js.map +1 -0
  9. package/src/api/ApiClient.d.ts +4 -0
  10. package/src/api/ApiClient.js +5 -0
  11. package/src/api/ApiClient.js.map +1 -0
  12. package/src/api/FetchApiClient.d.ts +21 -0
  13. package/src/api/FetchApiClient.js +95 -0
  14. package/src/api/FetchApiClient.js.map +1 -0
  15. package/src/api/RateLimiter.d.ts +16 -0
  16. package/src/api/RateLimiter.js +72 -0
  17. package/src/api/RateLimiter.js.map +1 -0
  18. package/src/api/RetryHandler.d.ts +22 -0
  19. package/src/api/RetryHandler.js +74 -0
  20. package/src/api/RetryHandler.js.map +1 -0
  21. package/src/api/index.d.ts +4 -0
  22. package/src/api/index.js +8 -0
  23. package/src/api/index.js.map +1 -0
  24. package/src/configuration/Configuration.d.ts +10 -8
  25. package/src/configuration/Configuration.js +55 -19
  26. package/src/configuration/Configuration.js.map +1 -1
  27. package/src/exceptions/ApiError.d.ts +5 -0
  28. package/src/exceptions/ApiError.js +12 -0
  29. package/src/exceptions/ApiError.js.map +1 -0
  30. package/src/exceptions/RateLimitError.d.ts +5 -0
  31. package/src/exceptions/RateLimitError.js +12 -0
  32. package/src/exceptions/RateLimitError.js.map +1 -0
  33. package/src/exceptions/index.d.ts +2 -1
  34. package/src/exceptions/index.js +2 -1
  35. package/src/exceptions/index.js.map +1 -1
  36. package/src/index.d.ts +4 -3
  37. package/src/index.js +4 -4
  38. package/src/index.js.map +1 -1
  39. package/src/register.js +7 -17
  40. package/src/register.js.map +1 -1
  41. package/src/utils/index.d.ts +0 -2
  42. package/src/utils/index.js +0 -2
  43. package/src/utils/index.js.map +1 -1
  44. package/src/commands/Command.d.ts +0 -14
  45. package/src/commands/Command.js +0 -23
  46. package/src/commands/Command.js.map +0 -1
  47. package/src/commands/CommandDispatcher.d.ts +0 -5
  48. package/src/commands/CommandDispatcher.js +0 -5
  49. package/src/commands/CommandDispatcher.js.map +0 -1
  50. package/src/commands/HttpRequest.d.ts +0 -19
  51. package/src/commands/HttpRequest.js +0 -20
  52. package/src/commands/HttpRequest.js.map +0 -1
  53. package/src/commands/Message.d.ts +0 -7
  54. package/src/commands/Message.js +0 -15
  55. package/src/commands/Message.js.map +0 -1
  56. package/src/commands/RetryStartegy.d.ts +0 -4
  57. package/src/commands/RetryStartegy.js +0 -5
  58. package/src/commands/RetryStartegy.js.map +0 -1
  59. package/src/commands/index.d.ts +0 -5
  60. package/src/commands/index.js +0 -9
  61. package/src/commands/index.js.map +0 -1
  62. package/src/dispatchers/ExponentialBackoffRetryStrategy.d.ts +0 -13
  63. package/src/dispatchers/ExponentialBackoffRetryStrategy.js +0 -65
  64. package/src/dispatchers/ExponentialBackoffRetryStrategy.js.map +0 -1
  65. package/src/dispatchers/HttpCommandDispatcher.d.ts +0 -14
  66. package/src/dispatchers/HttpCommandDispatcher.js +0 -95
  67. package/src/dispatchers/HttpCommandDispatcher.js.map +0 -1
  68. package/src/dispatchers/HttpCommandDispatcherConfig.d.ts +0 -12
  69. package/src/dispatchers/HttpCommandDispatcherConfig.js +0 -5
  70. package/src/dispatchers/HttpCommandDispatcherConfig.js.map +0 -1
  71. package/src/dispatchers/index.d.ts +0 -3
  72. package/src/dispatchers/index.js +0 -7
  73. package/src/dispatchers/index.js.map +0 -1
  74. package/src/exceptions/HttpCommandError.d.ts +0 -9
  75. package/src/exceptions/HttpCommandError.js +0 -17
  76. package/src/exceptions/HttpCommandError.js.map +0 -1
  77. package/src/utils/delay.d.ts +0 -1
  78. package/src/utils/delay.js +0 -7
  79. package/src/utils/delay.js.map +0 -1
  80. package/src/utils/get-type-name.d.ts +0 -6
  81. package/src/utils/get-type-name.js +0 -11
  82. 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 | undefined;
18
- private _api;
19
- get api(): string;
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 api() {
20
- return this._api;
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
- var _a;
57
- if (!this.credentials) {
58
- const chain = ((_a = this.credentialProviders) !== null && _a !== void 0 ? _a : []).map(provider => provider.get());
59
- const credentials = await (0, utils_1.first)(chain, val => !!val);
60
- if (!credentials) {
61
- throw new Error('Could not load credentials from any providers');
62
- }
63
- this._credentials = new credentials_provider_1.Credentials(credentials);
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._api = `http://${hostname}:8000`;
113
+ this._baseURL = `http://${hostname}:8000`;
78
114
  }
79
115
  else {
80
- this._api = `https://${hostname}`;
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":"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"}
1
+ {"version":3,"file":"Configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/configuration/Configuration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { SecTesterError } from './SecTesterError';
2
+ export declare class ApiError extends SecTesterError {
3
+ readonly response: Response;
4
+ constructor(response: Response, message?: string);
5
+ }
@@ -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,5 @@
1
+ import { ApiError } from './ApiError';
2
+ export declare class RateLimitError extends ApiError {
3
+ readonly retryAfter: number;
4
+ constructor(response: Response, retryAfter: number, message?: string);
5
+ }
@@ -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"}
@@ -1,2 +1,3 @@
1
1
  export * from './SecTesterError';
2
- export * from './HttpCommandError';
2
+ export * from './ApiError';
3
+ export * from './RateLimitError';
@@ -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("./HttpCommandError"), exports);
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,6DAAmC"}
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 './commands';
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 { NumBoundaries, checkBoundaries, contains, delay, isBoolean, isDate, isFormData, isNumber, isObject, isPresent, isStream, isString, isURLSearchParams, truncate } from './utils';
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.delay = exports.contains = exports.checkBoundaries = void 0;
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("./commands"), exports);
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,qDAA2B;AAC3B,0DAAgC;AAChC,iEAAuC;AACvC,wDAA8B;AAC9B,uDAA6B;AAC7B,mDAAyB;AACzB,iCAeiB;AAbf,wGAAA,eAAe,OAAA;AACf,iGAAA,QAAQ,OAAA;AACR,8FAAA,KAAK,OAAA;AACL,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"}
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 commands_1 = require("./commands");
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(commands_1.CommandDispatcher, { useClass: dispatchers_1.HttpCommandDispatcher });
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
- if (!configuration.credentials) {
23
- throw new Error('Please provide credentials to establish a connection with the dispatcher.');
24
- }
25
- return {
26
- timeout: 10000,
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
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../packages/core/src/register.ts"],"names":[],"mappings":";;AAAA,yCAA8D;AAC9D,mDAAgD;AAChD,+CAIuB;AACvB,qCAAkC;AAClC,uCAIkB;AAElB,oBAAS,CAAC,QAAQ,CAAC,wBAAa,EAAE;IAChC,UAAU;QACR,OAAO,IAAI,6CAA+B,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC,CAAC;AAEH,oBAAS,CAAC,QAAQ,CAAC,eAAM,EAAE;IACzB,UAAU,EAAE,IAAA,6CAAkC,EAAC,CAAC,KAA0B,EAAE,EAAE,CAC5E,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,CACjB;CACF,CAAC,CAAC;AAEH,oBAAS,CAAC,QAAQ,CAAC,4BAAiB,EAAE,EAAE,QAAQ,EAAE,mCAAqB,EAAE,CAAC,CAAC;AAE3E,oBAAS,CAAC,QAAQ,CAAC,yCAA2B,EAAE;IAC9C,UAAU,CAAC,cAAmC;QAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,6BAAa,CAAC,CAAC;QAE5D,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,aAAa,CAAC,GAAG;YAC1B,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK;SACvC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
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"}
@@ -1,7 +1,5 @@
1
1
  export * from './check-boundaries';
2
2
  export * from './contains';
3
- export * from './delay';
4
3
  export * from './first';
5
- export * from './get-type-name';
6
4
  export * from './truncate';
7
5
  export * from './types';
@@ -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
@@ -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,kDAAwB;AACxB,0DAAgC;AAChC,qDAA2B;AAC3B,kDAAwB"}
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
- }
@@ -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,5 +0,0 @@
1
- import { Command } from './Command';
2
- export interface CommandDispatcher {
3
- execute<T, R>(command: Command<T, R>): Promise<R | undefined>;
4
- }
5
- export declare const CommandDispatcher: unique symbol;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommandDispatcher = void 0;
4
- exports.CommandDispatcher = Symbol('CommandDispatcher');
5
- //# sourceMappingURL=CommandDispatcher.js.map
@@ -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"}
@@ -1,7 +0,0 @@
1
- export declare abstract class Message<T> {
2
- readonly payload: T;
3
- readonly type: string;
4
- readonly correlationId: string;
5
- readonly createdAt: Date;
6
- protected constructor(payload: T, type?: string, correlationId?: string, createdAt?: Date);
7
- }
@@ -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,4 +0,0 @@
1
- export interface RetryStrategy {
2
- acquire<T extends (...args: unknown[]) => unknown>(task: T): Promise<ReturnType<T>>;
3
- }
4
- export declare const RetryStrategy: unique symbol;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RetryStrategy = void 0;
4
- exports.RetryStrategy = Symbol('RetryStrategy');
5
- //# sourceMappingURL=RetryStartegy.js.map
@@ -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"}
@@ -1,5 +0,0 @@
1
- export * from './Command';
2
- export * from './CommandDispatcher';
3
- export * from './HttpRequest';
4
- export * from './Message';
5
- export * from './RetryStartegy';
@@ -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