@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.
- package/lib/Network/index.d.ts +7 -4
- package/lib/Network/index.d.ts.map +1 -1
- package/lib/Network/index.js +22 -3
- package/lib/Network/index.js.map +1 -1
- package/lib/types/Integration.d.ts +3 -2
- package/lib/types/Integration.d.ts.map +1 -1
- package/lib/types/Integration.js +4 -2
- package/lib/types/Integration.js.map +1 -1
- package/lib/types/Network.d.ts +6 -0
- package/lib/types/Network.d.ts.map +1 -1
- package/lib/types/RateLimiter.d.ts +7 -0
- package/lib/types/RateLimiter.d.ts.map +1 -0
- package/lib/types/RateLimiter.js +3 -0
- package/lib/types/RateLimiter.js.map +1 -0
- package/lib/types/index.d.ts +3 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +3 -1
- package/lib/types/index.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +5 -1
- package/lib/utils/index.js.map +1 -1
- package/package.json +1 -1
package/lib/Network/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Network/index.ts"],"names":[],"mappings":"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"}
|
package/lib/Network/index.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/lib/Network/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Network/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD;
|
|
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;
|
|
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"}
|
package/lib/types/Integration.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/lib/types/Network.d.ts
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/types/RateLimiter.ts"],"names":[],"mappings":""}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -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
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/lib/types/index.js
CHANGED
|
@@ -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
|
package/lib/types/index.js.map
CHANGED
|
@@ -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
|
|
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"}
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/lib/utils/index.js
CHANGED
|
@@ -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
|
package/lib/utils/index.js.map
CHANGED
|
@@ -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