@metamask/polling-controller 1.0.2 → 2.0.0
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/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [2.0.0]
|
|
10
|
+
### Changed
|
|
11
|
+
- **BREAKING:** Bump `@metamask/base-controller` to ^4.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
|
|
12
|
+
- This is breaking because the type of the `messenger` has backward-incompatible changes. See the changelog for this package for more.
|
|
13
|
+
- Bump `@metamask/controller-utils` to ^6.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
|
|
14
|
+
- Bump `@metamask/network-controller` to ^17.0.0 ([#2063](https://github.com/MetaMask/core/pull/2063))
|
|
15
|
+
|
|
9
16
|
## [1.0.2]
|
|
10
17
|
### Changed
|
|
11
18
|
- **BREAKING:** Bump dependency and peer dependency on `@metamask/network-controller` to ^16.0.0
|
|
@@ -39,7 +46,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
39
46
|
### Added
|
|
40
47
|
- Initial release
|
|
41
48
|
|
|
42
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/polling-controller@
|
|
49
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/polling-controller@2.0.0...HEAD
|
|
50
|
+
[2.0.0]: https://github.com/MetaMask/core/compare/@metamask/polling-controller@1.0.2...@metamask/polling-controller@2.0.0
|
|
43
51
|
[1.0.2]: https://github.com/MetaMask/core/compare/@metamask/polling-controller@1.0.1...@metamask/polling-controller@1.0.2
|
|
44
52
|
[1.0.1]: https://github.com/MetaMask/core/compare/@metamask/polling-controller@1.0.0...@metamask/polling-controller@1.0.1
|
|
45
53
|
[1.0.0]: https://github.com/MetaMask/core/compare/@metamask/polling-controller@0.2.0...@metamask/polling-controller@1.0.0
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/// <reference types="node" />
|
|
4
4
|
/// <reference types="node" />
|
|
5
5
|
/// <reference types="node" />
|
|
6
|
-
import { BaseController,
|
|
6
|
+
import { BaseController, BaseControllerV1 } from '@metamask/base-controller';
|
|
7
7
|
import type { NetworkClientId } from '@metamask/network-controller';
|
|
8
8
|
import type { Json } from '@metamask/utils';
|
|
9
9
|
/**
|
|
@@ -17,10 +17,10 @@ declare type PollingTokenSetId = `${NetworkClientId}:${string}`;
|
|
|
17
17
|
declare class Empty {
|
|
18
18
|
}
|
|
19
19
|
export declare const PollingControllerOnly: (abstract new (...args: any[]) => {
|
|
20
|
-
readonly "__#
|
|
21
|
-
readonly "__#
|
|
22
|
-
"__#
|
|
23
|
-
"__#
|
|
20
|
+
readonly "__#91333@#pollingTokenSets": Map<PollingTokenSetId, Set<string>>;
|
|
21
|
+
readonly "__#91333@#intervalIds": Record<PollingTokenSetId, NodeJS.Timeout>;
|
|
22
|
+
"__#91333@#callbacks": Map<string, Set<(networkClientId: NetworkClientId) => void>>;
|
|
23
|
+
"__#91333@#intervalLength": number;
|
|
24
24
|
getIntervalLength(): number;
|
|
25
25
|
/**
|
|
26
26
|
* Sets the length of the polling interval
|
|
@@ -53,7 +53,7 @@ export declare const PollingControllerOnly: (abstract new (...args: any[]) => {
|
|
|
53
53
|
* @param options - The options passed to startPollingByNetworkClientId
|
|
54
54
|
*/
|
|
55
55
|
_executePoll(networkClientId: NetworkClientId, options: Json): Promise<void>;
|
|
56
|
-
"__#
|
|
56
|
+
"__#91333@#poll"(networkClientId: NetworkClientId, options: Json): void;
|
|
57
57
|
/**
|
|
58
58
|
* Adds a callback to execute when polling is complete
|
|
59
59
|
*
|
|
@@ -64,10 +64,10 @@ export declare const PollingControllerOnly: (abstract new (...args: any[]) => {
|
|
|
64
64
|
onPollingCompleteByNetworkClientId(networkClientId: NetworkClientId, callback: (networkClientId: NetworkClientId) => void, options?: Json): void;
|
|
65
65
|
}) & typeof Empty;
|
|
66
66
|
export declare const PollingController: (abstract new (...args: any[]) => {
|
|
67
|
-
readonly "__#
|
|
68
|
-
readonly "__#
|
|
69
|
-
"__#
|
|
70
|
-
"__#
|
|
67
|
+
readonly "__#91333@#pollingTokenSets": Map<PollingTokenSetId, Set<string>>;
|
|
68
|
+
readonly "__#91333@#intervalIds": Record<PollingTokenSetId, NodeJS.Timeout>;
|
|
69
|
+
"__#91333@#callbacks": Map<string, Set<(networkClientId: NetworkClientId) => void>>;
|
|
70
|
+
"__#91333@#intervalLength": number;
|
|
71
71
|
getIntervalLength(): number;
|
|
72
72
|
/**
|
|
73
73
|
* Sets the length of the polling interval
|
|
@@ -100,7 +100,7 @@ export declare const PollingController: (abstract new (...args: any[]) => {
|
|
|
100
100
|
* @param options - The options passed to startPollingByNetworkClientId
|
|
101
101
|
*/
|
|
102
102
|
_executePoll(networkClientId: NetworkClientId, options: Json): Promise<void>;
|
|
103
|
-
"__#
|
|
103
|
+
"__#91333@#poll"(networkClientId: NetworkClientId, options: Json): void;
|
|
104
104
|
/**
|
|
105
105
|
* Adds a callback to execute when polling is complete
|
|
106
106
|
*
|
|
@@ -109,12 +109,12 @@ export declare const PollingController: (abstract new (...args: any[]) => {
|
|
|
109
109
|
* @param options - The options used to group the polling events
|
|
110
110
|
*/
|
|
111
111
|
onPollingCompleteByNetworkClientId(networkClientId: NetworkClientId, callback: (networkClientId: NetworkClientId) => void, options?: Json): void;
|
|
112
|
-
}) & typeof
|
|
112
|
+
}) & typeof BaseController;
|
|
113
113
|
export declare const PollingControllerV1: (abstract new (...args: any[]) => {
|
|
114
|
-
readonly "__#
|
|
115
|
-
readonly "__#
|
|
116
|
-
"__#
|
|
117
|
-
"__#
|
|
114
|
+
readonly "__#91333@#pollingTokenSets": Map<PollingTokenSetId, Set<string>>;
|
|
115
|
+
readonly "__#91333@#intervalIds": Record<PollingTokenSetId, NodeJS.Timeout>;
|
|
116
|
+
"__#91333@#callbacks": Map<string, Set<(networkClientId: NetworkClientId) => void>>;
|
|
117
|
+
"__#91333@#intervalLength": number;
|
|
118
118
|
getIntervalLength(): number;
|
|
119
119
|
/**
|
|
120
120
|
* Sets the length of the polling interval
|
|
@@ -147,7 +147,7 @@ export declare const PollingControllerV1: (abstract new (...args: any[]) => {
|
|
|
147
147
|
* @param options - The options passed to startPollingByNetworkClientId
|
|
148
148
|
*/
|
|
149
149
|
_executePoll(networkClientId: NetworkClientId, options: Json): Promise<void>;
|
|
150
|
-
"__#
|
|
150
|
+
"__#91333@#poll"(networkClientId: NetworkClientId, options: Json): void;
|
|
151
151
|
/**
|
|
152
152
|
* Adds a callback to execute when polling is complete
|
|
153
153
|
*
|
|
@@ -156,6 +156,6 @@ export declare const PollingControllerV1: (abstract new (...args: any[]) => {
|
|
|
156
156
|
* @param options - The options used to group the polling events
|
|
157
157
|
*/
|
|
158
158
|
onPollingCompleteByNetworkClientId(networkClientId: NetworkClientId, callback: (networkClientId: NetworkClientId) => void, options?: Json): void;
|
|
159
|
-
}) & typeof
|
|
159
|
+
}) & typeof BaseControllerV1;
|
|
160
160
|
export {};
|
|
161
161
|
//# sourceMappingURL=PollingController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PollingController.d.ts","sourceRoot":"","sources":["../src/PollingController.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAQ5C;;;;;GAKG;AACH,eAAO,MAAM,MAAM,oBACA,eAAe,WACvB,IAAI,KACZ,iBAA+D,CAAC;AAEnE,aAAK,iBAAiB,GAAG,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;AAwKxD,cAAM,KAAK;CAAG;AAEd,eAAO,MAAM,qBAAqB,0BAvLD,GAAG,EAAE;2CA4BN,IAAI,iBAAiB,EAAE,IAAI,MAAM,CAAC,CAAC;sCAExC,OAAO,iBAAiB,EAAE,OAAO,OAAO,CAAC;6DAIxC,eAAe,KAAK,IAAI;;;IAShD;;;;OAIG;8BACuB,MAAM;IAIhC;;;;;;OAMG;mDAEgB,eAAe,YACvB,IAAI;IAkBf;;OAEG;;IASH;;;;OAIG;4CACqC,MAAM;IAyB9C;;;;;OAKG;kCAEgB,eAAe,WACvB,IAAI,GACZ,QAAQ,IAAI,CAAC;sCAEO,eAAe,WAAW,IAAI;IAuBrD;;;;;;OAMG;wDAEgB,eAAe,8BACJ,eAAe,KAAK,IAAI,YAC3C,IAAI;iBAmB+C,CAAC;AACnE,eAAO,MAAM,iBAAiB,0BAxLG,GAAG,EAAE;2CA4BN,IAAI,iBAAiB,EAAE,IAAI,MAAM,CAAC,CAAC;sCAExC,OAAO,iBAAiB,EAAE,OAAO,OAAO,CAAC;6DAIxC,eAAe,KAAK,IAAI;;;IAShD;;;;OAIG;8BACuB,MAAM;IAIhC;;;;;;OAMG;mDAEgB,eAAe,YACvB,IAAI;IAkBf;;OAEG;;IASH;;;;OAIG;4CACqC,MAAM;IAyB9C;;;;;OAKG;kCAEgB,eAAe,WACvB,IAAI,GACZ,QAAQ,IAAI,CAAC;sCAEO,eAAe,WAAW,IAAI;IAuBrD;;;;;;OAMG;wDAEgB,eAAe,8BACJ,eAAe,KAAK,IAAI,YAC3C,IAAI;
|
|
1
|
+
{"version":3,"file":"PollingController.d.ts","sourceRoot":"","sources":["../src/PollingController.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAQ5C;;;;;GAKG;AACH,eAAO,MAAM,MAAM,oBACA,eAAe,WACvB,IAAI,KACZ,iBAA+D,CAAC;AAEnE,aAAK,iBAAiB,GAAG,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;AAwKxD,cAAM,KAAK;CAAG;AAEd,eAAO,MAAM,qBAAqB,0BAvLD,GAAG,EAAE;2CA4BN,IAAI,iBAAiB,EAAE,IAAI,MAAM,CAAC,CAAC;sCAExC,OAAO,iBAAiB,EAAE,OAAO,OAAO,CAAC;6DAIxC,eAAe,KAAK,IAAI;;;IAShD;;;;OAIG;8BACuB,MAAM;IAIhC;;;;;;OAMG;mDAEgB,eAAe,YACvB,IAAI;IAkBf;;OAEG;;IASH;;;;OAIG;4CACqC,MAAM;IAyB9C;;;;;OAKG;kCAEgB,eAAe,WACvB,IAAI,GACZ,QAAQ,IAAI,CAAC;sCAEO,eAAe,WAAW,IAAI;IAuBrD;;;;;;OAMG;wDAEgB,eAAe,8BACJ,eAAe,KAAK,IAAI,YAC3C,IAAI;iBAmB+C,CAAC;AACnE,eAAO,MAAM,iBAAiB,0BAxLG,GAAG,EAAE;2CA4BN,IAAI,iBAAiB,EAAE,IAAI,MAAM,CAAC,CAAC;sCAExC,OAAO,iBAAiB,EAAE,OAAO,OAAO,CAAC;6DAIxC,eAAe,KAAK,IAAI;;;IAShD;;;;OAIG;8BACuB,MAAM;IAIhC;;;;;;OAMG;mDAEgB,eAAe,YACvB,IAAI;IAkBf;;OAEG;;IASH;;;;OAIG;4CACqC,MAAM;IAyB9C;;;;;OAKG;kCAEgB,eAAe,WACvB,IAAI,GACZ,QAAQ,IAAI,CAAC;sCAEO,eAAe,WAAW,IAAI;IAuBrD;;;;;;OAMG;wDAEgB,eAAe,8BACJ,eAAe,KAAK,IAAI,YAC3C,IAAI;0BAoBoD,CAAC;AACxE,eAAO,MAAM,mBAAmB,0BAzLC,GAAG,EAAE;2CA4BN,IAAI,iBAAiB,EAAE,IAAI,MAAM,CAAC,CAAC;sCAExC,OAAO,iBAAiB,EAAE,OAAO,OAAO,CAAC;6DAIxC,eAAe,KAAK,IAAI;;;IAShD;;;;OAIG;8BACuB,MAAM;IAIhC;;;;;;OAMG;mDAEgB,eAAe,YACvB,IAAI;IAkBf;;OAEG;;IASH;;;;OAIG;4CACqC,MAAM;IAyB9C;;;;;OAKG;kCAEgB,eAAe,WACvB,IAAI,GACZ,QAAQ,IAAI,CAAC;sCAEO,eAAe,WAAW,IAAI;IAuBrD;;;;;;OAMG;wDAEgB,eAAe,8BACJ,eAAe,KAAK,IAAI,YAC3C,IAAI;4BAqBwD,CAAC"}
|
|
@@ -176,6 +176,6 @@ function PollingControllerMixin(Base) {
|
|
|
176
176
|
class Empty {
|
|
177
177
|
}
|
|
178
178
|
exports.PollingControllerOnly = PollingControllerMixin(Empty);
|
|
179
|
-
exports.PollingController = PollingControllerMixin(base_controller_1.
|
|
180
|
-
exports.PollingControllerV1 = PollingControllerMixin(base_controller_1.
|
|
179
|
+
exports.PollingController = PollingControllerMixin(base_controller_1.BaseController);
|
|
180
|
+
exports.PollingControllerV1 = PollingControllerMixin(base_controller_1.BaseControllerV1);
|
|
181
181
|
//# sourceMappingURL=PollingController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PollingController.js","sourceRoot":"","sources":["../src/PollingController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController, BaseControllerV2 } from '@metamask/base-controller';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json } from '@metamask/utils';\nimport stringify from 'fast-json-stable-stringify';\nimport { v4 as random } from 'uuid';\n\n// Mixin classes require a constructor with an `...any[]` parameter\n// See TS2545\ntype Constructor = new (...args: any[]) => object;\n\n/**\n * Returns a unique key for a networkClientId and options. This is used to group networkClientId polls with the same options\n * @param networkClientId - The networkClientId to get a key for\n * @param options - The options used to group the polling events\n * @returns The unique key\n */\nexport const getKey = (\n networkClientId: NetworkClientId,\n options: Json,\n): PollingTokenSetId => `${networkClientId}:${stringify(options)}`;\n\ntype PollingTokenSetId = `${NetworkClientId}:${string}`;\n/**\n * PollingControllerMixin\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\nfunction PollingControllerMixin<TBase extends Constructor>(Base: TBase) {\n /**\n * PollingController is an abstract class that implements the polling\n * functionality for a controller. It is meant to be extended by a controller\n * that needs to poll for data by networkClientId.\n *\n */\n abstract class PollingControllerBase extends Base {\n readonly #pollingTokenSets: Map<PollingTokenSetId, Set<string>> = new Map();\n\n readonly #intervalIds: Record<PollingTokenSetId, NodeJS.Timeout> = {};\n\n #callbacks: Map<\n NetworkClientId,\n Set<(networkClientId: NetworkClientId) => void>\n > = new Map();\n\n #intervalLength = 1000;\n\n getIntervalLength() {\n return this.#intervalLength;\n }\n\n /**\n * Sets the length of the polling interval\n *\n * @param length - The length of the polling interval in milliseconds\n */\n setIntervalLength(length: number) {\n this.#intervalLength = length;\n }\n\n /**\n * Starts polling for a networkClientId\n *\n * @param networkClientId - The networkClientId to start polling for\n * @param options - The options used to group the polling events\n * @returns void\n */\n startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json = {},\n ) {\n const pollToken = random();\n\n const key = getKey(networkClientId, options);\n\n const pollingTokenSet = this.#pollingTokenSets.get(key);\n if (pollingTokenSet) {\n pollingTokenSet.add(pollToken);\n } else {\n const set = new Set<string>();\n set.add(pollToken);\n this.#pollingTokenSets.set(key, set);\n }\n this.#poll(networkClientId, options);\n return pollToken;\n }\n\n /**\n * Stops polling for all networkClientIds\n */\n stopAllPolling() {\n this.#pollingTokenSets.forEach((tokenSet, _networkClientId) => {\n tokenSet.forEach((token) => {\n this.stopPollingByPollingToken(token);\n });\n });\n }\n\n /**\n * Stops polling for a networkClientId\n *\n * @param pollingToken - The polling token to stop polling for\n */\n stopPollingByPollingToken(pollingToken: string) {\n if (!pollingToken) {\n throw new Error('pollingToken required');\n }\n let found = false;\n this.#pollingTokenSets.forEach((tokenSet, key) => {\n if (tokenSet.has(pollingToken)) {\n found = true;\n tokenSet.delete(pollingToken);\n if (tokenSet.size === 0) {\n clearTimeout(this.#intervalIds[key]);\n delete this.#intervalIds[key];\n this.#pollingTokenSets.delete(key);\n this.#callbacks.get(key)?.forEach((callback) => {\n callback(key);\n });\n this.#callbacks.get(key)?.clear();\n }\n }\n });\n if (!found) {\n throw new Error('pollingToken not found');\n }\n }\n\n /**\n * Executes the poll for a networkClientId\n *\n * @param networkClientId - The networkClientId to execute the poll for\n * @param options - The options passed to startPollingByNetworkClientId\n */\n abstract _executePoll(\n networkClientId: NetworkClientId,\n options: Json,\n ): Promise<void>;\n\n #poll(networkClientId: NetworkClientId, options: Json) {\n const key = getKey(networkClientId, options);\n const interval = this.#intervalIds[key];\n if (interval) {\n clearTimeout(interval);\n delete this.#intervalIds[key];\n }\n // setTimeout is not `await`ing this async function, which is expected\n // We're just using async here for improved stack traces\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#intervalIds[key] = setTimeout(\n async () => {\n try {\n await this._executePoll(networkClientId, options);\n } catch (error) {\n console.error(error);\n }\n this.#poll(networkClientId, options);\n },\n interval ? this.#intervalLength : 0,\n );\n }\n\n /**\n * Adds a callback to execute when polling is complete\n *\n * @param networkClientId - The networkClientId to listen for polling complete events\n * @param callback - The callback to execute when polling is complete\n * @param options - The options used to group the polling events\n */\n onPollingCompleteByNetworkClientId(\n networkClientId: NetworkClientId,\n callback: (networkClientId: NetworkClientId) => void,\n options: Json = {},\n ) {\n const key = getKey(networkClientId, options);\n const callbacks = this.#callbacks.get(key);\n\n if (callbacks === undefined) {\n const set = new Set<typeof callback>();\n set.add(callback);\n this.#callbacks.set(key, set);\n } else {\n callbacks.add(callback);\n }\n }\n }\n return PollingControllerBase;\n}\n\nclass Empty {}\n\nexport const PollingControllerOnly = PollingControllerMixin(Empty);\nexport const PollingController = PollingControllerMixin(BaseControllerV2);\nexport const PollingControllerV1 = PollingControllerMixin(BaseController);\n"]}
|
|
1
|
+
{"version":3,"file":"PollingController.js","sourceRoot":"","sources":["../src/PollingController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController, BaseControllerV1 } from '@metamask/base-controller';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json } from '@metamask/utils';\nimport stringify from 'fast-json-stable-stringify';\nimport { v4 as random } from 'uuid';\n\n// Mixin classes require a constructor with an `...any[]` parameter\n// See TS2545\ntype Constructor = new (...args: any[]) => object;\n\n/**\n * Returns a unique key for a networkClientId and options. This is used to group networkClientId polls with the same options\n * @param networkClientId - The networkClientId to get a key for\n * @param options - The options used to group the polling events\n * @returns The unique key\n */\nexport const getKey = (\n networkClientId: NetworkClientId,\n options: Json,\n): PollingTokenSetId => `${networkClientId}:${stringify(options)}`;\n\ntype PollingTokenSetId = `${NetworkClientId}:${string}`;\n/**\n * PollingControllerMixin\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\nfunction PollingControllerMixin<TBase extends Constructor>(Base: TBase) {\n /**\n * PollingController is an abstract class that implements the polling\n * functionality for a controller. It is meant to be extended by a controller\n * that needs to poll for data by networkClientId.\n *\n */\n abstract class PollingControllerBase extends Base {\n readonly #pollingTokenSets: Map<PollingTokenSetId, Set<string>> = new Map();\n\n readonly #intervalIds: Record<PollingTokenSetId, NodeJS.Timeout> = {};\n\n #callbacks: Map<\n NetworkClientId,\n Set<(networkClientId: NetworkClientId) => void>\n > = new Map();\n\n #intervalLength = 1000;\n\n getIntervalLength() {\n return this.#intervalLength;\n }\n\n /**\n * Sets the length of the polling interval\n *\n * @param length - The length of the polling interval in milliseconds\n */\n setIntervalLength(length: number) {\n this.#intervalLength = length;\n }\n\n /**\n * Starts polling for a networkClientId\n *\n * @param networkClientId - The networkClientId to start polling for\n * @param options - The options used to group the polling events\n * @returns void\n */\n startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json = {},\n ) {\n const pollToken = random();\n\n const key = getKey(networkClientId, options);\n\n const pollingTokenSet = this.#pollingTokenSets.get(key);\n if (pollingTokenSet) {\n pollingTokenSet.add(pollToken);\n } else {\n const set = new Set<string>();\n set.add(pollToken);\n this.#pollingTokenSets.set(key, set);\n }\n this.#poll(networkClientId, options);\n return pollToken;\n }\n\n /**\n * Stops polling for all networkClientIds\n */\n stopAllPolling() {\n this.#pollingTokenSets.forEach((tokenSet, _networkClientId) => {\n tokenSet.forEach((token) => {\n this.stopPollingByPollingToken(token);\n });\n });\n }\n\n /**\n * Stops polling for a networkClientId\n *\n * @param pollingToken - The polling token to stop polling for\n */\n stopPollingByPollingToken(pollingToken: string) {\n if (!pollingToken) {\n throw new Error('pollingToken required');\n }\n let found = false;\n this.#pollingTokenSets.forEach((tokenSet, key) => {\n if (tokenSet.has(pollingToken)) {\n found = true;\n tokenSet.delete(pollingToken);\n if (tokenSet.size === 0) {\n clearTimeout(this.#intervalIds[key]);\n delete this.#intervalIds[key];\n this.#pollingTokenSets.delete(key);\n this.#callbacks.get(key)?.forEach((callback) => {\n callback(key);\n });\n this.#callbacks.get(key)?.clear();\n }\n }\n });\n if (!found) {\n throw new Error('pollingToken not found');\n }\n }\n\n /**\n * Executes the poll for a networkClientId\n *\n * @param networkClientId - The networkClientId to execute the poll for\n * @param options - The options passed to startPollingByNetworkClientId\n */\n abstract _executePoll(\n networkClientId: NetworkClientId,\n options: Json,\n ): Promise<void>;\n\n #poll(networkClientId: NetworkClientId, options: Json) {\n const key = getKey(networkClientId, options);\n const interval = this.#intervalIds[key];\n if (interval) {\n clearTimeout(interval);\n delete this.#intervalIds[key];\n }\n // setTimeout is not `await`ing this async function, which is expected\n // We're just using async here for improved stack traces\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#intervalIds[key] = setTimeout(\n async () => {\n try {\n await this._executePoll(networkClientId, options);\n } catch (error) {\n console.error(error);\n }\n this.#poll(networkClientId, options);\n },\n interval ? this.#intervalLength : 0,\n );\n }\n\n /**\n * Adds a callback to execute when polling is complete\n *\n * @param networkClientId - The networkClientId to listen for polling complete events\n * @param callback - The callback to execute when polling is complete\n * @param options - The options used to group the polling events\n */\n onPollingCompleteByNetworkClientId(\n networkClientId: NetworkClientId,\n callback: (networkClientId: NetworkClientId) => void,\n options: Json = {},\n ) {\n const key = getKey(networkClientId, options);\n const callbacks = this.#callbacks.get(key);\n\n if (callbacks === undefined) {\n const set = new Set<typeof callback>();\n set.add(callback);\n this.#callbacks.set(key, set);\n } else {\n callbacks.add(callback);\n }\n }\n }\n return PollingControllerBase;\n}\n\nclass Empty {}\n\nexport const PollingControllerOnly = PollingControllerMixin(Empty);\nexport const PollingController = PollingControllerMixin(BaseController);\nexport const PollingControllerV1 = PollingControllerMixin(BaseControllerV1);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/polling-controller",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Polling Controller is the base for controllers that polling by networkClientId",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"test:watch": "jest --watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@metamask/base-controller": "^
|
|
34
|
-
"@metamask/controller-utils": "^
|
|
35
|
-
"@metamask/network-controller": "^
|
|
33
|
+
"@metamask/base-controller": "^4.0.0",
|
|
34
|
+
"@metamask/controller-utils": "^6.0.0",
|
|
35
|
+
"@metamask/network-controller": "^17.0.0",
|
|
36
36
|
"@metamask/utils": "^8.2.0",
|
|
37
37
|
"@types/uuid": "^8.3.0",
|
|
38
38
|
"fast-json-stable-stringify": "^2.1.0",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"typescript": "~4.8.4"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@metamask/network-controller": "^
|
|
53
|
+
"@metamask/network-controller": "^17.0.0"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=16.0.0"
|