@betterview/integration-toolkit 7.7.0 → 7.8.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.
@@ -1,6 +1,7 @@
1
1
  import { AxiosRequestConfig } from 'axios';
2
+ import { RateLimiter } from 'types/RateLimiter';
2
3
  import { IntegrationMetrics, MetricsMeter } from '../types/Metrics';
3
- import { INetworkIntegrationDetails } from '../types/Network';
4
+ import { INetworkIntegrationDetails, RateLimitPolicy } from '../types/Network';
4
5
  import { IRetryPolicy, IWrapResult } from './axios-error-handling';
5
6
  export declare function get<T = Record<string, any>>(url: string, config?: AxiosRequestConfig, retryPolicy?: IRetryPolicy): Promise<{
6
7
  request_url: string;
@@ -14,12 +15,13 @@ export default class Network {
14
15
  protected meter: MetricsMeter;
15
16
  protected details: INetworkIntegrationDetails;
16
17
  protected metrics: IntegrationMetrics;
17
- constructor(meter: MetricsMeter, details: INetworkIntegrationDetails);
18
+ protected rateLimiter?: RateLimiter;
19
+ constructor(meter: MetricsMeter, details: INetworkIntegrationDetails, rateLimiter?: RateLimiter);
18
20
  static get<T = Record<string, any>>(url: string, config?: AxiosRequestConfig, retryPolicy?: IRetryPolicy): Promise<{
19
21
  request_url: string;
20
22
  result: IWrapResult<T>;
21
23
  }>;
22
- get<T = Record<string, any>>(url: string, config?: AxiosRequestConfig, retryPolicy?: IRetryPolicy): Promise<{
24
+ get<T = Record<string, any>>(url: string, config?: AxiosRequestConfig, retryPolicy?: IRetryPolicy, rateLimitPolicy?: RateLimitPolicy): Promise<{
23
25
  request_url: string;
24
26
  result: IWrapResult<T>;
25
27
  }>;
@@ -27,10 +29,11 @@ export default class Network {
27
29
  request_url: string;
28
30
  result: IWrapResult<U>;
29
31
  }>;
30
- post<T = any, U = Record<string, any>>(url: string, data: T, config?: AxiosRequestConfig, retryPolicy?: IRetryPolicy): Promise<{
32
+ post<T = any, U = Record<string, any>>(url: string, data: T, config?: AxiosRequestConfig, retryPolicy?: IRetryPolicy, rateLimitPolicy?: RateLimitPolicy): Promise<{
31
33
  request_url: string;
32
34
  result: IWrapResult<U>;
33
35
  }>;
36
+ private processRateLimit;
34
37
  private recordMetrics;
35
38
  }
36
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Network/index.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAA4B,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAQ,MAAM,wBAAwB,CAAC;AAEzE,wBAAsB,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/C,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAE1D;AAED,wBAAsB,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAE1D;AAED,MAAM,CAAC,OAAO,OAAO,OAAO;IAGd,SAAS,CAAC,KAAK,EAAE,YAAY;IAAE,SAAS,CAAC,OAAO,EAAE,0BAA0B;IAFxF,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEhB,KAAK,EAAE,YAAY,EAAY,OAAO,EAAE,0BAA0B;WAI3E,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAK9C,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;WAO9C,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAK9C,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAO3D,OAAO,CAAC,aAAa;CAgCtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Network/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.post = exports.get = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const Metrics_1 = require("../types/Metrics");
9
+ const utils_1 = require("../utils");
9
10
  const axios_error_handling_1 = require("./axios-error-handling");
10
11
  async function get(url, config, retryPolicy) {
11
12
  return Network.get(url, config, retryPolicy);
@@ -19,17 +20,20 @@ class Network {
19
20
  meter;
20
21
  details;
21
22
  metrics;
22
- constructor(meter, details) {
23
+ rateLimiter;
24
+ constructor(meter, details, rateLimiter) {
23
25
  this.meter = meter;
24
26
  this.details = details;
25
27
  this.metrics = new Metrics_1.IntegrationMetrics(meter);
28
+ this.rateLimiter = rateLimiter;
26
29
  }
27
30
  static async get(url, config, retryPolicy) {
28
31
  const result = await (0, axios_error_handling_1.wrap)(axios_1.default.get(url, config), retryPolicy);
29
32
  return { request_url: url, result };
30
33
  }
31
- async get(url, config, retryPolicy) {
34
+ async get(url, config, retryPolicy, rateLimitPolicy) {
32
35
  const timer = this.metrics?.startTimer();
36
+ await this.processRateLimit(rateLimitPolicy);
33
37
  const response = await Network.get(url, config, retryPolicy);
34
38
  this.recordMetrics(url, response.result, timer?.end());
35
39
  return response;
@@ -38,12 +42,27 @@ class Network {
38
42
  const result = await (0, axios_error_handling_1.wrap)(axios_1.default.post(url, data, config), retryPolicy);
39
43
  return { request_url: url, result };
40
44
  }
41
- async post(url, data, config, retryPolicy) {
45
+ async post(url, data, config, retryPolicy, rateLimitPolicy) {
42
46
  const timer = this.metrics?.startTimer();
47
+ await this.processRateLimit(rateLimitPolicy);
43
48
  const response = await Network.post(url, data, config, retryPolicy);
44
49
  this.recordMetrics(url, response.result, timer?.end());
45
50
  return response;
46
51
  }
52
+ async processRateLimit(policy) {
53
+ if (!policy || !this.rateLimiter)
54
+ return;
55
+ let attempts = 0;
56
+ do {
57
+ const calls = await this.rateLimiter.incrementRateLimitPerSecond(policy.key, attempts);
58
+ if (calls <= policy.maxCallsPerSecond)
59
+ break;
60
+ await (0, utils_1.sleep)(policy.retryWaitMs);
61
+ } while (++attempts < policy.retryTimes);
62
+ if (attempts === policy.retryTimes) {
63
+ throw new Error(`Rate limit exceeded for key ${policy.key}`);
64
+ }
65
+ }
47
66
  recordMetrics(requestUrl, result, duration) {
48
67
  if (!this.metrics)
49
68
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Network/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Network/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { INetworkIntegrationDetails, IntegrationEventName, Storage } from '.';
1
+ import { INetworkIntegrationDetails, IntegrationEventName, RateLimiter, Storage } from '.';
2
2
  import Network from '../Network';
3
3
  import { MetricsMeter } from './Metrics';
4
4
  export declare type Command<T, U> = (data?: T, options?: Record<string, string>) => Promise<U>;
@@ -11,10 +11,11 @@ export declare class Integration {
11
11
  protected storage?: Storage | undefined;
12
12
  protected meter?: MetricsMeter | undefined;
13
13
  protected details?: INetworkIntegrationDetails | undefined;
14
+ protected rateLimiter?: RateLimiter | undefined;
14
15
  private commands;
15
16
  private events;
16
17
  protected network: Network;
17
- constructor(credentials?: Record<string, string> | undefined, options?: Record<string, string> | undefined, storage?: Storage | undefined, meter?: MetricsMeter | undefined, details?: INetworkIntegrationDetails | undefined);
18
+ constructor(credentials?: Record<string, string> | undefined, options?: Record<string, string> | undefined, storage?: Storage | undefined, meter?: MetricsMeter | undefined, details?: INetworkIntegrationDetails | undefined, rateLimiter?: RateLimiter | undefined);
18
19
  /**
19
20
  * Initializer for the class. This will be called once per instance of the integration. Multiple instances
20
21
  * of an integration may be loaded throughout the system. Integrations should override this method if they
@@ -1 +1 @@
1
- {"version":3,"file":"Integration.d.ts","sourceRoot":"","sources":["../../src/types/Integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAC9E,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,oBAAY,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvF;;GAEG;AAEH,qBAAa,WAAW;IAMpB,SAAS,CAAC,WAAW,CAAC;IACtB,SAAS,CAAC,OAAO,CAAC;IAClB,SAAS,CAAC,OAAO,CAAC;IAClB,SAAS,CAAC,KAAK,CAAC;IAChB,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,MAAM,CAAe;IAC7B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;gBAGf,WAAW,CAAC,oCAAwB,EACpC,OAAO,CAAC,oCAAwB,EAChC,OAAO,CAAC,qBAAS,EACjB,KAAK,CAAC,0BAAc,EACpB,OAAO,CAAC,wCAA4B;IAOhD;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7G,SAAS,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAIjF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IACrH,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAMtF,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7F,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAI7E"}
1
+ {"version":3,"file":"Integration.d.ts","sourceRoot":"","sources":["../../src/types/Integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAC3F,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,oBAAY,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvF;;GAEG;AAEH,qBAAa,WAAW;IAMpB,SAAS,CAAC,WAAW,CAAC;IACtB,SAAS,CAAC,OAAO,CAAC;IAClB,SAAS,CAAC,OAAO,CAAC;IAClB,SAAS,CAAC,KAAK,CAAC;IAChB,SAAS,CAAC,OAAO,CAAC;IAClB,SAAS,CAAC,WAAW,CAAC;IAVxB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,MAAM,CAAe;IAC7B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;gBAGf,WAAW,CAAC,oCAAwB,EACpC,OAAO,CAAC,oCAAwB,EAChC,OAAO,CAAC,qBAAS,EACjB,KAAK,CAAC,0BAAc,EACpB,OAAO,CAAC,wCAA4B,EACpC,WAAW,CAAC,yBAAa;IAOrC;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7G,SAAS,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAIjF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IACrH,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAMtF,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAC7F,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAI7E"}
@@ -15,18 +15,20 @@ class Integration {
15
15
  storage;
16
16
  meter;
17
17
  details;
18
+ rateLimiter;
18
19
  commands = {};
19
20
  events;
20
21
  network;
21
- constructor(credentials, options, storage, meter, details) {
22
+ constructor(credentials, options, storage, meter, details, rateLimiter) {
22
23
  this.credentials = credentials;
23
24
  this.options = options;
24
25
  this.storage = storage;
25
26
  this.meter = meter;
26
27
  this.details = details;
28
+ this.rateLimiter = rateLimiter;
27
29
  this.events = new events_1.EventEmitter();
28
30
  if (meter && details) {
29
- this.network = new Network_1.default(meter, details);
31
+ this.network = new Network_1.default(meter, details, rateLimiter);
30
32
  }
31
33
  }
32
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Integration.js","sourceRoot":"","sources":["../../src/types/Integration.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAsC;AAEtC,yDAAiC;AAKjC;;GAEG;AAEH,MAAa,WAAW;IAMV;IACA;IACA;IACA;IACA;IATJ,QAAQ,GAAsC,EAAE,CAAC;IACjD,MAAM,CAAe;IACnB,OAAO,CAAU;IAE3B,YACY,WAAoC,EACpC,OAAgC,EAChC,OAAiB,EACjB,KAAoB,EACpB,OAAoC;QAJpC,gBAAW,GAAX,WAAW,CAAyB;QACpC,YAAO,GAAP,OAAO,CAAyB;QAChC,YAAO,GAAP,OAAO,CAAU;QACjB,UAAK,GAAL,KAAK,CAAe;QACpB,YAAO,GAAP,OAAO,CAA6B;QAE9C,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;QACjC,IAAI,KAAK,IAAI,OAAO,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC5C;IACH,CAAC;IACD;;;;OAIG;IACI,KAAK,CAAC,IAAI;QACf,OAAO;IACT,CAAC;IAEM,KAAK,CAAC,OAAO,CAAmB,KAAa,EAAE,IAAQ,EAAE,OAAgC;QAC9F,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CAAmB,KAAa,EAAE,OAAsB;QAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAIS,EAAE,CAAC,SAA+B,EAAE,OAAiC;QAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAIM,IAAI,CAAC,SAA+B,EAAE,GAAG,IAAW;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AA/CD,kCA+CC"}
1
+ {"version":3,"file":"Integration.js","sourceRoot":"","sources":["../../src/types/Integration.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAsC;AAEtC,yDAAiC;AAKjC;;GAEG;AAEH,MAAa,WAAW;IAMV;IACA;IACA;IACA;IACA;IACA;IAVJ,QAAQ,GAAsC,EAAE,CAAC;IACjD,MAAM,CAAe;IACnB,OAAO,CAAU;IAE3B,YACY,WAAoC,EACpC,OAAgC,EAChC,OAAiB,EACjB,KAAoB,EACpB,OAAoC,EACpC,WAAyB;QALzB,gBAAW,GAAX,WAAW,CAAyB;QACpC,YAAO,GAAP,OAAO,CAAyB;QAChC,YAAO,GAAP,OAAO,CAAU;QACjB,UAAK,GAAL,KAAK,CAAe;QACpB,YAAO,GAAP,OAAO,CAA6B;QACpC,gBAAW,GAAX,WAAW,CAAc;QAEnC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;QACjC,IAAI,KAAK,IAAI,OAAO,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SACzD;IACH,CAAC;IACD;;;;OAIG;IACI,KAAK,CAAC,IAAI;QACf,OAAO;IACT,CAAC;IAEM,KAAK,CAAC,OAAO,CAAmB,KAAa,EAAE,IAAQ,EAAE,OAAgC;QAC9F,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CAAmB,KAAa,EAAE,OAAsB;QAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAIS,EAAE,CAAC,SAA+B,EAAE,OAAiC;QAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAIM,IAAI,CAAC,SAA+B,EAAE,GAAG,IAAW;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAhDD,kCAgDC"}
@@ -1,6 +1,12 @@
1
1
  import { AxiosRequestConfig } from 'axios';
2
2
  import { IRetryPolicy, IWrapResult } from '../Network/axios-error-handling';
3
3
  import { IntegrationMetrics, MetricsMeter } from '../types/Metrics';
4
+ export declare type RateLimitPolicy = {
5
+ key: string;
6
+ maxCallsPerSecond: number;
7
+ retryTimes: number;
8
+ retryWaitMs: number;
9
+ };
4
10
  export declare type INetworkIntegrationDetails = {
5
11
  partner: string;
6
12
  offering: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../src/types/Network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE,oBAAY,0BAA0B,GAAG;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,kBAAkB,EAAE,0BAA0B,CAAC;IAE/C,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IAE5D,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CAC7D"}
1
+ {"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../src/types/Network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE,oBAAY,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,0BAA0B,GAAG;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,kBAAkB,EAAE,0BAA0B,CAAC;IAE/C,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IAE5D,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,kBAAkB,EAC3B,WAAW,CAAC,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Provides rate limiting for integrations
3
+ */
4
+ export interface RateLimiter {
5
+ incrementRateLimitPerSecond(key: string, attempts?: number): Promise<number>;
6
+ }
7
+ //# sourceMappingURL=RateLimiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/types/RateLimiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9E"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=RateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/types/RateLimiter.ts"],"names":[],"mappings":""}
@@ -1,10 +1,12 @@
1
1
  export * from './Enrichment';
2
2
  export * from './EnrichmentComponentArgs';
3
3
  export * from './Events';
4
+ export * from './formatters';
4
5
  export * from './Integration';
5
6
  export * from './IntegrationManifest';
6
7
  export * from './IPartnerDataSchema';
8
+ export * from './Metrics';
7
9
  export * from './Network';
10
+ export * from './RateLimiter';
8
11
  export * from './Storage';
9
- export * from './formatters';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
@@ -17,10 +17,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Enrichment"), exports);
18
18
  __exportStar(require("./EnrichmentComponentArgs"), exports);
19
19
  __exportStar(require("./Events"), exports);
20
+ __exportStar(require("./formatters"), exports);
20
21
  __exportStar(require("./Integration"), exports);
21
22
  __exportStar(require("./IntegrationManifest"), exports);
22
23
  __exportStar(require("./IPartnerDataSchema"), exports);
24
+ __exportStar(require("./Metrics"), exports);
23
25
  __exportStar(require("./Network"), exports);
26
+ __exportStar(require("./RateLimiter"), exports);
24
27
  __exportStar(require("./Storage"), exports);
25
- __exportStar(require("./formatters"), exports);
26
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,4DAA0C;AAC1C,2CAAyB;AACzB,gDAA8B;AAC9B,wDAAsC;AACtC,uDAAqC;AACrC,4CAA0B;AAC1B,4CAA0B;AAC1B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,4DAA0C;AAC1C,2CAAyB;AACzB,+CAA6B;AAC7B,gDAA8B;AAC9B,wDAAsC;AACtC,uDAAqC;AACrC,4CAA0B;AAC1B,4CAA0B;AAC1B,gDAA8B;AAC9B,4CAA0B"}
@@ -1,2 +1,3 @@
1
1
  export declare function jsonLog(obj: Record<string, any> | undefined): string;
2
+ export declare function sleep(ms: number): Promise<unknown>;
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,UAE3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,UAE3D;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B"}
@@ -3,10 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.jsonLog = void 0;
6
+ exports.sleep = exports.jsonLog = void 0;
7
7
  const json_colorizer_1 = __importDefault(require("json-colorizer"));
8
8
  function jsonLog(obj) {
9
9
  return (0, json_colorizer_1.default)(JSON.stringify(obj, null, 2));
10
10
  }
11
11
  exports.jsonLog = jsonLog;
12
+ function sleep(ms) {
13
+ return new Promise(resolve => setTimeout(resolve, ms));
14
+ }
15
+ exports.sleep = sleep;
12
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAEtC,SAAgB,OAAO,CAAC,GAAoC;IAC1D,OAAO,IAAA,wBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAFD,0BAEC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAEtC,SAAgB,OAAO,CAAC,GAAoC;IAC1D,OAAO,IAAA,wBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAFD,sBAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betterview/integration-toolkit",
3
- "version": "7.7.0",
3
+ "version": "7.8.1",
4
4
  "description": "Supports integration packages. This should be the only import from our integrations",
5
5
  "scripts": {
6
6
  "prebuild": "rm -rf ./lib",