@metamask/polling-controller 10.0.0 → 11.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/dist/AbstractPollingController.cjs +87 -0
  3. package/dist/AbstractPollingController.cjs.map +1 -0
  4. package/dist/AbstractPollingController.d.cts +21 -0
  5. package/dist/AbstractPollingController.d.cts.map +1 -0
  6. package/dist/AbstractPollingController.d.mts +21 -0
  7. package/dist/AbstractPollingController.d.mts.map +1 -0
  8. package/dist/AbstractPollingController.mjs +84 -7
  9. package/dist/AbstractPollingController.mjs.map +1 -1
  10. package/dist/BlockTrackerPollingController.cjs +72 -0
  11. package/dist/BlockTrackerPollingController.cjs.map +1 -0
  12. package/dist/BlockTrackerPollingController.d.cts +54 -0
  13. package/dist/BlockTrackerPollingController.d.cts.map +1 -0
  14. package/dist/BlockTrackerPollingController.d.mts +54 -0
  15. package/dist/BlockTrackerPollingController.d.mts.map +1 -0
  16. package/dist/BlockTrackerPollingController.mjs +64 -10
  17. package/dist/BlockTrackerPollingController.mjs.map +1 -1
  18. package/dist/StaticIntervalPollingController.cjs +82 -0
  19. package/dist/StaticIntervalPollingController.cjs.map +1 -0
  20. package/dist/StaticIntervalPollingController.d.cts +52 -0
  21. package/dist/StaticIntervalPollingController.d.cts.map +1 -0
  22. package/dist/StaticIntervalPollingController.d.mts +52 -0
  23. package/dist/StaticIntervalPollingController.d.mts.map +1 -0
  24. package/dist/StaticIntervalPollingController.mjs +74 -10
  25. package/dist/StaticIntervalPollingController.mjs.map +1 -1
  26. package/dist/index.cjs +12 -0
  27. package/dist/index.cjs.map +1 -0
  28. package/dist/index.d.cts +4 -0
  29. package/dist/index.d.cts.map +1 -0
  30. package/dist/index.d.mts +4 -0
  31. package/dist/index.d.mts.map +1 -0
  32. package/dist/index.mjs +2 -19
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/types.cjs +3 -0
  35. package/dist/types.cjs.map +1 -0
  36. package/dist/types.d.cts +21 -0
  37. package/dist/types.d.cts.map +1 -0
  38. package/dist/types.d.mts +21 -0
  39. package/dist/types.d.mts.map +1 -0
  40. package/dist/types.mjs +1 -0
  41. package/dist/types.mjs.map +1 -1
  42. package/package.json +15 -10
  43. package/dist/AbstractPollingController.js +0 -9
  44. package/dist/AbstractPollingController.js.map +0 -1
  45. package/dist/BlockTrackerPollingController.js +0 -12
  46. package/dist/BlockTrackerPollingController.js.map +0 -1
  47. package/dist/StaticIntervalPollingController.js +0 -12
  48. package/dist/StaticIntervalPollingController.js.map +0 -1
  49. package/dist/chunk-E2WT3D73.mjs +0 -94
  50. package/dist/chunk-E2WT3D73.mjs.map +0 -1
  51. package/dist/chunk-JCXUPRTT.js +0 -94
  52. package/dist/chunk-JCXUPRTT.js.map +0 -1
  53. package/dist/chunk-JVLLYBTK.js +0 -69
  54. package/dist/chunk-JVLLYBTK.js.map +0 -1
  55. package/dist/chunk-L32FFEZO.mjs +0 -71
  56. package/dist/chunk-L32FFEZO.mjs.map +0 -1
  57. package/dist/chunk-RD6EX3RW.js +0 -71
  58. package/dist/chunk-RD6EX3RW.js.map +0 -1
  59. package/dist/chunk-YETJAOVF.mjs +0 -69
  60. package/dist/chunk-YETJAOVF.mjs.map +0 -1
  61. package/dist/index.js +0 -20
  62. package/dist/index.js.map +0 -1
  63. package/dist/tsconfig.build.tsbuildinfo +0 -1
  64. package/dist/types/AbstractPollingController.d.ts +0 -22
  65. package/dist/types/AbstractPollingController.d.ts.map +0 -1
  66. package/dist/types/BlockTrackerPollingController.d.ts +0 -47
  67. package/dist/types/BlockTrackerPollingController.d.ts.map +0 -1
  68. package/dist/types/StaticIntervalPollingController.d.ts +0 -58
  69. package/dist/types/StaticIntervalPollingController.d.ts.map +0 -1
  70. package/dist/types/index.d.ts +0 -4
  71. package/dist/types/index.d.ts.map +0 -1
  72. package/dist/types/types.d.ts +0 -22
  73. package/dist/types/types.d.ts.map +0 -1
  74. package/dist/types.js +0 -1
  75. package/dist/types.js.map +0 -1
