polarity-integration-utils 4.2.1 → 4.2.2
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/dist/dts/requests/polarity-request.d.ts +12 -4
- package/dist/dts/requests/polarity-request.d.ts.map +1 -1
- package/dist/dts/testing/enhanced-utils/create-mock-integration-context.d.ts.map +1 -1
- package/dist/es/testing/enhanced-utils/create-mock-integration-context.js +52 -1
- package/dist/lib/testing/enhanced-utils/create-mock-integration-context.js +52 -1
- package/dist/polarity-integration-utils.d.ts +17 -8
- package/package.json +3 -3
|
@@ -187,13 +187,21 @@ export type IsApiErrorResult = {
|
|
|
187
187
|
export type IsApiErrorFunction = (response: HttpRequestResponse, requestOptions: HttpRequestOptions, userOptions: DoLookupUserOptions) => IsApiErrorResult;
|
|
188
188
|
/**
|
|
189
189
|
* Minimal interface for a rate limiter compatible with PolarityRequest.
|
|
190
|
-
*
|
|
190
|
+
* Only requires the `schedule` method, which is the sole method used internally.
|
|
191
|
+
* The Polarity server provides a full `Limiter` instance (from
|
|
192
|
+
* `@polarityio/integration-types`) that satisfies this interface, but consumers
|
|
193
|
+
* may also pass simpler objects or mocks that only implement `schedule`.
|
|
191
194
|
*
|
|
192
195
|
* @public
|
|
193
196
|
*/
|
|
194
|
-
export interface
|
|
197
|
+
export interface PolarityRequestLimiter {
|
|
195
198
|
schedule<T>(fn: (...args: unknown[]) => PromiseLike<T>, ...args: unknown[]): Promise<T>;
|
|
196
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* @deprecated Use {@link PolarityRequestLimiter} instead. This alias will be removed in a future major version.
|
|
202
|
+
* @public
|
|
203
|
+
*/
|
|
204
|
+
export type Limiter = PolarityRequestLimiter;
|
|
197
205
|
/**
|
|
198
206
|
* Hook that runs before an HTTP request is made. Each hook receives the output
|
|
199
207
|
* of the previous hook, allowing request options to be modified in a chain.
|
|
@@ -277,7 +285,7 @@ export interface PolarityRequestOptions {
|
|
|
277
285
|
httpResponseErrorMessageProperties?: string[];
|
|
278
286
|
requestOptionsToSanitize?: string[];
|
|
279
287
|
hooks?: PolarityRequestHooks;
|
|
280
|
-
limiter?:
|
|
288
|
+
limiter?: PolarityRequestLimiter;
|
|
281
289
|
}
|
|
282
290
|
/**
|
|
283
291
|
* A utility class for making HTTP requests
|
|
@@ -343,7 +351,7 @@ export declare class PolarityRequest {
|
|
|
343
351
|
* through this limiter. Typically provided by the Polarity server via the
|
|
344
352
|
* integration context.
|
|
345
353
|
*/
|
|
346
|
-
limiter:
|
|
354
|
+
limiter: PolarityRequestLimiter | null;
|
|
347
355
|
/**
|
|
348
356
|
* Lifecycle hooks for customizing request behavior. Hooks are configured via the
|
|
349
357
|
* {@link PolarityRequestOptions.hooks} property when creating a new instance of the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polarity-request.d.ts","sourceRoot":"","sources":["../../../lib/requests/polarity-request.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"polarity-request.d.ts","sourceRoot":"","sources":["../../../lib/requests/polarity-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-integration-context.d.ts","sourceRoot":"","sources":["../../../../lib/testing/enhanced-utils/create-mock-integration-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAI1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,4BAA4B,GACvC,eAAc,aAAoB,KACjC,
|
|
1
|
+
{"version":3,"file":"create-mock-integration-context.d.ts","sourceRoot":"","sources":["../../../../lib/testing/enhanced-utils/create-mock-integration-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAI1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,4BAA4B,GACvC,eAAc,aAAoB,KACjC,kBAuGF,CAAC"}
|
|
@@ -44,12 +44,46 @@ const createMockIntegrationContext = (createMockFn = noOp) => {
|
|
|
44
44
|
fatal: createMockFn()
|
|
45
45
|
};
|
|
46
46
|
// Make child() return the logger for method chaining
|
|
47
|
-
if (typeof childFn.mockReturnValue ===
|
|
47
|
+
if (typeof childFn.mockReturnValue ===
|
|
48
|
+
'function') {
|
|
48
49
|
childFn.mockReturnValue(logger);
|
|
49
50
|
}
|
|
50
51
|
else {
|
|
51
52
|
logger.child = () => logger;
|
|
52
53
|
}
|
|
54
|
+
// Create a limiter schedule passthrough that executes the provided callback
|
|
55
|
+
// (matching Bottleneck behavior) while remaining spyable.
|
|
56
|
+
// Supports both schedule(fn, ...args) and schedule(options, fn, ...args) overloads.
|
|
57
|
+
const scheduleImpl = async (fnOrOptions, ...rest) => {
|
|
58
|
+
const fn = (typeof fnOrOptions === 'function' ? fnOrOptions : rest[0]);
|
|
59
|
+
const args = typeof fnOrOptions === 'function' ? rest : rest.slice(1);
|
|
60
|
+
return fn(...args);
|
|
61
|
+
};
|
|
62
|
+
const countsImpl = () => ({
|
|
63
|
+
EXECUTING: 0,
|
|
64
|
+
QUEUED: 0,
|
|
65
|
+
RUNNING: 0,
|
|
66
|
+
DONE: 0,
|
|
67
|
+
RECEIVED: 0
|
|
68
|
+
});
|
|
69
|
+
const settingsImpl = () => ({});
|
|
70
|
+
const scheduleMock = createMockFn();
|
|
71
|
+
const countsMock = createMockFn();
|
|
72
|
+
const settingsMock = createMockFn();
|
|
73
|
+
const scopeMock = createMockFn();
|
|
74
|
+
const updateSettingsMock = createMockFn();
|
|
75
|
+
const hasMockImplementation = typeof scheduleMock
|
|
76
|
+
.mockImplementation === 'function';
|
|
77
|
+
if (hasMockImplementation) {
|
|
78
|
+
const setImpl = (mock, impl) => mock.mockImplementation(impl);
|
|
79
|
+
setImpl(scheduleMock, scheduleImpl);
|
|
80
|
+
setImpl(countsMock, countsImpl);
|
|
81
|
+
setImpl(settingsMock, settingsImpl);
|
|
82
|
+
setImpl(updateSettingsMock, async () => undefined);
|
|
83
|
+
setImpl(scopeMock, () => ({
|
|
84
|
+
schedule: scheduleMock
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
53
87
|
return {
|
|
54
88
|
cache: {
|
|
55
89
|
global: createCacheScope(),
|
|
@@ -59,6 +93,23 @@ const createMockIntegrationContext = (createMockFn = noOp) => {
|
|
|
59
93
|
integrationId: 'test-integration',
|
|
60
94
|
userId: 1,
|
|
61
95
|
logger,
|
|
96
|
+
limiter: {
|
|
97
|
+
schedule: (hasMockImplementation
|
|
98
|
+
? scheduleMock
|
|
99
|
+
: scheduleImpl),
|
|
100
|
+
updateSettings: (hasMockImplementation
|
|
101
|
+
? updateSettingsMock
|
|
102
|
+
: async () => undefined),
|
|
103
|
+
counts: (hasMockImplementation
|
|
104
|
+
? countsMock
|
|
105
|
+
: countsImpl),
|
|
106
|
+
settings: (hasMockImplementation
|
|
107
|
+
? settingsMock
|
|
108
|
+
: settingsImpl),
|
|
109
|
+
scope: (hasMockImplementation
|
|
110
|
+
? scopeMock
|
|
111
|
+
: () => ({ schedule: scheduleImpl }))
|
|
112
|
+
},
|
|
62
113
|
startPolling: createMockFn(),
|
|
63
114
|
stopPolling: createMockFn()
|
|
64
115
|
};
|
|
@@ -44,12 +44,46 @@ const createMockIntegrationContext = (createMockFn = noOp) => {
|
|
|
44
44
|
fatal: createMockFn()
|
|
45
45
|
};
|
|
46
46
|
// Make child() return the logger for method chaining
|
|
47
|
-
if (typeof childFn.mockReturnValue ===
|
|
47
|
+
if (typeof childFn.mockReturnValue ===
|
|
48
|
+
'function') {
|
|
48
49
|
childFn.mockReturnValue(logger);
|
|
49
50
|
}
|
|
50
51
|
else {
|
|
51
52
|
logger.child = () => logger;
|
|
52
53
|
}
|
|
54
|
+
// Create a limiter schedule passthrough that executes the provided callback
|
|
55
|
+
// (matching Bottleneck behavior) while remaining spyable.
|
|
56
|
+
// Supports both schedule(fn, ...args) and schedule(options, fn, ...args) overloads.
|
|
57
|
+
const scheduleImpl = async (fnOrOptions, ...rest) => {
|
|
58
|
+
const fn = (typeof fnOrOptions === 'function' ? fnOrOptions : rest[0]);
|
|
59
|
+
const args = typeof fnOrOptions === 'function' ? rest : rest.slice(1);
|
|
60
|
+
return fn(...args);
|
|
61
|
+
};
|
|
62
|
+
const countsImpl = () => ({
|
|
63
|
+
EXECUTING: 0,
|
|
64
|
+
QUEUED: 0,
|
|
65
|
+
RUNNING: 0,
|
|
66
|
+
DONE: 0,
|
|
67
|
+
RECEIVED: 0
|
|
68
|
+
});
|
|
69
|
+
const settingsImpl = () => ({});
|
|
70
|
+
const scheduleMock = createMockFn();
|
|
71
|
+
const countsMock = createMockFn();
|
|
72
|
+
const settingsMock = createMockFn();
|
|
73
|
+
const scopeMock = createMockFn();
|
|
74
|
+
const updateSettingsMock = createMockFn();
|
|
75
|
+
const hasMockImplementation = typeof scheduleMock
|
|
76
|
+
.mockImplementation === 'function';
|
|
77
|
+
if (hasMockImplementation) {
|
|
78
|
+
const setImpl = (mock, impl) => mock.mockImplementation(impl);
|
|
79
|
+
setImpl(scheduleMock, scheduleImpl);
|
|
80
|
+
setImpl(countsMock, countsImpl);
|
|
81
|
+
setImpl(settingsMock, settingsImpl);
|
|
82
|
+
setImpl(updateSettingsMock, async () => undefined);
|
|
83
|
+
setImpl(scopeMock, () => ({
|
|
84
|
+
schedule: scheduleMock
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
53
87
|
return {
|
|
54
88
|
cache: {
|
|
55
89
|
global: createCacheScope(),
|
|
@@ -59,6 +93,23 @@ const createMockIntegrationContext = (createMockFn = noOp) => {
|
|
|
59
93
|
integrationId: 'test-integration',
|
|
60
94
|
userId: 1,
|
|
61
95
|
logger,
|
|
96
|
+
limiter: {
|
|
97
|
+
schedule: (hasMockImplementation
|
|
98
|
+
? scheduleMock
|
|
99
|
+
: scheduleImpl),
|
|
100
|
+
updateSettings: (hasMockImplementation
|
|
101
|
+
? updateSettingsMock
|
|
102
|
+
: async () => undefined),
|
|
103
|
+
counts: (hasMockImplementation
|
|
104
|
+
? countsMock
|
|
105
|
+
: countsImpl),
|
|
106
|
+
settings: (hasMockImplementation
|
|
107
|
+
? settingsMock
|
|
108
|
+
: settingsImpl),
|
|
109
|
+
scope: (hasMockImplementation
|
|
110
|
+
? scopeMock
|
|
111
|
+
: () => ({ schedule: scheduleImpl }))
|
|
112
|
+
},
|
|
62
113
|
startPolling: createMockFn(),
|
|
63
114
|
stopPolling: createMockFn()
|
|
64
115
|
};
|
|
@@ -519,14 +519,10 @@ export declare type ConfigRequestProxyOptions = {
|
|
|
519
519
|
}
|
|
520
520
|
|
|
521
521
|
/**
|
|
522
|
-
*
|
|
523
|
-
* The Polarity server provides a Bottleneck instance that satisfies this interface.
|
|
524
|
-
*
|
|
522
|
+
* @deprecated Use {@link PolarityRequestLimiter} instead. This alias will be removed in a future major version.
|
|
525
523
|
* @public
|
|
526
524
|
*/
|
|
527
|
-
export declare
|
|
528
|
-
schedule<T>(fn: (...args: unknown[]) => PromiseLike<T>, ...args: unknown[]): Promise<T>;
|
|
529
|
-
}
|
|
525
|
+
export declare type Limiter = PolarityRequestLimiter;
|
|
530
526
|
|
|
531
527
|
/**
|
|
532
528
|
* @public
|
|
@@ -660,7 +656,7 @@ export declare type ConfigRequestProxyOptions = {
|
|
|
660
656
|
* through this limiter. Typically provided by the Polarity server via the
|
|
661
657
|
* integration context.
|
|
662
658
|
*/
|
|
663
|
-
limiter:
|
|
659
|
+
limiter: PolarityRequestLimiter | null;
|
|
664
660
|
/**
|
|
665
661
|
* Lifecycle hooks for customizing request behavior. Hooks are configured via the
|
|
666
662
|
* {@link PolarityRequestOptions.hooks} property when creating a new instance of the
|
|
@@ -784,6 +780,19 @@ export declare type ConfigRequestProxyOptions = {
|
|
|
784
780
|
onNetworkError?: OnNetworkErrorHook[];
|
|
785
781
|
}
|
|
786
782
|
|
|
783
|
+
/**
|
|
784
|
+
* Minimal interface for a rate limiter compatible with PolarityRequest.
|
|
785
|
+
* Only requires the `schedule` method, which is the sole method used internally.
|
|
786
|
+
* The Polarity server provides a full `Limiter` instance (from
|
|
787
|
+
* `@polarityio/integration-types`) that satisfies this interface, but consumers
|
|
788
|
+
* may also pass simpler objects or mocks that only implement `schedule`.
|
|
789
|
+
*
|
|
790
|
+
* @public
|
|
791
|
+
*/
|
|
792
|
+
export declare interface PolarityRequestLimiter {
|
|
793
|
+
schedule<T>(fn: (...args: unknown[]) => PromiseLike<T>, ...args: unknown[]): Promise<T>;
|
|
794
|
+
}
|
|
795
|
+
|
|
787
796
|
/**
|
|
788
797
|
* @public
|
|
789
798
|
*/
|
|
@@ -795,7 +804,7 @@ export declare type ConfigRequestProxyOptions = {
|
|
|
795
804
|
httpResponseErrorMessageProperties?: string[];
|
|
796
805
|
requestOptionsToSanitize?: string[];
|
|
797
806
|
hooks?: PolarityRequestHooks;
|
|
798
|
-
limiter?:
|
|
807
|
+
limiter?: PolarityRequestLimiter;
|
|
799
808
|
}
|
|
800
809
|
|
|
801
810
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "polarity-integration-utils",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "A utility library for building Polarity Integrations",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@eslint/js": "^9.39.4",
|
|
88
88
|
"@microsoft/api-extractor": "^7.57.7",
|
|
89
|
-
"@polarityio/integration-types": "^1.
|
|
89
|
+
"@polarityio/integration-types": "^1.2.1",
|
|
90
90
|
"@types/jest": "^30.0.0",
|
|
91
91
|
"@types/lodash": "^4.17.24",
|
|
92
92
|
"@types/node": "^20.14.8",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"postman-request": "^2.88.1-postman.48"
|
|
109
109
|
},
|
|
110
110
|
"peerDependencies": {
|
|
111
|
-
"@polarityio/integration-types": "
|
|
111
|
+
"@polarityio/integration-types": "^1.2.1"
|
|
112
112
|
},
|
|
113
113
|
"sideEffects": false,
|
|
114
114
|
"overrides": {
|