@@ -1,94 +0,0 @@
1
- var __accessCheck = (obj, member, msg) => {
2
- if (!member.has(obj))
3
- throw TypeError("Cannot " + msg);
4
- };
5
- var __privateGet = (obj, member, getter) => {
6
- __accessCheck(obj, member, "read from private field");
7
- return getter ? getter.call(obj) : member.get(obj);
8
- };
9
- var __privateAdd = (obj, member, value) => {
10
- if (member.has(obj))
11
- throw TypeError("Cannot add the same private member more than once");
12
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
- };
14
- var __privateSet = (obj, member, value, setter) => {
15
- __accessCheck(obj, member, "write to private field");
16
- setter ? setter.call(obj, value) : member.set(obj, value);
17
- return value;
18
- };
19
-
20
- // src/AbstractPollingController.ts
21
- import stringify from "fast-json-stable-stringify";
22
- import { v4 as random } from "uuid";
23
- var getKey = (networkClientId, options) => `${networkClientId}:${stringify(options)}`;
24
- function AbstractPollingControllerBaseMixin(Base) {
25
- var _pollingTokenSets, _callbacks;
26
- class AbstractPollingControllerBase extends Base {
27
- constructor() {
28
- super(...arguments);
29
- __privateAdd(this, _pollingTokenSets, /* @__PURE__ */ new Map());
30
- __privateAdd(this, _callbacks, /* @__PURE__ */ new Map());
31
- }
32
- startPollingByNetworkClientId(networkClientId, options = {}) {
33
- const pollToken = random();
34
- const key = getKey(networkClientId, options);
35
- const pollingTokenSet = __privateGet(this, _pollingTokenSets).get(key) ?? /* @__PURE__ */ new Set();
36
- pollingTokenSet.add(pollToken);
37
- __privateGet(this, _pollingTokenSets).set(key, pollingTokenSet);
38
- if (pollingTokenSet.size === 1) {
39
- this._startPollingByNetworkClientId(networkClientId, options);
40
- }
41
- return pollToken;
42
- }
43
- stopAllPolling() {
44
- __privateGet(this, _pollingTokenSets).forEach((tokenSet, _key) => {
45
- tokenSet.forEach((token) => {
46
- this.stopPollingByPollingToken(token);
47
- });
48
- });
49
- }
50
- stopPollingByPollingToken(pollingToken) {
51
- if (!pollingToken) {
52
- throw new Error("pollingToken required");
53
- }
54
- let keyToDelete = null;
55
- for (const [key, tokenSet] of __privateGet(this, _pollingTokenSets)) {
56
- if (tokenSet.delete(pollingToken)) {
57
- if (tokenSet.size === 0) {
58
- keyToDelete = key;
59
- }
60
- break;
61
- }
62
- }
63
- if (keyToDelete) {
64
- this._stopPollingByPollingTokenSetId(keyToDelete);
65
- __privateGet(this, _pollingTokenSets).delete(keyToDelete);
66
- const callbacks = __privateGet(this, _callbacks).get(keyToDelete);
67
- if (callbacks) {
68
- for (const callback of callbacks) {
69
- callback(keyToDelete);
70
- }
71
- callbacks.clear();
72
- }
73
- }
74
- }
75
- onPollingCompleteByNetworkClientId(networkClientId, callback, options = {}) {
76
- const key = getKey(networkClientId, options);
77
- const callbacks = __privateGet(this, _callbacks).get(key) ?? /* @__PURE__ */ new Set();
78
- callbacks.add(callback);
79
- __privateGet(this, _callbacks).set(key, callbacks);
80
- }
81
- }
82
- _pollingTokenSets = new WeakMap();
83
- _callbacks = new WeakMap();
84
- return AbstractPollingControllerBase;
85
- }
86
-
87
- export {
88
- __privateGet,
89
- __privateAdd,
90
- __privateSet,
91
- getKey,
92
- AbstractPollingControllerBaseMixin
93
- };
94
- //# sourceMappingURL=chunk-E2WT3D73.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/AbstractPollingController.ts"],"sourcesContent":["import 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\nimport type {\n Constructor,\n PollingTokenSetId,\n IPollingController,\n} from './types';\n\nexport const getKey = (\n networkClientId: NetworkClientId,\n options: Json,\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n): PollingTokenSetId => `${networkClientId}:${stringify(options)}`;\n\n/**\n * AbstractPollingControllerBaseMixin\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function AbstractPollingControllerBaseMixin<TBase extends Constructor>(\n Base: TBase,\n) {\n abstract class AbstractPollingControllerBase\n extends Base\n implements IPollingController\n {\n readonly #pollingTokenSets: Map<PollingTokenSetId, Set<string>> = new Map();\n\n #callbacks: Map<\n PollingTokenSetId,\n Set<(PollingTokenSetId: PollingTokenSetId) => void>\n > = new Map();\n\n abstract _executePoll(\n networkClientId: NetworkClientId,\n options: Json,\n ): Promise<void>;\n\n abstract _startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json,\n ): void;\n\n abstract _stopPollingByPollingTokenSetId(key: PollingTokenSetId): void;\n\n startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json = {},\n ): string {\n const pollToken = random();\n const key = getKey(networkClientId, options);\n const pollingTokenSet =\n this.#pollingTokenSets.get(key) ?? new Set<string>();\n pollingTokenSet.add(pollToken);\n this.#pollingTokenSets.set(key, pollingTokenSet);\n\n if (pollingTokenSet.size === 1) {\n this._startPollingByNetworkClientId(networkClientId, options);\n }\n\n return pollToken;\n }\n\n stopAllPolling() {\n this.#pollingTokenSets.forEach((tokenSet, _key) => {\n tokenSet.forEach((token) => {\n this.stopPollingByPollingToken(token);\n });\n });\n }\n\n stopPollingByPollingToken(pollingToken: string) {\n if (!pollingToken) {\n throw new Error('pollingToken required');\n }\n\n let keyToDelete: PollingTokenSetId | null = null;\n for (const [key, tokenSet] of this.#pollingTokenSets) {\n if (tokenSet.delete(pollingToken)) {\n if (tokenSet.size === 0) {\n keyToDelete = key;\n }\n break;\n }\n }\n\n if (keyToDelete) {\n this._stopPollingByPollingTokenSetId(keyToDelete);\n this.#pollingTokenSets.delete(keyToDelete);\n const callbacks = this.#callbacks.get(keyToDelete);\n if (callbacks) {\n for (const callback of callbacks) {\n // eslint-disable-next-line n/callback-return\n callback(keyToDelete);\n }\n callbacks.clear();\n }\n }\n }\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) ?? new Set<typeof callback>();\n callbacks.add(callback);\n this.#callbacks.set(key, callbacks);\n }\n }\n return AbstractPollingControllerBase;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,OAAO,eAAe;AACtB,SAAS,MAAM,cAAc;AAQtB,IAAM,SAAS,CACpB,iBACA,YAGsB,GAAG,eAAe,IAAI,UAAU,OAAO,CAAC;AAUzD,SAAS,mCACd,MACA;AA5BF;AAAA,EA6BE,MAAe,sCACL,KAEV;AAAA,IAHA;AAAA;AAIE,yBAAS,mBAAyD,oBAAI,IAAI;AAE1E,qCAGI,oBAAI,IAAI;AAAA;AAAA,IAcZ,8BACE,iBACA,UAAgB,CAAC,GACT;AACR,YAAM,YAAY,OAAO;AACzB,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAC3C,YAAM,kBACJ,mBAAK,mBAAkB,IAAI,GAAG,KAAK,oBAAI,IAAY;AACrD,sBAAgB,IAAI,SAAS;AAC7B,yBAAK,mBAAkB,IAAI,KAAK,eAAe;AAE/C,UAAI,gBAAgB,SAAS,GAAG;AAC9B,aAAK,+BAA+B,iBAAiB,OAAO;AAAA,MAC9D;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,iBAAiB;AACf,yBAAK,mBAAkB,QAAQ,CAAC,UAAU,SAAS;AACjD,iBAAS,QAAQ,CAAC,UAAU;AAC1B,eAAK,0BAA0B,KAAK;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,0BAA0B,cAAsB;AAC9C,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI,MAAM,uBAAuB;AAAA,MACzC;AAEA,UAAI,cAAwC;AAC5C,iBAAW,CAAC,KAAK,QAAQ,KAAK,mBAAK,oBAAmB;AACpD,YAAI,SAAS,OAAO,YAAY,GAAG;AACjC,cAAI,SAAS,SAAS,GAAG;AACvB,0BAAc;AAAA,UAChB;AACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa;AACf,aAAK,gCAAgC,WAAW;AAChD,2BAAK,mBAAkB,OAAO,WAAW;AACzC,cAAM,YAAY,mBAAK,YAAW,IAAI,WAAW;AACjD,YAAI,WAAW;AACb,qBAAW,YAAY,WAAW;AAEhC,qBAAS,WAAW;AAAA,UACtB;AACA,oBAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mCACE,iBACA,UACA,UAAgB,CAAC,GACjB;AACA,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAC3C,YAAM,YAAY,mBAAK,YAAW,IAAI,GAAG,KAAK,oBAAI,IAAqB;AACvE,gBAAU,IAAI,QAAQ;AACtB,yBAAK,YAAW,IAAI,KAAK,SAAS;AAAA,IACpC;AAAA,EACF;AApFW;AAET;AAmFF,SAAO;AACT;","names":[]}
@@ -1,94 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var __accessCheck = (obj, member, msg) => {
2
- if (!member.has(obj))
3
- throw TypeError("Cannot " + msg);
4
- };
5
- var __privateGet = (obj, member, getter) => {
6
- __accessCheck(obj, member, "read from private field");
7
- return getter ? getter.call(obj) : member.get(obj);
8
- };
9
- var __privateAdd = (obj, member, value) => {
10
- if (member.has(obj))
11
- throw TypeError("Cannot add the same private member more than once");
12
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
- };
14
- var __privateSet = (obj, member, value, setter) => {
15
- __accessCheck(obj, member, "write to private field");
16
- setter ? setter.call(obj, value) : member.set(obj, value);
17
- return value;
18
- };
19
-
20
- // src/AbstractPollingController.ts
21
- var _fastjsonstablestringify = require('fast-json-stable-stringify'); var _fastjsonstablestringify2 = _interopRequireDefault(_fastjsonstablestringify);
22
- var _uuid = require('uuid');
23
- var getKey = (networkClientId, options) => `${networkClientId}:${_fastjsonstablestringify2.default.call(void 0, options)}`;
24
- function AbstractPollingControllerBaseMixin(Base) {
25
- var _pollingTokenSets, _callbacks;
26
- class AbstractPollingControllerBase extends Base {
27
- constructor() {
28
- super(...arguments);
29
- __privateAdd(this, _pollingTokenSets, /* @__PURE__ */ new Map());
30
- __privateAdd(this, _callbacks, /* @__PURE__ */ new Map());
31
- }
32
- startPollingByNetworkClientId(networkClientId, options = {}) {
33
- const pollToken = _uuid.v4.call(void 0, );
34
- const key = getKey(networkClientId, options);
35
- const pollingTokenSet = __privateGet(this, _pollingTokenSets).get(key) ?? /* @__PURE__ */ new Set();
36
- pollingTokenSet.add(pollToken);
37
- __privateGet(this, _pollingTokenSets).set(key, pollingTokenSet);
38
- if (pollingTokenSet.size === 1) {
39
- this._startPollingByNetworkClientId(networkClientId, options);
40
- }
41
- return pollToken;
42
- }
43
- stopAllPolling() {
44
- __privateGet(this, _pollingTokenSets).forEach((tokenSet, _key) => {
45
- tokenSet.forEach((token) => {
46
- this.stopPollingByPollingToken(token);
47
- });
48
- });
49
- }
50
- stopPollingByPollingToken(pollingToken) {
51
- if (!pollingToken) {
52
- throw new Error("pollingToken required");
53
- }
54
- let keyToDelete = null;
55
- for (const [key, tokenSet] of __privateGet(this, _pollingTokenSets)) {
56
- if (tokenSet.delete(pollingToken)) {
57
- if (tokenSet.size === 0) {
58
- keyToDelete = key;
59
- }
60
- break;
61
- }
62
- }
63
- if (keyToDelete) {
64
- this._stopPollingByPollingTokenSetId(keyToDelete);
65
- __privateGet(this, _pollingTokenSets).delete(keyToDelete);
66
- const callbacks = __privateGet(this, _callbacks).get(keyToDelete);
67
- if (callbacks) {
68
- for (const callback of callbacks) {
69
- callback(keyToDelete);
70
- }
71
- callbacks.clear();
72
- }
73
- }
74
- }
75
- onPollingCompleteByNetworkClientId(networkClientId, callback, options = {}) {
76
- const key = getKey(networkClientId, options);
77
- const callbacks = __privateGet(this, _callbacks).get(key) ?? /* @__PURE__ */ new Set();
78
- callbacks.add(callback);
79
- __privateGet(this, _callbacks).set(key, callbacks);
80
- }
81
- }
82
- _pollingTokenSets = new WeakMap();
83
- _callbacks = new WeakMap();
84
- return AbstractPollingControllerBase;
85
- }
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
- exports.__privateGet = __privateGet; exports.__privateAdd = __privateAdd; exports.__privateSet = __privateSet; exports.getKey = getKey; exports.AbstractPollingControllerBaseMixin = AbstractPollingControllerBaseMixin;
94
- //# sourceMappingURL=chunk-JCXUPRTT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/AbstractPollingController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,OAAO,eAAe;AACtB,SAAS,MAAM,cAAc;AAQtB,IAAM,SAAS,CACpB,iBACA,YAGsB,GAAG,eAAe,IAAI,UAAU,OAAO,CAAC;AAUzD,SAAS,mCACd,MACA;AA5BF;AAAA,EA6BE,MAAe,sCACL,KAEV;AAAA,IAHA;AAAA;AAIE,yBAAS,mBAAyD,oBAAI,IAAI;AAE1E,qCAGI,oBAAI,IAAI;AAAA;AAAA,IAcZ,8BACE,iBACA,UAAgB,CAAC,GACT;AACR,YAAM,YAAY,OAAO;AACzB,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAC3C,YAAM,kBACJ,mBAAK,mBAAkB,IAAI,GAAG,KAAK,oBAAI,IAAY;AACrD,sBAAgB,IAAI,SAAS;AAC7B,yBAAK,mBAAkB,IAAI,KAAK,eAAe;AAE/C,UAAI,gBAAgB,SAAS,GAAG;AAC9B,aAAK,+BAA+B,iBAAiB,OAAO;AAAA,MAC9D;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,iBAAiB;AACf,yBAAK,mBAAkB,QAAQ,CAAC,UAAU,SAAS;AACjD,iBAAS,QAAQ,CAAC,UAAU;AAC1B,eAAK,0BAA0B,KAAK;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,IAEA,0BAA0B,cAAsB;AAC9C,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI,MAAM,uBAAuB;AAAA,MACzC;AAEA,UAAI,cAAwC;AAC5C,iBAAW,CAAC,KAAK,QAAQ,KAAK,mBAAK,oBAAmB;AACpD,YAAI,SAAS,OAAO,YAAY,GAAG;AACjC,cAAI,SAAS,SAAS,GAAG;AACvB,0BAAc;AAAA,UAChB;AACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa;AACf,aAAK,gCAAgC,WAAW;AAChD,2BAAK,mBAAkB,OAAO,WAAW;AACzC,cAAM,YAAY,mBAAK,YAAW,IAAI,WAAW;AACjD,YAAI,WAAW;AACb,qBAAW,YAAY,WAAW;AAEhC,qBAAS,WAAW;AAAA,UACtB;AACA,oBAAU,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mCACE,iBACA,UACA,UAAgB,CAAC,GACjB;AACA,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAC3C,YAAM,YAAY,mBAAK,YAAW,IAAI,GAAG,KAAK,oBAAI,IAAqB;AACvE,gBAAU,IAAI,QAAQ;AACtB,yBAAK,YAAW,IAAI,KAAK,SAAS;AAAA,IACpC;AAAA,EACF;AApFW;AAET;AAmFF,SAAO;AACT","sourcesContent":["import 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\nimport type {\n Constructor,\n PollingTokenSetId,\n IPollingController,\n} from './types';\n\nexport const getKey = (\n networkClientId: NetworkClientId,\n options: Json,\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n): PollingTokenSetId => `${networkClientId}:${stringify(options)}`;\n\n/**\n * AbstractPollingControllerBaseMixin\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function AbstractPollingControllerBaseMixin<TBase extends Constructor>(\n Base: TBase,\n) {\n abstract class AbstractPollingControllerBase\n extends Base\n implements IPollingController\n {\n readonly #pollingTokenSets: Map<PollingTokenSetId, Set<string>> = new Map();\n\n #callbacks: Map<\n PollingTokenSetId,\n Set<(PollingTokenSetId: PollingTokenSetId) => void>\n > = new Map();\n\n abstract _executePoll(\n networkClientId: NetworkClientId,\n options: Json,\n ): Promise<void>;\n\n abstract _startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json,\n ): void;\n\n abstract _stopPollingByPollingTokenSetId(key: PollingTokenSetId): void;\n\n startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json = {},\n ): string {\n const pollToken = random();\n const key = getKey(networkClientId, options);\n const pollingTokenSet =\n this.#pollingTokenSets.get(key) ?? new Set<string>();\n pollingTokenSet.add(pollToken);\n this.#pollingTokenSets.set(key, pollingTokenSet);\n\n if (pollingTokenSet.size === 1) {\n this._startPollingByNetworkClientId(networkClientId, options);\n }\n\n return pollToken;\n }\n\n stopAllPolling() {\n this.#pollingTokenSets.forEach((tokenSet, _key) => {\n tokenSet.forEach((token) => {\n this.stopPollingByPollingToken(token);\n });\n });\n }\n\n stopPollingByPollingToken(pollingToken: string) {\n if (!pollingToken) {\n throw new Error('pollingToken required');\n }\n\n let keyToDelete: PollingTokenSetId | null = null;\n for (const [key, tokenSet] of this.#pollingTokenSets) {\n if (tokenSet.delete(pollingToken)) {\n if (tokenSet.size === 0) {\n keyToDelete = key;\n }\n break;\n }\n }\n\n if (keyToDelete) {\n this._stopPollingByPollingTokenSetId(keyToDelete);\n this.#pollingTokenSets.delete(keyToDelete);\n const callbacks = this.#callbacks.get(keyToDelete);\n if (callbacks) {\n for (const callback of callbacks) {\n // eslint-disable-next-line n/callback-return\n callback(keyToDelete);\n }\n callbacks.clear();\n }\n }\n }\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) ?? new Set<typeof callback>();\n callbacks.add(callback);\n this.#callbacks.set(key, callbacks);\n }\n }\n return AbstractPollingControllerBase;\n}\n"]}
@@ -1,69 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
- var _chunkJCXUPRTTjs = require('./chunk-JCXUPRTT.js');
7
-
8
- // src/BlockTrackerPollingController.ts
9
- var _basecontroller = require('@metamask/base-controller');
10
- function BlockTrackerPollingControllerMixin(Base) {
11
- var _activeListeners;
12
- class BlockTrackerPollingController2 extends _chunkJCXUPRTTjs.AbstractPollingControllerBaseMixin.call(void 0,
13
- Base
14
- ) {
15
- constructor() {
16
- super(...arguments);
17
- _chunkJCXUPRTTjs.__privateAdd.call(void 0, this, _activeListeners, {});
18
- }
19
- _startPollingByNetworkClientId(networkClientId, options) {
20
- const key = _chunkJCXUPRTTjs.getKey.call(void 0, networkClientId, options);
21
- if (_chunkJCXUPRTTjs.__privateGet.call(void 0, this, _activeListeners)[key]) {
22
- return;
23
- }
24
- const networkClient = this._getNetworkClientById(networkClientId);
25
- if (networkClient) {
26
- const updateOnNewBlock = this._executePoll.bind(
27
- this,
28
- networkClientId,
29
- options
30
- );
31
- networkClient.blockTracker.addListener("latest", updateOnNewBlock);
32
- _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _activeListeners)[key] = updateOnNewBlock;
33
- } else {
34
- throw new Error(
35
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
36
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
37
- `Unable to retrieve blockTracker for networkClientId ${networkClientId}`
38
- );
39
- }
40
- }
41
- _stopPollingByPollingTokenSetId(key) {
42
- const [networkClientId] = key.split(":");
43
- const networkClient = this._getNetworkClientById(
44
- networkClientId
45
- );
46
- if (networkClient && _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _activeListeners)[key]) {
47
- const listener = _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _activeListeners)[key];
48
- if (listener) {
49
- networkClient.blockTracker.removeListener("latest", listener);
50
- delete _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _activeListeners)[key];
51
- }
52
- }
53
- }
54
- }
55
- _activeListeners = new WeakMap();
56
- return BlockTrackerPollingController2;
57
- }
58
- var Empty = class {
59
- };
60
- var BlockTrackerPollingControllerOnly = BlockTrackerPollingControllerMixin(Empty);
61
- var BlockTrackerPollingController = BlockTrackerPollingControllerMixin(_basecontroller.BaseController);
62
- var BlockTrackerPollingControllerV1 = BlockTrackerPollingControllerMixin(_basecontroller.BaseControllerV1);
63
-
64
-
65
-
66
-
67
-
68
- exports.BlockTrackerPollingControllerOnly = BlockTrackerPollingControllerOnly; exports.BlockTrackerPollingController = BlockTrackerPollingController; exports.BlockTrackerPollingControllerV1 = BlockTrackerPollingControllerV1;
69
- //# sourceMappingURL=chunk-JVLLYBTK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/BlockTrackerPollingController.ts"],"names":["BlockTrackerPollingController"],"mappings":";;;;;;;;AAAA,SAAS,gBAAgB,wBAAwB;AAsBjD,SAAS,mCACP,MACA;AAxBF;AAAA,EAyBE,MAAeA,uCAAsC;AAAA,IACnD;AAAA,EACF,EAAE;AAAA,IAFF;AAAA;AAGE,2CAAqE,CAAC;AAAA;AAAA,IAMtE,+BACE,iBACA,SACA;AACA,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAE3C,UAAI,mBAAK,kBAAiB,GAAG,GAAG;AAC9B;AAAA,MACF;AAEA,YAAM,gBAAgB,KAAK,sBAAsB,eAAe;AAChE,UAAI,eAAe;AACjB,cAAM,mBAAmB,KAAK,aAAa;AAAA,UACzC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAGA,sBAAc,aAAa,YAAY,UAAU,gBAAgB;AACjE,2BAAK,kBAAiB,GAAG,IAAI;AAAA,MAC/B,OAAO;AACL,cAAM,IAAI;AAAA;AAAA;AAAA,UAGR,uDAAuD,eAAe;AAAA,QACxE;AAAA,MACF;AAAA,IACF;AAAA,IAEA,gCAAgC,KAAwB;AACtD,YAAM,CAAC,eAAe,IAAI,IAAI,MAAM,GAAG;AACvC,YAAM,gBAAgB,KAAK;AAAA,QACzB;AAAA,MACF;AAEA,UAAI,iBAAiB,mBAAK,kBAAiB,GAAG,GAAG;AAC/C,cAAM,WAAW,mBAAK,kBAAiB,GAAG;AAC1C,YAAI,UAAU;AAGZ,wBAAc,aAAa,eAAe,UAAU,QAAQ;AAC5D,iBAAO,mBAAK,kBAAiB,GAAG;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AApDE;AAsDF,SAAOA;AACT;AAEA,IAAM,QAAN,MAAY;AAAC;AAEN,IAAM,oCACX,mCAAmC,KAAK;AACnC,IAAM,gCACX,mCAAmC,cAAc;AAC5C,IAAM,kCACX,mCAAmC,gBAAgB","sourcesContent":["import { BaseController, BaseControllerV1 } from '@metamask/base-controller';\nimport type {\n NetworkClientId,\n NetworkClient,\n} from '@metamask/network-controller';\nimport type { Json } from '@metamask/utils';\n\nimport {\n AbstractPollingControllerBaseMixin,\n getKey,\n} from './AbstractPollingController';\nimport type { Constructor, PollingTokenSetId } from './types';\n\n/**\n * BlockTrackerPollingControllerMixin\n * A polling controller that polls using a block tracker.\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction BlockTrackerPollingControllerMixin<TBase extends Constructor>(\n Base: TBase,\n) {\n abstract class BlockTrackerPollingController extends AbstractPollingControllerBaseMixin(\n Base,\n ) {\n #activeListeners: Record<string, (options: Json) => Promise<void>> = {};\n\n abstract _getNetworkClientById(\n networkClientId: NetworkClientId,\n ): NetworkClient | undefined;\n\n _startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json,\n ) {\n const key = getKey(networkClientId, options);\n\n if (this.#activeListeners[key]) {\n return;\n }\n\n const networkClient = this._getNetworkClientById(networkClientId);\n if (networkClient) {\n const updateOnNewBlock = this._executePoll.bind(\n this,\n networkClientId,\n options,\n );\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n networkClient.blockTracker.addListener('latest', updateOnNewBlock);\n this.#activeListeners[key] = updateOnNewBlock;\n } else {\n throw new Error(\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Unable to retrieve blockTracker for networkClientId ${networkClientId}`,\n );\n }\n }\n\n _stopPollingByPollingTokenSetId(key: PollingTokenSetId) {\n const [networkClientId] = key.split(':');\n const networkClient = this._getNetworkClientById(\n networkClientId as NetworkClientId,\n );\n\n if (networkClient && this.#activeListeners[key]) {\n const listener = this.#activeListeners[key];\n if (listener) {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n networkClient.blockTracker.removeListener('latest', listener);\n delete this.#activeListeners[key];\n }\n }\n }\n }\n\n return BlockTrackerPollingController;\n}\n\nclass Empty {}\n\nexport const BlockTrackerPollingControllerOnly =\n BlockTrackerPollingControllerMixin(Empty);\nexport const BlockTrackerPollingController =\n BlockTrackerPollingControllerMixin(BaseController);\nexport const BlockTrackerPollingControllerV1 =\n BlockTrackerPollingControllerMixin(BaseControllerV1);\n"]}
@@ -1,71 +0,0 @@
1
- import {
2
- AbstractPollingControllerBaseMixin,
3
- __privateAdd,
4
- __privateGet,
5
- __privateSet,
6
- getKey
7
- } from "./chunk-E2WT3D73.mjs";
8
-
9
- // src/StaticIntervalPollingController.ts
10
- import { BaseController, BaseControllerV1 } from "@metamask/base-controller";
11
- function StaticIntervalPollingControllerMixin(Base) {
12
- var _intervalIds, _intervalLength;
13
- class StaticIntervalPollingController2 extends AbstractPollingControllerBaseMixin(Base) {
14
- constructor() {
15
- super(...arguments);
16
- __privateAdd(this, _intervalIds, {});
17
- __privateAdd(this, _intervalLength, 1e3);
18
- }
19
- setIntervalLength(intervalLength) {
20
- __privateSet(this, _intervalLength, intervalLength);
21
- }
22
- getIntervalLength() {
23
- return __privateGet(this, _intervalLength);
24
- }
25
- _startPollingByNetworkClientId(networkClientId, options) {
26
- if (!__privateGet(this, _intervalLength)) {
27
- throw new Error("intervalLength must be defined and greater than 0");
28
- }
29
- const key = getKey(networkClientId, options);
30
- const existingInterval = __privateGet(this, _intervalIds)[key];
31
- this._stopPollingByPollingTokenSetId(key);
32
- const intervalId = __privateGet(this, _intervalIds)[key] = setTimeout(
33
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
34
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
35
- async () => {
36
- try {
37
- await this._executePoll(networkClientId, options);
38
- } catch (error) {
39
- console.error(error);
40
- }
41
- if (intervalId === __privateGet(this, _intervalIds)[key]) {
42
- this._startPollingByNetworkClientId(networkClientId, options);
43
- }
44
- },
45
- existingInterval ? __privateGet(this, _intervalLength) : 0
46
- );
47
- }
48
- _stopPollingByPollingTokenSetId(key) {
49
- const intervalId = __privateGet(this, _intervalIds)[key];
50
- if (intervalId) {
51
- clearTimeout(intervalId);
52
- delete __privateGet(this, _intervalIds)[key];
53
- }
54
- }
55
- }
56
- _intervalIds = new WeakMap();
57
- _intervalLength = new WeakMap();
58
- return StaticIntervalPollingController2;
59
- }
60
- var Empty = class {
61
- };
62
- var StaticIntervalPollingControllerOnly = StaticIntervalPollingControllerMixin(Empty);
63
- var StaticIntervalPollingController = StaticIntervalPollingControllerMixin(BaseController);
64
- var StaticIntervalPollingControllerV1 = StaticIntervalPollingControllerMixin(BaseControllerV1);
65
-
66
- export {
67
- StaticIntervalPollingControllerOnly,
68
- StaticIntervalPollingController,
69
- StaticIntervalPollingControllerV1
70
- };
71
- //# sourceMappingURL=chunk-L32FFEZO.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/StaticIntervalPollingController.ts"],"sourcesContent":["import { BaseController, BaseControllerV1 } from '@metamask/base-controller';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json } from '@metamask/utils';\n\nimport {\n AbstractPollingControllerBaseMixin,\n getKey,\n} from './AbstractPollingController';\nimport type {\n Constructor,\n IPollingController,\n PollingTokenSetId,\n} from './types';\n\n/**\n * StaticIntervalPollingControllerMixin\n * A polling controller that polls on a static interval.\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction StaticIntervalPollingControllerMixin<TBase extends Constructor>(\n Base: TBase,\n) {\n abstract class StaticIntervalPollingController\n extends AbstractPollingControllerBaseMixin(Base)\n implements IPollingController\n {\n readonly #intervalIds: Record<PollingTokenSetId, NodeJS.Timeout> = {};\n\n #intervalLength: number | undefined = 1000;\n\n setIntervalLength(intervalLength: number) {\n this.#intervalLength = intervalLength;\n }\n\n getIntervalLength() {\n return this.#intervalLength;\n }\n\n _startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json,\n ) {\n if (!this.#intervalLength) {\n throw new Error('intervalLength must be defined and greater than 0');\n }\n\n const key = getKey(networkClientId, options);\n const existingInterval = this.#intervalIds[key];\n this._stopPollingByPollingTokenSetId(key);\n\n // eslint-disable-next-line no-multi-assign\n const intervalId = (this.#intervalIds[key] = setTimeout(\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n async () => {\n try {\n await this._executePoll(networkClientId, options);\n } catch (error) {\n console.error(error);\n }\n if (intervalId === this.#intervalIds[key]) {\n this._startPollingByNetworkClientId(networkClientId, options);\n }\n },\n existingInterval ? this.#intervalLength : 0,\n ));\n }\n\n _stopPollingByPollingTokenSetId(key: PollingTokenSetId) {\n const intervalId = this.#intervalIds[key];\n if (intervalId) {\n clearTimeout(intervalId);\n delete this.#intervalIds[key];\n }\n }\n }\n\n return StaticIntervalPollingController;\n}\n\nclass Empty {}\n\nexport const StaticIntervalPollingControllerOnly =\n StaticIntervalPollingControllerMixin(Empty);\nexport const StaticIntervalPollingController =\n StaticIntervalPollingControllerMixin(BaseController);\nexport const StaticIntervalPollingControllerV1 =\n StaticIntervalPollingControllerMixin(BaseControllerV1);\n"],"mappings":";;;;;;;;;AAAA,SAAS,gBAAgB,wBAAwB;AAuBjD,SAAS,qCACP,MACA;AAzBF;AAAA,EA0BE,MAAeA,yCACL,mCAAmC,IAAI,EAEjD;AAAA,IAHA;AAAA;AAIE,yBAAS,cAA0D,CAAC;AAEpE,0CAAsC;AAAA;AAAA,IAEtC,kBAAkB,gBAAwB;AACxC,yBAAK,iBAAkB;AAAA,IACzB;AAAA,IAEA,oBAAoB;AAClB,aAAO,mBAAK;AAAA,IACd;AAAA,IAEA,+BACE,iBACA,SACA;AACA,UAAI,CAAC,mBAAK,kBAAiB;AACzB,cAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAEA,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAC3C,YAAM,mBAAmB,mBAAK,cAAa,GAAG;AAC9C,WAAK,gCAAgC,GAAG;AAGxC,YAAM,aAAc,mBAAK,cAAa,GAAG,IAAI;AAAA;AAAA;AAAA,QAG3C,YAAY;AACV,cAAI;AACF,kBAAM,KAAK,aAAa,iBAAiB,OAAO;AAAA,UAClD,SAAS,OAAO;AACd,oBAAQ,MAAM,KAAK;AAAA,UACrB;AACA,cAAI,eAAe,mBAAK,cAAa,GAAG,GAAG;AACzC,iBAAK,+BAA+B,iBAAiB,OAAO;AAAA,UAC9D;AAAA,QACF;AAAA,QACA,mBAAmB,mBAAK,mBAAkB;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,gCAAgC,KAAwB;AACtD,YAAM,aAAa,mBAAK,cAAa,GAAG;AACxC,UAAI,YAAY;AACd,qBAAa,UAAU;AACvB,eAAO,mBAAK,cAAa,GAAG;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAjDW;AAET;AAiDF,SAAOA;AACT;AAEA,IAAM,QAAN,MAAY;AAAC;AAEN,IAAM,sCACX,qCAAqC,KAAK;AACrC,IAAM,kCACX,qCAAqC,cAAc;AAC9C,IAAM,oCACX,qCAAqC,gBAAgB;","names":["StaticIntervalPollingController"]}
@@ -1,71 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
-
7
- var _chunkJCXUPRTTjs = require('./chunk-JCXUPRTT.js');
8
-
9
- // src/StaticIntervalPollingController.ts
10
- var _basecontroller = require('@metamask/base-controller');
11
- function StaticIntervalPollingControllerMixin(Base) {
12
- var _intervalIds, _intervalLength;
13
- class StaticIntervalPollingController2 extends _chunkJCXUPRTTjs.AbstractPollingControllerBaseMixin.call(void 0, Base) {
14
- constructor() {
15
- super(...arguments);
16
- _chunkJCXUPRTTjs.__privateAdd.call(void 0, this, _intervalIds, {});
17
- _chunkJCXUPRTTjs.__privateAdd.call(void 0, this, _intervalLength, 1e3);
18
- }
19
- setIntervalLength(intervalLength) {
20
- _chunkJCXUPRTTjs.__privateSet.call(void 0, this, _intervalLength, intervalLength);
21
- }
22
- getIntervalLength() {
23
- return _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalLength);
24
- }
25
- _startPollingByNetworkClientId(networkClientId, options) {
26
- if (!_chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalLength)) {
27
- throw new Error("intervalLength must be defined and greater than 0");
28
- }
29
- const key = _chunkJCXUPRTTjs.getKey.call(void 0, networkClientId, options);
30
- const existingInterval = _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalIds)[key];
31
- this._stopPollingByPollingTokenSetId(key);
32
- const intervalId = _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalIds)[key] = setTimeout(
33
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
34
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
35
- async () => {
36
- try {
37
- await this._executePoll(networkClientId, options);
38
- } catch (error) {
39
- console.error(error);
40
- }
41
- if (intervalId === _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalIds)[key]) {
42
- this._startPollingByNetworkClientId(networkClientId, options);
43
- }
44
- },
45
- existingInterval ? _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalLength) : 0
46
- );
47
- }
48
- _stopPollingByPollingTokenSetId(key) {
49
- const intervalId = _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalIds)[key];
50
- if (intervalId) {
51
- clearTimeout(intervalId);
52
- delete _chunkJCXUPRTTjs.__privateGet.call(void 0, this, _intervalIds)[key];
53
- }
54
- }
55
- }
56
- _intervalIds = new WeakMap();
57
- _intervalLength = new WeakMap();
58
- return StaticIntervalPollingController2;
59
- }
60
- var Empty = class {
61
- };
62
- var StaticIntervalPollingControllerOnly = StaticIntervalPollingControllerMixin(Empty);
63
- var StaticIntervalPollingController = StaticIntervalPollingControllerMixin(_basecontroller.BaseController);
64
- var StaticIntervalPollingControllerV1 = StaticIntervalPollingControllerMixin(_basecontroller.BaseControllerV1);
65
-
66
-
67
-
68
-
69
-
70
- exports.StaticIntervalPollingControllerOnly = StaticIntervalPollingControllerOnly; exports.StaticIntervalPollingController = StaticIntervalPollingController; exports.StaticIntervalPollingControllerV1 = StaticIntervalPollingControllerV1;
71
- //# sourceMappingURL=chunk-RD6EX3RW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/StaticIntervalPollingController.ts"],"names":["StaticIntervalPollingController"],"mappings":";;;;;;;;;AAAA,SAAS,gBAAgB,wBAAwB;AAuBjD,SAAS,qCACP,MACA;AAzBF;AAAA,EA0BE,MAAeA,yCACL,mCAAmC,IAAI,EAEjD;AAAA,IAHA;AAAA;AAIE,yBAAS,cAA0D,CAAC;AAEpE,0CAAsC;AAAA;AAAA,IAEtC,kBAAkB,gBAAwB;AACxC,yBAAK,iBAAkB;AAAA,IACzB;AAAA,IAEA,oBAAoB;AAClB,aAAO,mBAAK;AAAA,IACd;AAAA,IAEA,+BACE,iBACA,SACA;AACA,UAAI,CAAC,mBAAK,kBAAiB;AACzB,cAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AAEA,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAC3C,YAAM,mBAAmB,mBAAK,cAAa,GAAG;AAC9C,WAAK,gCAAgC,GAAG;AAGxC,YAAM,aAAc,mBAAK,cAAa,GAAG,IAAI;AAAA;AAAA;AAAA,QAG3C,YAAY;AACV,cAAI;AACF,kBAAM,KAAK,aAAa,iBAAiB,OAAO;AAAA,UAClD,SAAS,OAAO;AACd,oBAAQ,MAAM,KAAK;AAAA,UACrB;AACA,cAAI,eAAe,mBAAK,cAAa,GAAG,GAAG;AACzC,iBAAK,+BAA+B,iBAAiB,OAAO;AAAA,UAC9D;AAAA,QACF;AAAA,QACA,mBAAmB,mBAAK,mBAAkB;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,gCAAgC,KAAwB;AACtD,YAAM,aAAa,mBAAK,cAAa,GAAG;AACxC,UAAI,YAAY;AACd,qBAAa,UAAU;AACvB,eAAO,mBAAK,cAAa,GAAG;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAjDW;AAET;AAiDF,SAAOA;AACT;AAEA,IAAM,QAAN,MAAY;AAAC;AAEN,IAAM,sCACX,qCAAqC,KAAK;AACrC,IAAM,kCACX,qCAAqC,cAAc;AAC9C,IAAM,oCACX,qCAAqC,gBAAgB","sourcesContent":["import { BaseController, BaseControllerV1 } from '@metamask/base-controller';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport type { Json } from '@metamask/utils';\n\nimport {\n AbstractPollingControllerBaseMixin,\n getKey,\n} from './AbstractPollingController';\nimport type {\n Constructor,\n IPollingController,\n PollingTokenSetId,\n} from './types';\n\n/**\n * StaticIntervalPollingControllerMixin\n * A polling controller that polls on a static interval.\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction StaticIntervalPollingControllerMixin<TBase extends Constructor>(\n Base: TBase,\n) {\n abstract class StaticIntervalPollingController\n extends AbstractPollingControllerBaseMixin(Base)\n implements IPollingController\n {\n readonly #intervalIds: Record<PollingTokenSetId, NodeJS.Timeout> = {};\n\n #intervalLength: number | undefined = 1000;\n\n setIntervalLength(intervalLength: number) {\n this.#intervalLength = intervalLength;\n }\n\n getIntervalLength() {\n return this.#intervalLength;\n }\n\n _startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json,\n ) {\n if (!this.#intervalLength) {\n throw new Error('intervalLength must be defined and greater than 0');\n }\n\n const key = getKey(networkClientId, options);\n const existingInterval = this.#intervalIds[key];\n this._stopPollingByPollingTokenSetId(key);\n\n // eslint-disable-next-line no-multi-assign\n const intervalId = (this.#intervalIds[key] = setTimeout(\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n async () => {\n try {\n await this._executePoll(networkClientId, options);\n } catch (error) {\n console.error(error);\n }\n if (intervalId === this.#intervalIds[key]) {\n this._startPollingByNetworkClientId(networkClientId, options);\n }\n },\n existingInterval ? this.#intervalLength : 0,\n ));\n }\n\n _stopPollingByPollingTokenSetId(key: PollingTokenSetId) {\n const intervalId = this.#intervalIds[key];\n if (intervalId) {\n clearTimeout(intervalId);\n delete this.#intervalIds[key];\n }\n }\n }\n\n return StaticIntervalPollingController;\n}\n\nclass Empty {}\n\nexport const StaticIntervalPollingControllerOnly =\n StaticIntervalPollingControllerMixin(Empty);\nexport const StaticIntervalPollingController =\n StaticIntervalPollingControllerMixin(BaseController);\nexport const StaticIntervalPollingControllerV1 =\n StaticIntervalPollingControllerMixin(BaseControllerV1);\n"]}
@@ -1,69 +0,0 @@
1
- import {
2
- AbstractPollingControllerBaseMixin,
3
- __privateAdd,
4
- __privateGet,
5
- getKey
6
- } from "./chunk-E2WT3D73.mjs";
7
-
8
- // src/BlockTrackerPollingController.ts
9
- import { BaseController, BaseControllerV1 } from "@metamask/base-controller";
10
- function BlockTrackerPollingControllerMixin(Base) {
11
- var _activeListeners;
12
- class BlockTrackerPollingController2 extends AbstractPollingControllerBaseMixin(
13
- Base
14
- ) {
15
- constructor() {
16
- super(...arguments);
17
- __privateAdd(this, _activeListeners, {});
18
- }
19
- _startPollingByNetworkClientId(networkClientId, options) {
20
- const key = getKey(networkClientId, options);
21
- if (__privateGet(this, _activeListeners)[key]) {
22
- return;
23
- }
24
- const networkClient = this._getNetworkClientById(networkClientId);
25
- if (networkClient) {
26
- const updateOnNewBlock = this._executePoll.bind(
27
- this,
28
- networkClientId,
29
- options
30
- );
31
- networkClient.blockTracker.addListener("latest", updateOnNewBlock);
32
- __privateGet(this, _activeListeners)[key] = updateOnNewBlock;
33
- } else {
34
- throw new Error(
35
- // TODO: Either fix this lint violation or explain why it's necessary to ignore.
36
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
37
- `Unable to retrieve blockTracker for networkClientId ${networkClientId}`
38
- );
39
- }
40
- }
41
- _stopPollingByPollingTokenSetId(key) {
42
- const [networkClientId] = key.split(":");
43
- const networkClient = this._getNetworkClientById(
44
- networkClientId
45
- );
46
- if (networkClient && __privateGet(this, _activeListeners)[key]) {
47
- const listener = __privateGet(this, _activeListeners)[key];
48
- if (listener) {
49
- networkClient.blockTracker.removeListener("latest", listener);
50
- delete __privateGet(this, _activeListeners)[key];
51
- }
52
- }
53
- }
54
- }
55
- _activeListeners = new WeakMap();
56
- return BlockTrackerPollingController2;
57
- }
58
- var Empty = class {
59
- };
60
- var BlockTrackerPollingControllerOnly = BlockTrackerPollingControllerMixin(Empty);
61
- var BlockTrackerPollingController = BlockTrackerPollingControllerMixin(BaseController);
62
- var BlockTrackerPollingControllerV1 = BlockTrackerPollingControllerMixin(BaseControllerV1);
63
-
64
- export {
65
- BlockTrackerPollingControllerOnly,
66
- BlockTrackerPollingController,
67
- BlockTrackerPollingControllerV1
68
- };
69
- //# sourceMappingURL=chunk-YETJAOVF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/BlockTrackerPollingController.ts"],"sourcesContent":["import { BaseController, BaseControllerV1 } from '@metamask/base-controller';\nimport type {\n NetworkClientId,\n NetworkClient,\n} from '@metamask/network-controller';\nimport type { Json } from '@metamask/utils';\n\nimport {\n AbstractPollingControllerBaseMixin,\n getKey,\n} from './AbstractPollingController';\nimport type { Constructor, PollingTokenSetId } from './types';\n\n/**\n * BlockTrackerPollingControllerMixin\n * A polling controller that polls using a block tracker.\n *\n * @param Base - The base class to mix onto.\n * @returns The composed class.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction BlockTrackerPollingControllerMixin<TBase extends Constructor>(\n Base: TBase,\n) {\n abstract class BlockTrackerPollingController extends AbstractPollingControllerBaseMixin(\n Base,\n ) {\n #activeListeners: Record<string, (options: Json) => Promise<void>> = {};\n\n abstract _getNetworkClientById(\n networkClientId: NetworkClientId,\n ): NetworkClient | undefined;\n\n _startPollingByNetworkClientId(\n networkClientId: NetworkClientId,\n options: Json,\n ) {\n const key = getKey(networkClientId, options);\n\n if (this.#activeListeners[key]) {\n return;\n }\n\n const networkClient = this._getNetworkClientById(networkClientId);\n if (networkClient) {\n const updateOnNewBlock = this._executePoll.bind(\n this,\n networkClientId,\n options,\n );\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n networkClient.blockTracker.addListener('latest', updateOnNewBlock);\n this.#activeListeners[key] = updateOnNewBlock;\n } else {\n throw new Error(\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Unable to retrieve blockTracker for networkClientId ${networkClientId}`,\n );\n }\n }\n\n _stopPollingByPollingTokenSetId(key: PollingTokenSetId) {\n const [networkClientId] = key.split(':');\n const networkClient = this._getNetworkClientById(\n networkClientId as NetworkClientId,\n );\n\n if (networkClient && this.#activeListeners[key]) {\n const listener = this.#activeListeners[key];\n if (listener) {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n networkClient.blockTracker.removeListener('latest', listener);\n delete this.#activeListeners[key];\n }\n }\n }\n }\n\n return BlockTrackerPollingController;\n}\n\nclass Empty {}\n\nexport const BlockTrackerPollingControllerOnly =\n BlockTrackerPollingControllerMixin(Empty);\nexport const BlockTrackerPollingController =\n BlockTrackerPollingControllerMixin(BaseController);\nexport const BlockTrackerPollingControllerV1 =\n BlockTrackerPollingControllerMixin(BaseControllerV1);\n"],"mappings":";;;;;;;;AAAA,SAAS,gBAAgB,wBAAwB;AAsBjD,SAAS,mCACP,MACA;AAxBF;AAAA,EAyBE,MAAeA,uCAAsC;AAAA,IACnD;AAAA,EACF,EAAE;AAAA,IAFF;AAAA;AAGE,2CAAqE,CAAC;AAAA;AAAA,IAMtE,+BACE,iBACA,SACA;AACA,YAAM,MAAM,OAAO,iBAAiB,OAAO;AAE3C,UAAI,mBAAK,kBAAiB,GAAG,GAAG;AAC9B;AAAA,MACF;AAEA,YAAM,gBAAgB,KAAK,sBAAsB,eAAe;AAChE,UAAI,eAAe;AACjB,cAAM,mBAAmB,KAAK,aAAa;AAAA,UACzC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAGA,sBAAc,aAAa,YAAY,UAAU,gBAAgB;AACjE,2BAAK,kBAAiB,GAAG,IAAI;AAAA,MAC/B,OAAO;AACL,cAAM,IAAI;AAAA;AAAA;AAAA,UAGR,uDAAuD,eAAe;AAAA,QACxE;AAAA,MACF;AAAA,IACF;AAAA,IAEA,gCAAgC,KAAwB;AACtD,YAAM,CAAC,eAAe,IAAI,IAAI,MAAM,GAAG;AACvC,YAAM,gBAAgB,KAAK;AAAA,QACzB;AAAA,MACF;AAEA,UAAI,iBAAiB,mBAAK,kBAAiB,GAAG,GAAG;AAC/C,cAAM,WAAW,mBAAK,kBAAiB,GAAG;AAC1C,YAAI,UAAU;AAGZ,wBAAc,aAAa,eAAe,UAAU,QAAQ;AAC5D,iBAAO,mBAAK,kBAAiB,GAAG;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AApDE;AAsDF,SAAOA;AACT;AAEA,IAAM,QAAN,MAAY;AAAC;AAEN,IAAM,oCACX,mCAAmC,KAAK;AACnC,IAAM,gCACX,mCAAmC,cAAc;AAC5C,IAAM,kCACX,mCAAmC,gBAAgB;","names":["BlockTrackerPollingController"]}
package/dist/index.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
- var _chunkJVLLYBTKjs = require('./chunk-JVLLYBTK.js');
6
-
7
-
8
-
9
-
10
- var _chunkRD6EX3RWjs = require('./chunk-RD6EX3RW.js');
11
- require('./chunk-JCXUPRTT.js');
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
- exports.BlockTrackerPollingController = _chunkJVLLYBTKjs.BlockTrackerPollingController; exports.BlockTrackerPollingControllerOnly = _chunkJVLLYBTKjs.BlockTrackerPollingControllerOnly; exports.BlockTrackerPollingControllerV1 = _chunkJVLLYBTKjs.BlockTrackerPollingControllerV1; exports.StaticIntervalPollingController = _chunkRD6EX3RWjs.StaticIntervalPollingController; exports.StaticIntervalPollingControllerOnly = _chunkRD6EX3RWjs.StaticIntervalPollingControllerOnly; exports.StaticIntervalPollingControllerV1 = _chunkRD6EX3RWjs.StaticIntervalPollingControllerV1;
20
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}