@metamask-previews/config-registry-controller 3.1.0-preview-3e34650c2 → 3.1.0-preview-4f4c98e

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 (83) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/{ConfigRegistryController-method-action-types.d.mts → ConfigRegistryController-method-action-types.d.ts} +2 -2
  3. package/dist/ConfigRegistryController-method-action-types.d.ts.map +1 -0
  4. package/dist/{ConfigRegistryController-method-action-types.mjs → ConfigRegistryController-method-action-types.js} +1 -1
  5. package/dist/ConfigRegistryController-method-action-types.js.map +1 -0
  6. package/dist/{ConfigRegistryController.d.cts → ConfigRegistryController.d.ts} +18 -18
  7. package/dist/ConfigRegistryController.d.ts.map +1 -0
  8. package/dist/{ConfigRegistryController.mjs → ConfigRegistryController.js} +3 -3
  9. package/dist/ConfigRegistryController.js.map +1 -0
  10. package/dist/config-registry-api-service/{config-registry-api-service-method-action-types.d.cts → config-registry-api-service-method-action-types.d.ts} +2 -2
  11. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.d.ts.map +1 -0
  12. package/dist/config-registry-api-service/{config-registry-api-service-method-action-types.mjs → config-registry-api-service-method-action-types.js} +1 -1
  13. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.js.map +1 -0
  14. package/dist/config-registry-api-service/{config-registry-api-service.d.mts → config-registry-api-service.d.ts} +6 -6
  15. package/dist/config-registry-api-service/config-registry-api-service.d.ts.map +1 -0
  16. package/dist/config-registry-api-service/{config-registry-api-service.mjs → config-registry-api-service.js} +3 -3
  17. package/dist/config-registry-api-service/config-registry-api-service.js.map +1 -0
  18. package/dist/config-registry-api-service/{filters.d.mts → filters.d.ts} +2 -2
  19. package/dist/config-registry-api-service/filters.d.ts.map +1 -0
  20. package/dist/config-registry-api-service/{filters.mjs → filters.js} +1 -1
  21. package/dist/config-registry-api-service/filters.js.map +1 -0
  22. package/dist/config-registry-api-service/{types.d.cts → types.d.ts} +49 -49
  23. package/dist/config-registry-api-service/types.d.ts.map +1 -0
  24. package/dist/config-registry-api-service/{types.mjs → types.js} +3 -3
  25. package/dist/config-registry-api-service/types.js.map +1 -0
  26. package/dist/{index.d.cts → index.d.ts} +11 -11
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +5 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/{selectors.d.cts → selectors.d.ts} +63 -63
  31. package/dist/selectors.d.ts.map +1 -0
  32. package/dist/{selectors.mjs → selectors.js} +4 -4
  33. package/dist/selectors.js.map +1 -0
  34. package/package.json +13 -17
  35. package/dist/ConfigRegistryController-method-action-types.cjs +0 -7
  36. package/dist/ConfigRegistryController-method-action-types.cjs.map +0 -1
  37. package/dist/ConfigRegistryController-method-action-types.d.cts +0 -31
  38. package/dist/ConfigRegistryController-method-action-types.d.cts.map +0 -1
  39. package/dist/ConfigRegistryController-method-action-types.d.mts.map +0 -1
  40. package/dist/ConfigRegistryController-method-action-types.mjs.map +0 -1
  41. package/dist/ConfigRegistryController.cjs +0 -160
  42. package/dist/ConfigRegistryController.cjs.map +0 -1
  43. package/dist/ConfigRegistryController.d.cts.map +0 -1
  44. package/dist/ConfigRegistryController.d.mts +0 -128
  45. package/dist/ConfigRegistryController.d.mts.map +0 -1
  46. package/dist/ConfigRegistryController.mjs.map +0 -1
  47. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.cjs +0 -7
  48. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.cjs.map +0 -1
  49. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.d.cts.map +0 -1
  50. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.d.mts +0 -14
  51. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.d.mts.map +0 -1
  52. package/dist/config-registry-api-service/config-registry-api-service-method-action-types.mjs.map +0 -1
  53. package/dist/config-registry-api-service/config-registry-api-service.cjs +0 -154
  54. package/dist/config-registry-api-service/config-registry-api-service.cjs.map +0 -1
  55. package/dist/config-registry-api-service/config-registry-api-service.d.cts +0 -108
  56. package/dist/config-registry-api-service/config-registry-api-service.d.cts.map +0 -1
  57. package/dist/config-registry-api-service/config-registry-api-service.d.mts.map +0 -1
  58. package/dist/config-registry-api-service/config-registry-api-service.mjs.map +0 -1
  59. package/dist/config-registry-api-service/filters.cjs +0 -30
  60. package/dist/config-registry-api-service/filters.cjs.map +0 -1
  61. package/dist/config-registry-api-service/filters.d.cts +0 -15
  62. package/dist/config-registry-api-service/filters.d.cts.map +0 -1
  63. package/dist/config-registry-api-service/filters.d.mts.map +0 -1
  64. package/dist/config-registry-api-service/filters.mjs.map +0 -1
  65. package/dist/config-registry-api-service/types.cjs +0 -75
  66. package/dist/config-registry-api-service/types.cjs.map +0 -1
  67. package/dist/config-registry-api-service/types.d.cts.map +0 -1
  68. package/dist/config-registry-api-service/types.d.mts +0 -510
  69. package/dist/config-registry-api-service/types.d.mts.map +0 -1
  70. package/dist/config-registry-api-service/types.mjs.map +0 -1
  71. package/dist/index.cjs +0 -16
  72. package/dist/index.cjs.map +0 -1
  73. package/dist/index.d.cts.map +0 -1
  74. package/dist/index.d.mts +0 -11
  75. package/dist/index.d.mts.map +0 -1
  76. package/dist/index.mjs +0 -5
  77. package/dist/index.mjs.map +0 -1
  78. package/dist/selectors.cjs +0 -54
  79. package/dist/selectors.cjs.map +0 -1
  80. package/dist/selectors.d.cts.map +0 -1
  81. package/dist/selectors.d.mts +0 -466
  82. package/dist/selectors.d.mts.map +0 -1
  83. package/dist/selectors.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Changed
11
+
12
+ - **BREAKING:** Bump minimum Node.js version to 22 ([#9168](https://github.com/MetaMask/core/pull/9168))
13
+ - Bump `@metamask/remote-feature-flag-controller` from `^6.0.0` to `^6.1.0` ([#9980](https://github.com/MetaMask/core/pull/9980))
14
+
10
15
  ## [3.1.0]
11
16
 
12
17
  ### Added
@@ -2,7 +2,7 @@
2
2
  * This file is auto generated.
3
3
  * Do not edit manually.
4
4
  */
5
- import type { ConfigRegistryController } from "./ConfigRegistryController.mjs";
5
+ import type { ConfigRegistryController } from './ConfigRegistryController.js';
6
6
  /**
7
7
  * Get the network configuration for a given CAIP-2 chain ID.
8
8
  *
@@ -28,4 +28,4 @@ export type ConfigRegistryControllerStartPollingAction = {
28
28
  * Union of all ConfigRegistryController action types.
29
29
  */
30
30
  export type ConfigRegistryControllerMethodActions = ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction | ConfigRegistryControllerStopPollingAction | ConfigRegistryControllerStartPollingAction;
31
- //# sourceMappingURL=ConfigRegistryController-method-action-types.d.mts.map
31
+ //# sourceMappingURL=ConfigRegistryController-method-action-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigRegistryController-method-action-types.d.ts","sourceRoot":"","sources":["../src/ConfigRegistryController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,MAAM,4DAA4D,GAAG;IACzE,IAAI,EAAE,yDAAyD,CAAC;IAChE,OAAO,EAAE,wBAAwB,CAAC,gCAAgC,CAAC,CAAC;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yCAAyC,GAAG;IACtD,IAAI,EAAE,sCAAsC,CAAC;IAC7C,OAAO,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qCAAqC,GAC7C,4DAA4D,GAC5D,yCAAyC,GACzC,0CAA0C,CAAC"}
@@ -3,4 +3,4 @@
3
3
  * Do not edit manually.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=ConfigRegistryController-method-action-types.mjs.map
6
+ //# sourceMappingURL=ConfigRegistryController-method-action-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigRegistryController-method-action-types.js","sourceRoot":"","sources":["../src/ConfigRegistryController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { ConfigRegistryController } from './ConfigRegistryController.js';\n\n/**\n * Get the network configuration for a given CAIP-2 chain ID.\n *\n * @param caip2ChainId - The CAIP-2 chain ID (e.g., \"eip155:1\").\n * @returns The network configuration if found, otherwise undefined.\n */\nexport type ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction = {\n type: `ConfigRegistryController:getNetworkConfigByCaip2ChainId`;\n handler: ConfigRegistryController['getNetworkConfigByCaip2ChainId'];\n};\n\n/**\n * Stop all polling.\n */\nexport type ConfigRegistryControllerStopPollingAction = {\n type: `ConfigRegistryController:stopPolling`;\n handler: ConfigRegistryController['stopPolling'];\n};\n\nexport type ConfigRegistryControllerStartPollingAction = {\n type: `ConfigRegistryController:startPolling`;\n handler: ConfigRegistryController['startPolling'];\n};\n\n/**\n * Union of all ConfigRegistryController action types.\n */\nexport type ConfigRegistryControllerMethodActions =\n | ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction\n | ConfigRegistryControllerStopPollingAction\n | ConfigRegistryControllerStartPollingAction;\n"]}
@@ -1,12 +1,12 @@
1
- import type { ControllerGetStateAction, ControllerStateChangedEvent } from "@metamask/base-controller";
2
- import type { KeyringControllerGetStateAction, KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
3
- import type { Messenger } from "@metamask/messenger";
4
- import type { RemoteFeatureFlagControllerGetStateAction } from "@metamask/remote-feature-flag-controller";
5
- import type { RemoteFeatureFlagControllerStateChangeEvent } from "@metamask/remote-feature-flag-controller";
6
- import { CaipChainId } from "@metamask/utils";
7
- import type { ConfigRegistryApiServiceFetchConfigAction } from "./config-registry-api-service/config-registry-api-service-method-action-types.cjs";
8
- import type { RegistryNetworkConfig } from "./config-registry-api-service/types.cjs";
9
- import type { ConfigRegistryControllerMethodActions } from "./ConfigRegistryController-method-action-types.cjs";
1
+ import type { ControllerGetStateAction, ControllerStateChangedEvent } from '@metamask/base-controller';
2
+ import type { KeyringControllerGetStateAction, KeyringControllerLockEvent, KeyringControllerUnlockEvent } from '@metamask/keyring-controller';
3
+ import type { Messenger } from '@metamask/messenger';
4
+ import type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';
5
+ import type { RemoteFeatureFlagControllerStateChangeEvent } from '@metamask/remote-feature-flag-controller';
6
+ import { CaipChainId } from '@metamask/utils';
7
+ import type { ConfigRegistryApiServiceFetchConfigAction } from './config-registry-api-service/config-registry-api-service-method-action-types.js';
8
+ import type { RegistryNetworkConfig } from './config-registry-api-service/types.js';
9
+ import type { ConfigRegistryControllerMethodActions } from './ConfigRegistryController-method-action-types.js';
10
10
  declare const controllerName = "ConfigRegistryController";
11
11
  export declare const DEFAULT_POLLING_INTERVAL: number;
12
12
  /**
@@ -84,18 +84,18 @@ export type ConfigRegistryControllerOptions = {
84
84
  fallbackConfig?: Record<string, RegistryNetworkConfig>;
85
85
  };
86
86
  declare const ConfigRegistryController_base: (abstract new (...args: any[]) => {
87
- readonly "__#6@#intervalIds": Record<string, NodeJS.Timeout>;
88
- "__#6@#intervalLength": number | undefined;
89
- setIntervalLength(intervalLength: number): void;
90
- getIntervalLength(): number | undefined;
91
- _startPolling(input: null): void;
92
- _stopPollingByPollingTokenSetId(key: string): void;
93
- readonly "__#3@#pollingTokenSets": Map<string, Set<string>>;
94
- readonly "__#3@#callbacks": Map<string, Set<(input: null) => void>>;
87
+ readonly _callbacks: Map<string, Set<(input: null) => void>>;
95
88
  _executePoll(input: null): Promise<void>;
96
89
  startPolling(input: null): string;
97
90
  stopAllPolling(): void;
98
91
  stopPollingByPollingToken(pollingToken: string): void;
92
+ readonly _intervalIds: Record<import("@metamask/polling-controller").PollingTokenSetId, NodeJS.Timeout>;
93
+ _intervalLength: number | undefined;
94
+ setIntervalLength(intervalLength: number): void;
95
+ getIntervalLength(): number | undefined;
96
+ _startPolling(input: null): void;
97
+ _stopPollingByPollingTokenSetId(key: import("@metamask/polling-controller").PollingTokenSetId): void;
98
+ readonly _pollingTokenSets: Map<import("@metamask/polling-controller").PollingTokenSetId, Set<string>>;
99
99
  onPollingComplete(input: null, callback: (input: null) => void): void;
100
100
  }) & typeof import("@metamask/base-controller").BaseController;
101
101
  export declare class ConfigRegistryController extends ConfigRegistryController_base<typeof controllerName, ConfigRegistryControllerState, ConfigRegistryControllerMessenger> {
@@ -125,4 +125,4 @@ export declare class ConfigRegistryController extends ConfigRegistryController_b
125
125
  stopPolling(): void;
126
126
  }
127
127
  export {};
128
- //# sourceMappingURL=ConfigRegistryController.d.cts.map
128
+ //# sourceMappingURL=ConfigRegistryController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigRegistryController.d.ts","sourceRoot":"","sources":["../src/ConfigRegistryController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAE5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,+BAA+B,EAC/B,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAC1G,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,0CAA0C,CAAC;AAC5G,OAAO,EAAE,WAAW,EAAkC,MAAM,iBAAiB,CAAC;AAE9E,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,kFAAkF,CAAC;AAClJ,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAE/G,QAAA,MAAM,cAAc,6BAA6B,CAAC;AAElD,eAAO,MAAM,wBAAwB,QAAkC,CAAC;AAIxE;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;;;OAIG;IACH,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;KACtD,CAAC;IACF;;;;;OAKG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAwCF;;GAEG;AACH,MAAM,MAAM,yCAAyC,GACnD,2BAA2B,CACzB,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,wBAAwB,CAC3E,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACvC,sCAAsC,GACtC,qCAAqC,CAAC;AAE1C;;;GAGG;AACH,KAAK,cAAc,GACf,+BAA+B,GAC/B,yCAAyC,GACzC,yCAAyC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,8BAA8B,GACxC,yCAAyC,CAAC;AAE5C;;;GAGG;AACH,KAAK,aAAa,GACd,4BAA4B,GAC5B,0BAA0B,GAC1B,2CAA2C,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GAAG,SAAS,CACvD,OAAO,cAAc,EACrB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,CAC/C,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,EAAE,iCAAiC,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACxD,CAAC;;;;;;;;;;;;;;;;AAEF,qBAAa,wBAAyB,SAAQ,8BAC5C,OAAO,cAAc,EACrB,6BAA6B,EAC7B,iCAAiC,CAClC;;IACC;;;;;;;;;OASG;IACH,YAAY,EACV,SAAS,EACT,KAAU,EACV,eAA0C,EAC1C,cAAwC,GACzC,EAAE,+BAA+B,EAsBjC;IAED;;;;;OAKG;IACH,8BAA8B,CAC5B,YAAY,EAAE,WAAW,GACxB,qBAAqB,GAAG,SAAS,CAEnC;IAEK,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC9C;IAED;;OAEG;IACH,WAAW,IAAI,IAAI,CAKlB;CAwEF"}
@@ -4,8 +4,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _ConfigRegistryController_instances, _ConfigRegistryController_setupEventListeners, _ConfigRegistryController_onUnlock, _ConfigRegistryController_onLock, _ConfigRegistryController_onFeatureFlagChange, _ConfigRegistryController_isFeatureFlagEnabled;
7
- import { StaticIntervalPollingController } from "@metamask/polling-controller";
8
- import { Duration, inMilliseconds } from "@metamask/utils";
7
+ import { StaticIntervalPollingController } from '@metamask/polling-controller';
8
+ import { Duration, inMilliseconds } from '@metamask/utils';
9
9
  const controllerName = 'ConfigRegistryController';
10
10
  export const DEFAULT_POLLING_INTERVAL = inMilliseconds(1, Duration.Day);
11
11
  const FEATURE_FLAG_KEY = 'configRegistryApiEnabled';
@@ -153,4 +153,4 @@ _ConfigRegistryController_instances = new WeakSet(), _ConfigRegistryController_s
153
153
  }
154
154
  return featureFlagValue;
155
155
  };
156
- //# sourceMappingURL=ConfigRegistryController.mjs.map
156
+ //# sourceMappingURL=ConfigRegistryController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigRegistryController.js","sourceRoot":"","sources":["../src/ConfigRegistryController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangedEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport type {\n KeyringControllerGetStateAction,\n KeyringControllerLockEvent,\n KeyringControllerUnlockEvent,\n} from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { StaticIntervalPollingController } from '@metamask/polling-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { RemoteFeatureFlagControllerStateChangeEvent } from '@metamask/remote-feature-flag-controller';\nimport { CaipChainId, Duration, inMilliseconds, Json } from '@metamask/utils';\n\nimport type { ConfigRegistryApiServiceFetchConfigAction } from './config-registry-api-service/config-registry-api-service-method-action-types.js';\nimport type { RegistryNetworkConfig } from './config-registry-api-service/types.js';\nimport type { ConfigRegistryControllerMethodActions } from './ConfigRegistryController-method-action-types.js';\n\nconst controllerName = 'ConfigRegistryController';\n\nexport const DEFAULT_POLLING_INTERVAL = inMilliseconds(1, Duration.Day);\n\nconst FEATURE_FLAG_KEY = 'configRegistryApiEnabled';\n\n/**\n * State for the ConfigRegistryController.\n *\n * Tracks network configurations fetched from the config registry API,\n * along with metadata about the fetch status and caching.\n */\nexport type ConfigRegistryControllerState = {\n /**\n * Network configurations organized by chain ID.\n * Stores the full API response including isFeatured, isTestnet, etc.\n * Use selectors (e.g. selectFeaturedNetworks) to filter when needed.\n */\n configs: {\n networks: Record<CaipChainId, RegistryNetworkConfig>;\n };\n /**\n * Semantic version string of the configuration data from the API.\n * Indicates the version/schema of the configuration structure itself\n * (e.g., \"v1.0.0\", \"1.0.0\").\n * This is different from `etag` which is used for HTTP cache validation.\n */\n version: string | null;\n /**\n * Timestamp (milliseconds since epoch) of when the configuration\n * was last successfully fetched from the API.\n */\n lastFetched: number | null;\n /**\n * HTTP entity tag (ETag) used for cache validation.\n * Sent as `If-None-Match` header in subsequent requests to check\n * if the content has changed. If the server returns 304 Not Modified,\n * the full response body is not downloaded, improving efficiency.\n * This is different from `version` which is a semantic version string\n * indicating the schema/version of the configuration data itself.\n */\n etag: string | null;\n};\n\nconst stateMetadata = {\n configs: {\n persist: true,\n includeInStateLogs: false,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n version: {\n persist: true,\n includeInStateLogs: true,\n includeInDebugSnapshot: true,\n usedInUi: false,\n },\n lastFetched: {\n persist: true,\n includeInStateLogs: true,\n includeInDebugSnapshot: true,\n usedInUi: false,\n },\n etag: {\n persist: true,\n includeInStateLogs: false,\n includeInDebugSnapshot: false,\n usedInUi: false,\n },\n} satisfies StateMetadata<ConfigRegistryControllerState>;\n\n/**\n * Default fallback configuration when no configs are available.\n */\nconst DEFAULT_FALLBACK_CONFIG: Record<string, RegistryNetworkConfig> = {};\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'startPolling',\n 'stopPolling',\n 'getNetworkConfigByCaip2ChainId',\n] as const;\n\n/**\n * Published when the state of {@link ConfigRegistryController} changes.\n */\nexport type ConfigRegistryControllerStateChangedEvent =\n ControllerStateChangedEvent<\n typeof controllerName,\n ConfigRegistryControllerState\n >;\n\n/**\n * Retrieves the state of the {@link ConfigRegistryController}.\n */\nexport type ConfigRegistryControllerGetStateAction = ControllerGetStateAction<\n typeof controllerName,\n ConfigRegistryControllerState\n>;\n\n/**\n * Actions that {@link ConfigRegistryControllerMessenger} exposes to other consumers.\n */\nexport type ConfigRegistryControllerActions =\n | ConfigRegistryControllerGetStateAction\n | ConfigRegistryControllerMethodActions;\n\n/**\n * Actions from other messengers that {@link ConfigRegistryControllerMessenger}\n * calls.\n */\ntype AllowedActions =\n | KeyringControllerGetStateAction\n | RemoteFeatureFlagControllerGetStateAction\n | ConfigRegistryApiServiceFetchConfigAction;\n\n/**\n * Events that {@link ConfigRegistryControllerMessenger} exposes to other consumers.\n */\nexport type ConfigRegistryControllerEvents =\n ConfigRegistryControllerStateChangedEvent;\n\n/**\n * Events from other messengers that {@link ConfigRegistryControllerMessenger}\n * subscribes to.\n */\ntype AllowedEvents =\n | KeyringControllerUnlockEvent\n | KeyringControllerLockEvent\n | RemoteFeatureFlagControllerStateChangeEvent;\n\n/**\n * The messenger restricted to actions and events accessed by\n * {@link ConfigRegistryController}.\n */\nexport type ConfigRegistryControllerMessenger = Messenger<\n typeof controllerName,\n ConfigRegistryControllerActions | AllowedActions,\n ConfigRegistryControllerEvents | AllowedEvents\n>;\n\nexport type ConfigRegistryControllerOptions = {\n messenger: ConfigRegistryControllerMessenger;\n state?: Partial<ConfigRegistryControllerState>;\n pollingInterval?: number;\n fallbackConfig?: Record<string, RegistryNetworkConfig>;\n};\n\nexport class ConfigRegistryController extends StaticIntervalPollingController<null>()<\n typeof controllerName,\n ConfigRegistryControllerState,\n ConfigRegistryControllerMessenger\n> {\n /**\n * @param options - The controller options.\n * @param options.messenger - The controller messenger. Must have\n * `ConfigRegistryApiService:fetchConfig` action handler registered\n * (e.g. by instantiating {@link ConfigRegistryApiService} with the same\n * messenger).\n * @param options.state - Initial state.\n * @param options.pollingInterval - Polling interval in milliseconds.\n * @param options.fallbackConfig - Fallback configuration.\n */\n constructor({\n messenger,\n state = {},\n pollingInterval = DEFAULT_POLLING_INTERVAL,\n fallbackConfig = DEFAULT_FALLBACK_CONFIG,\n }: ConfigRegistryControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n configs: {\n networks: state.configs?.networks ?? { ...fallbackConfig },\n },\n version: state.version ?? null,\n lastFetched: state.lastFetched ?? null,\n etag: state.etag ?? null,\n },\n });\n\n this.setIntervalLength(pollingInterval);\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n this.#setupEventListeners();\n }\n\n /**\n * Get the network configuration for a given CAIP-2 chain ID.\n *\n * @param caip2ChainId - The CAIP-2 chain ID (e.g., \"eip155:1\").\n * @returns The network configuration if found, otherwise undefined.\n */\n getNetworkConfigByCaip2ChainId(\n caip2ChainId: CaipChainId,\n ): RegistryNetworkConfig | undefined {\n return this.state.configs.networks[caip2ChainId];\n }\n\n async _executePoll(_input: null): Promise<void> {\n try {\n const result = await this.messenger.call(\n 'ConfigRegistryApiService:fetchConfig',\n {\n etag: this.state.etag ?? undefined,\n },\n );\n\n if (!result.modified) {\n this.update((state) => {\n state.lastFetched = Date.now();\n if (result.etag !== undefined) {\n state.etag = result.etag ?? null;\n }\n });\n return;\n }\n\n const apiChains = result.data.data.chains;\n const newConfigs: Record<string, RegistryNetworkConfig> = {};\n // duplicate chainIds from API response are not expected\n apiChains.forEach((chainConfig) => {\n const { chainId } = chainConfig;\n newConfigs[chainId] = chainConfig;\n });\n\n this.update((state) => {\n state.configs.networks = newConfigs;\n state.version = result.data.data.version;\n state.lastFetched = Date.now();\n state.etag = result.etag ?? null;\n });\n } catch (error) {\n const errorInstance =\n error instanceof Error ? error : new Error(String(error));\n\n this.messenger.captureException?.(errorInstance);\n }\n }\n\n /**\n * Stop all polling.\n */\n stopPolling(): void {\n // This is a wrapper around `super.stopAllPolling()` for backwards\n // compatibility, while allowing this method to be exposed via the messenger\n // using the `MESSENGER_EXPOSED_METHODS` array.\n super.stopAllPolling();\n }\n\n /**\n * Setup messenger event listeners necessary for the controller lifecycle\n */\n #setupEventListeners(): void {\n this.messenger.subscribe(\n 'KeyringController:unlock',\n this.#onUnlock.bind(this),\n );\n\n this.messenger.subscribe('KeyringController:lock', this.#onLock.bind(this));\n\n this.messenger.subscribe(\n 'RemoteFeatureFlagController:stateChange',\n this.#onFeatureFlagChange.bind(this),\n (stateSelector) => stateSelector.remoteFeatureFlags[FEATURE_FLAG_KEY],\n );\n }\n\n /**\n * Handle wallet unlock event by starting polling if the config registry API is enabled.\n */\n #onUnlock(): void {\n if (this.#isFeatureFlagEnabled()) {\n this.startPolling(null);\n }\n }\n\n /**\n * Handle wallet lock event by stopping all polling to prevent unnecessary API calls.\n */\n #onLock(): void {\n this.stopAllPolling();\n }\n\n /**\n * Handle changes to the config registry API feature flag by\n * starting or stopping polling accordingly.\n *\n * @param featureFlagValue - The new value of the feature flag.\n */\n #onFeatureFlagChange(featureFlagValue: Json): void {\n const { isUnlocked } = this.messenger.call('KeyringController:getState');\n\n if (\n typeof featureFlagValue === 'boolean' &&\n featureFlagValue &&\n isUnlocked\n ) {\n this.startPolling(null);\n } else {\n this.stopAllPolling();\n }\n }\n\n /**\n * Get the current status of the config registry feature flag.\n *\n * @returns Whether the config registry API is enabled.\n */\n #isFeatureFlagEnabled(): boolean {\n const featureFlagValue = this.messenger.call(\n 'RemoteFeatureFlagController:getState',\n ).remoteFeatureFlags[FEATURE_FLAG_KEY];\n\n if (typeof featureFlagValue !== 'boolean') {\n return false;\n }\n\n return featureFlagValue;\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * This file is auto generated.
3
3
  * Do not edit manually.
4
4
  */
5
- import type { ConfigRegistryApiService } from "./config-registry-api-service.cjs";
5
+ import type { ConfigRegistryApiService } from './config-registry-api-service.js';
6
6
  export type ConfigRegistryApiServiceFetchConfigAction = {
7
7
  type: `ConfigRegistryApiService:fetchConfig`;
8
8
  handler: ConfigRegistryApiService['fetchConfig'];
@@ -11,4 +11,4 @@ export type ConfigRegistryApiServiceFetchConfigAction = {
11
11
  * Union of all ConfigRegistryApiService action types.
12
12
  */
13
13
  export type ConfigRegistryApiServiceMethodActions = ConfigRegistryApiServiceFetchConfigAction;
14
- //# sourceMappingURL=config-registry-api-service-method-action-types.d.cts.map
14
+ //# sourceMappingURL=config-registry-api-service-method-action-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-registry-api-service-method-action-types.d.ts","sourceRoot":"","sources":["../../src/config-registry-api-service/config-registry-api-service-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,MAAM,MAAM,yCAAyC,GAAG;IACtD,IAAI,EAAE,sCAAsC,CAAC;IAC7C,OAAO,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qCAAqC,GAC/C,yCAAyC,CAAC"}
@@ -3,4 +3,4 @@
3
3
  * Do not edit manually.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=config-registry-api-service-method-action-types.mjs.map
6
+ //# sourceMappingURL=config-registry-api-service-method-action-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-registry-api-service-method-action-types.js","sourceRoot":"","sources":["../../src/config-registry-api-service/config-registry-api-service-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { ConfigRegistryApiService } from './config-registry-api-service.js';\n\nexport type ConfigRegistryApiServiceFetchConfigAction = {\n type: `ConfigRegistryApiService:fetchConfig`;\n handler: ConfigRegistryApiService['fetchConfig'];\n};\n\n/**\n * Union of all ConfigRegistryApiService action types.\n */\nexport type ConfigRegistryApiServiceMethodActions =\n ConfigRegistryApiServiceFetchConfigAction;\n"]}
@@ -1,8 +1,8 @@
1
- import type { CreateServicePolicyOptions, ServicePolicy } from "@metamask/controller-utils";
2
- import type { Messenger } from "@metamask/messenger";
3
- import type { IDisposable } from "cockatiel";
4
- import type { ConfigRegistryApiServiceMethodActions } from "./config-registry-api-service-method-action-types.mjs";
5
- import type { FetchConfigOptions, FetchConfigResult } from "./types.mjs";
1
+ import type { CreateServicePolicyOptions, ServicePolicy } from '@metamask/controller-utils';
2
+ import type { Messenger } from '@metamask/messenger';
3
+ import type { IDisposable } from 'cockatiel';
4
+ import type { ConfigRegistryApiServiceMethodActions } from './config-registry-api-service-method-action-types.js';
5
+ import type { FetchConfigOptions, FetchConfigResult } from './types.js';
6
6
  export declare enum ConfigRegistryApiEnv {
7
7
  DEV = "dev",
8
8
  UAT = "uat",
@@ -105,4 +105,4 @@ export declare class ConfigRegistryApiService {
105
105
  fetchConfig(options?: FetchConfigOptions): Promise<FetchConfigResult>;
106
106
  }
107
107
  export {};
108
- //# sourceMappingURL=config-registry-api-service.d.mts.map
108
+ //# sourceMappingURL=config-registry-api-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-registry-api-service.d.ts","sourceRoot":"","sources":["../../src/config-registry-api-service/config-registry-api-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,sDAAsD,CAAC;AAClH,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAKpB,oBAAY,oBAAoB;IAC9B,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,SAAS;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAMtD;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACzC,qCAAqC,CAAC;AAExC;;GAEG;AACH,KAAK,cAAc,GAAG,KAAK,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAEnD;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GAAG,SAAS,CACvD,OAAO,WAAW,EAClB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,CAC/C,CAAC;AAeF,MAAM,MAAM,+BAA+B,GAAG;IAC5C;;;OAGG;IACH,SAAS,EAAE,iCAAiC,CAAC;IAC7C,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C,CAAC;AAEF,qBAAa,wBAAwB;;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,CAAC;IAalC;;;;;;;;OAQG;IACH,YAAY,EACV,SAAS,EACT,GAA8B,EAC9B,KAAK,EAAE,WAA8B,EACrC,aAAkB,GACnB,EAAE,+BAA+B,EAYjC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAEtE;IAED;;;;;;;;;OASG;IACH,OAAO,CACL,GAAG,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAC5C,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAEtC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CACR,GAAG,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,GAC/C,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAEzC;IAEK,WAAW,CACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAiD5B;CACF"}
@@ -10,8 +10,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _ConfigRegistryApiService_messenger, _ConfigRegistryApiService_policy, _ConfigRegistryApiService_url, _ConfigRegistryApiService_fetch, _ConfigRegistryApiService_cachedResponse;
13
- import { createServicePolicy, HttpError } from "@metamask/controller-utils";
14
- import { validateRegistryConfigApiResponse } from "./types.mjs";
13
+ import { createServicePolicy, HttpError } from '@metamask/controller-utils';
14
+ import { validateRegistryConfigApiResponse } from './types.js';
15
15
  const ENDPOINT_PATH = '/config/networks';
16
16
  export var ConfigRegistryApiEnv;
17
17
  (function (ConfigRegistryApiEnv) {
@@ -147,4 +147,4 @@ export class ConfigRegistryApiService {
147
147
  }
148
148
  }
149
149
  _ConfigRegistryApiService_messenger = new WeakMap(), _ConfigRegistryApiService_policy = new WeakMap(), _ConfigRegistryApiService_url = new WeakMap(), _ConfigRegistryApiService_fetch = new WeakMap(), _ConfigRegistryApiService_cachedResponse = new WeakMap();
150
- //# sourceMappingURL=config-registry-api-service.mjs.map
150
+ //# sourceMappingURL=config-registry-api-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-registry-api-service.js","sourceRoot":"","sources":["../../src/config-registry-api-service/config-registry-api-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { createServicePolicy, HttpError } from '@metamask/controller-utils';\nimport type {\n CreateServicePolicyOptions,\n ServicePolicy,\n} from '@metamask/controller-utils';\nimport type { Messenger } from '@metamask/messenger';\nimport type { IDisposable } from 'cockatiel';\n\nimport type { ConfigRegistryApiServiceMethodActions } from './config-registry-api-service-method-action-types.js';\nimport type {\n FetchConfigOptions,\n FetchConfigResult,\n RegistryConfigApiResponse,\n} from './types.js';\nimport { validateRegistryConfigApiResponse } from './types.js';\n\nconst ENDPOINT_PATH = '/config/networks';\n\nexport enum ConfigRegistryApiEnv {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prod',\n}\n\n/**\n * The name of the {@link ConfigRegistryApiService}, used to namespace the\n * service's actions and events.\n */\nexport const serviceName = 'ConfigRegistryApiService';\n\n// === MESSENGER ===\n\nconst MESSENGER_EXPOSED_METHODS = ['fetchConfig'] as const;\n\n/**\n * Actions that {@link ConfigRegistryApiService} exposes to other consumers.\n */\nexport type ConfigRegistryApiServiceActions =\n ConfigRegistryApiServiceMethodActions;\n\n/**\n * Actions from other messengers that {@link ConfigRegistryApiServiceMessenger} calls.\n */\ntype AllowedActions = never;\n\n/**\n * Events that {@link ConfigRegistryApiService} exposes to other consumers.\n */\nexport type ConfigRegistryApiServiceEvents = never;\n\n/**\n * Events from other messengers that {@link ConfigRegistryApiService} subscribes to.\n */\ntype AllowedEvents = never;\n\n/**\n * The messenger which is restricted to actions and events accessed by\n * {@link ConfigRegistryApiService}.\n */\nexport type ConfigRegistryApiServiceMessenger = Messenger<\n typeof serviceName,\n ConfigRegistryApiServiceActions | AllowedActions,\n ConfigRegistryApiServiceEvents | AllowedEvents\n>;\n\n// === SERVICE DEFINITION ===\n\n/**\n * Returns the base URL for the config registry API for the given environment.\n *\n * @param env - The environment to get the URL for.\n * @returns The base URL for the environment.\n */\nfunction getConfigRegistryUrl(env: ConfigRegistryApiEnv): string {\n const envPrefix = env === ConfigRegistryApiEnv.PRD ? '' : `${env}-`;\n return `https://client-config.${envPrefix}api.cx.metamask.io/v1${ENDPOINT_PATH}`;\n}\n\nexport type ConfigRegistryApiServiceOptions = {\n /**\n * The messenger suited for this service. Required so the service can be used\n * independently and register its actions.\n */\n messenger: ConfigRegistryApiServiceMessenger;\n env?: ConfigRegistryApiEnv;\n fetch?: typeof fetch;\n /**\n * Options to pass to `createServicePolicy`, which wraps each request.\n * See {@link CreateServicePolicyOptions}.\n */\n policyOptions?: CreateServicePolicyOptions;\n};\n\nexport class ConfigRegistryApiService {\n readonly name: typeof serviceName;\n\n readonly #messenger: ConfigRegistryApiServiceMessenger;\n\n readonly #policy: ServicePolicy;\n\n readonly #url: string;\n\n readonly #fetch: typeof fetch;\n\n /** Cached response from the last successful fetch. Used when server returns 304. */\n #cachedResponse: RegistryConfigApiResponse | null = null;\n\n /**\n * Construct a Config Registry API Service.\n *\n * @param options - The options for constructing the service.\n * @param options.messenger - The messenger suited for this service.\n * @param options.env - The environment to determine the correct API endpoints. Defaults to UAT.\n * @param options.fetch - Custom fetch function for testing or custom implementations. Defaults to the global fetch.\n * @param options.policyOptions - Options to pass to `createServicePolicy`, which wraps each request. See {@link CreateServicePolicyOptions}.\n */\n constructor({\n messenger,\n env = ConfigRegistryApiEnv.UAT,\n fetch: customFetch = globalThis.fetch,\n policyOptions = {},\n }: ConfigRegistryApiServiceOptions) {\n this.name = serviceName;\n this.#messenger = messenger;\n this.#url = getConfigRegistryUrl(env);\n this.#fetch = customFetch;\n\n this.#policy = createServicePolicy(policyOptions);\n\n this.#messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Registers a handler that will be called after a request returns a non-500\n * response, causing a retry. Primarily useful in tests where timers are being\n * mocked.\n *\n * @param listener - The handler to be called.\n * @returns An object that can be used to unregister the handler. See\n * {@link CockatielEvent}.\n * @see {@link createServicePolicy}\n */\n onRetry(listener: Parameters<ServicePolicy['onRetry']>[0]): IDisposable {\n return this.#policy.onRetry(listener);\n }\n\n /**\n * Registers a handler that will be called after a set number of retry rounds\n * prove that requests to the API endpoint consistently return a 5xx response.\n *\n * @param args - The arguments passed to the underlying policy's onBreak method\n * (e.g. the listener to be called).\n * @returns An object that can be used to unregister the handler. See\n * {@link CockatielEvent}.\n * @see {@link createServicePolicy}\n */\n onBreak(\n ...args: Parameters<ServicePolicy['onBreak']>\n ): ReturnType<ServicePolicy['onBreak']> {\n return this.#policy.onBreak(...args);\n }\n\n /**\n * Registers a handler that will be called under one of two circumstances:\n *\n * 1. After a set number of retries prove that requests to the API\n * consistently result in one of the following failures:\n * 1. A connection initiation error\n * 2. A connection reset error\n * 3. A timeout error\n * 4. A non-JSON response\n * 5. A 502, 503, or 504 response\n * 2. After a successful request is made to the API, but the response takes\n * longer than a set duration to return.\n *\n * @param args - The arguments passed to the underlying policy's onDegraded\n * method (e.g. the listener to be called).\n * @returns An object that can be used to unregister the handler. See\n * {@link CockatielEvent}.\n */\n onDegraded(\n ...args: Parameters<ServicePolicy['onDegraded']>\n ): ReturnType<ServicePolicy['onDegraded']> {\n return this.#policy.onDegraded(...args);\n }\n\n async fetchConfig(\n options: FetchConfigOptions = {},\n ): Promise<FetchConfigResult> {\n const headers: HeadersInit = {\n 'Cache-Control': 'no-cache',\n };\n\n if (options.etag) {\n headers['If-None-Match'] = options.etag;\n }\n\n const response = await this.#policy.execute(async () => {\n const res = await this.#fetch(this.#url, {\n headers,\n });\n\n if (res.status === 304) {\n return res;\n }\n\n if (!res.ok) {\n throw new HttpError(\n res.status,\n `Failed to fetch config: ${res.status} ${res.statusText}`,\n );\n }\n\n return res;\n });\n\n if (response.status === 304) {\n const etag = response.headers.get('ETag') ?? undefined;\n return {\n modified: false,\n etag,\n ...(this.#cachedResponse !== null && { data: this.#cachedResponse }),\n };\n }\n\n const etag = response.headers.get('ETag') ?? undefined;\n const jsonData = await response.json();\n\n validateRegistryConfigApiResponse(jsonData);\n\n this.#cachedResponse = jsonData;\n\n return {\n data: jsonData,\n etag,\n modified: true,\n };\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { RegistryNetworkConfig } from "./types.mjs";
1
+ import type { RegistryNetworkConfig } from './types.js';
2
2
  export type NetworkFilterOptions = {
3
3
  isFeatured?: boolean;
4
4
  isTestnet?: boolean;
@@ -12,4 +12,4 @@ export type NetworkFilterOptions = {
12
12
  * @returns Filtered array of chain configurations.
13
13
  */
14
14
  export declare function filterNetworks(networks: RegistryNetworkConfig[], options?: NetworkFilterOptions): RegistryNetworkConfig[];
15
- //# sourceMappingURL=filters.d.mts.map
15
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/config-registry-api-service/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAUF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,qBAAqB,EAAE,EACjC,OAAO,GAAE,oBAAyB,GACjC,qBAAqB,EAAE,CAczB"}
@@ -23,4 +23,4 @@ export function filterNetworks(networks, options = {}) {
23
23
  return true;
24
24
  });
25
25
  }
26
- //# sourceMappingURL=filters.mjs.map
26
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/config-registry-api-service/filters.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,GAAG;IAClB,YAAY;IACZ,WAAW;IACX,UAAU;IACV,cAAc;IACd,WAAW;CACsC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAiC,EACjC,OAAO,GAAyB,EAAE;IAElC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IACE,WAAW,KAAK,SAAS;gBACzB,MAAM,CAAC,GAA0B,CAAC,KAAK,WAAW,EAClD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { RegistryNetworkConfig } from './types.js';\n\nexport type NetworkFilterOptions = {\n isFeatured?: boolean;\n isTestnet?: boolean;\n isActive?: boolean;\n isDeprecated?: boolean;\n isDefault?: boolean;\n};\n\nconst FILTER_KEYS = [\n 'isFeatured',\n 'isTestnet',\n 'isActive',\n 'isDeprecated',\n 'isDefault',\n] as const satisfies (keyof NetworkFilterOptions)[];\n\n/**\n * @param networks - Array of chain configurations to filter.\n * @param options - Filter options (matched against config.*).\n * @returns Filtered array of chain configurations.\n */\nexport function filterNetworks(\n networks: RegistryNetworkConfig[],\n options: NetworkFilterOptions = {},\n): RegistryNetworkConfig[] {\n return networks.filter((network) => {\n const { config } = network;\n for (const key of FILTER_KEYS) {\n const optionValue = options[key];\n if (\n optionValue !== undefined &&\n config[key as keyof typeof config] !== optionValue\n ) {\n return false;\n }\n }\n return true;\n });\n}\n"]}
@@ -1,28 +1,29 @@
1
- import type { Infer } from "@metamask/superstruct";
1
+ import type { Infer } from '@metamask/superstruct';
2
2
  /**
3
3
  * Schema for a single chain in the CAIP-2 config registry API response.
4
4
  * chainId is in CAIP-2 format (e.g. "eip155:1", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp").
5
5
  */
6
6
  export declare const RegistryNetworkConfigSchema: import("@metamask/superstruct").Struct<{
7
- imageUrl: string;
8
- name: string;
9
7
  chainId: `${string}:${string}`;
8
+ name: string;
9
+ imageUrl: string;
10
10
  coingeckoPlatformId: string;
11
+ geckoTerminalPlatformId?: string | undefined;
11
12
  assets: {
13
+ listUrl?: string | undefined;
12
14
  native: {
13
- symbol: string;
14
15
  assetId: string;
15
16
  imageUrl: string;
16
17
  name: string;
18
+ symbol: string;
17
19
  decimals: number;
18
20
  coingeckoCoinId?: string | undefined;
19
21
  };
20
- listUrl?: string | undefined;
21
22
  governance?: {
22
- symbol: string;
23
23
  assetId: string;
24
24
  imageUrl: string;
25
25
  name: string;
26
+ symbol: string;
26
27
  decimals: number;
27
28
  coingeckoCoinId?: string | undefined;
28
29
  } | undefined;
@@ -46,10 +47,9 @@ export declare const RegistryNetworkConfigSchema: import("@metamask/superstruct"
46
47
  isFeatured: boolean;
47
48
  isDeprecated: boolean;
48
49
  isDeletable: boolean;
49
- priority: number;
50
50
  isAutoEnabled?: boolean | undefined;
51
+ priority: number;
51
52
  };
52
- geckoTerminalPlatformId?: string | undefined;
53
53
  contracts?: {
54
54
  multicall3?: `0x${string}` | undefined;
55
55
  } | undefined;
@@ -60,30 +60,30 @@ export declare const RegistryNetworkConfigSchema: import("@metamask/superstruct"
60
60
  coingeckoPlatformId: import("@metamask/superstruct").Struct<string, null>;
61
61
  geckoTerminalPlatformId: import("@metamask/superstruct").Struct<string | undefined, null>;
62
62
  assets: import("@metamask/superstruct").Struct<{
63
+ listUrl?: string | undefined;
63
64
  native: {
64
- symbol: string;
65
65
  assetId: string;
66
66
  imageUrl: string;
67
67
  name: string;
68
+ symbol: string;
68
69
  decimals: number;
69
70
  coingeckoCoinId?: string | undefined;
70
71
  };
71
- listUrl?: string | undefined;
72
72
  governance?: {
73
- symbol: string;
74
73
  assetId: string;
75
74
  imageUrl: string;
76
75
  name: string;
76
+ symbol: string;
77
77
  decimals: number;
78
78
  coingeckoCoinId?: string | undefined;
79
79
  } | undefined;
80
80
  }, {
81
81
  listUrl: import("@metamask/superstruct").Struct<string | undefined, null>;
82
82
  native: import("@metamask/superstruct").Struct<{
83
- symbol: string;
84
83
  assetId: string;
85
84
  imageUrl: string;
86
85
  name: string;
86
+ symbol: string;
87
87
  decimals: number;
88
88
  coingeckoCoinId?: string | undefined;
89
89
  }, {
@@ -95,10 +95,10 @@ export declare const RegistryNetworkConfigSchema: import("@metamask/superstruct"
95
95
  coingeckoCoinId: import("@metamask/superstruct").Struct<string | undefined, null>;
96
96
  }>;
97
97
  governance: import("@metamask/superstruct").Struct<{
98
- symbol: string;
99
98
  assetId: string;
100
99
  imageUrl: string;
101
100
  name: string;
101
+ symbol: string;
102
102
  decimals: number;
103
103
  coingeckoCoinId?: string | undefined;
104
104
  } | undefined, {
@@ -143,8 +143,8 @@ export declare const RegistryNetworkConfigSchema: import("@metamask/superstruct"
143
143
  isFeatured: boolean;
144
144
  isDeprecated: boolean;
145
145
  isDeletable: boolean;
146
- priority: number;
147
146
  isAutoEnabled?: boolean | undefined;
147
+ priority: number;
148
148
  }, {
149
149
  isActive: import("@metamask/superstruct").Struct<boolean, null>;
150
150
  isTestnet: import("@metamask/superstruct").Struct<boolean, null>;
@@ -169,25 +169,26 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
169
169
  version: string;
170
170
  timestamp: number;
171
171
  chains: {
172
- imageUrl: string;
173
- name: string;
174
172
  chainId: `${string}:${string}`;
173
+ name: string;
174
+ imageUrl: string;
175
175
  coingeckoPlatformId: string;
176
+ geckoTerminalPlatformId?: string | undefined;
176
177
  assets: {
178
+ listUrl?: string | undefined;
177
179
  native: {
178
- symbol: string;
179
180
  assetId: string;
180
181
  imageUrl: string;
181
182
  name: string;
183
+ symbol: string;
182
184
  decimals: number;
183
185
  coingeckoCoinId?: string | undefined;
184
186
  };
185
- listUrl?: string | undefined;
186
187
  governance?: {
187
- symbol: string;
188
188
  assetId: string;
189
189
  imageUrl: string;
190
190
  name: string;
191
+ symbol: string;
191
192
  decimals: number;
192
193
  coingeckoCoinId?: string | undefined;
193
194
  } | undefined;
@@ -211,10 +212,9 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
211
212
  isFeatured: boolean;
212
213
  isDeprecated: boolean;
213
214
  isDeletable: boolean;
214
- priority: number;
215
215
  isAutoEnabled?: boolean | undefined;
216
+ priority: number;
216
217
  };
217
- geckoTerminalPlatformId?: string | undefined;
218
218
  contracts?: {
219
219
  multicall3?: `0x${string}` | undefined;
220
220
  } | undefined;
@@ -225,25 +225,26 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
225
225
  version: string;
226
226
  timestamp: number;
227
227
  chains: {
228
- imageUrl: string;
229
- name: string;
230
228
  chainId: `${string}:${string}`;
229
+ name: string;
230
+ imageUrl: string;
231
231
  coingeckoPlatformId: string;
232
+ geckoTerminalPlatformId?: string | undefined;
232
233
  assets: {
234
+ listUrl?: string | undefined;
233
235
  native: {
234
- symbol: string;
235
236
  assetId: string;
236
237
  imageUrl: string;
237
238
  name: string;
239
+ symbol: string;
238
240
  decimals: number;
239
241
  coingeckoCoinId?: string | undefined;
240
242
  };
241
- listUrl?: string | undefined;
242
243
  governance?: {
243
- symbol: string;
244
244
  assetId: string;
245
245
  imageUrl: string;
246
246
  name: string;
247
+ symbol: string;
247
248
  decimals: number;
248
249
  coingeckoCoinId?: string | undefined;
249
250
  } | undefined;
@@ -267,10 +268,9 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
267
268
  isFeatured: boolean;
268
269
  isDeprecated: boolean;
269
270
  isDeletable: boolean;
270
- priority: number;
271
271
  isAutoEnabled?: boolean | undefined;
272
+ priority: number;
272
273
  };
273
- geckoTerminalPlatformId?: string | undefined;
274
274
  contracts?: {
275
275
  multicall3?: `0x${string}` | undefined;
276
276
  } | undefined;
@@ -279,25 +279,26 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
279
279
  version: import("@metamask/superstruct").Struct<string, null>;
280
280
  timestamp: import("@metamask/superstruct").Struct<number, null>;
281
281
  chains: import("@metamask/superstruct").Struct<{
282
- imageUrl: string;
283
- name: string;
284
282
  chainId: `${string}:${string}`;
283
+ name: string;
284
+ imageUrl: string;
285
285
  coingeckoPlatformId: string;
286
+ geckoTerminalPlatformId?: string | undefined;
286
287
  assets: {
288
+ listUrl?: string | undefined;
287
289
  native: {
288
- symbol: string;
289
290
  assetId: string;
290
291
  imageUrl: string;
291
292
  name: string;
293
+ symbol: string;
292
294
  decimals: number;
293
295
  coingeckoCoinId?: string | undefined;
294
296
  };
295
- listUrl?: string | undefined;
296
297
  governance?: {
297
- symbol: string;
298
298
  assetId: string;
299
299
  imageUrl: string;
300
300
  name: string;
301
+ symbol: string;
301
302
  decimals: number;
302
303
  coingeckoCoinId?: string | undefined;
303
304
  } | undefined;
@@ -321,33 +322,33 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
321
322
  isFeatured: boolean;
322
323
  isDeprecated: boolean;
323
324
  isDeletable: boolean;
324
- priority: number;
325
325
  isAutoEnabled?: boolean | undefined;
326
+ priority: number;
326
327
  };
327
- geckoTerminalPlatformId?: string | undefined;
328
328
  contracts?: {
329
329
  multicall3?: `0x${string}` | undefined;
330
330
  } | undefined;
331
331
  }[], import("@metamask/superstruct").Struct<{
332
- imageUrl: string;
333
- name: string;
334
332
  chainId: `${string}:${string}`;
333
+ name: string;
334
+ imageUrl: string;
335
335
  coingeckoPlatformId: string;
336
+ geckoTerminalPlatformId?: string | undefined;
336
337
  assets: {
338
+ listUrl?: string | undefined;
337
339
  native: {
338
- symbol: string;
339
340
  assetId: string;
340
341
  imageUrl: string;
341
342
  name: string;
343
+ symbol: string;
342
344
  decimals: number;
343
345
  coingeckoCoinId?: string | undefined;
344
346
  };
345
- listUrl?: string | undefined;
346
347
  governance?: {
347
- symbol: string;
348
348
  assetId: string;
349
349
  imageUrl: string;
350
350
  name: string;
351
+ symbol: string;
351
352
  decimals: number;
352
353
  coingeckoCoinId?: string | undefined;
353
354
  } | undefined;
@@ -371,10 +372,9 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
371
372
  isFeatured: boolean;
372
373
  isDeprecated: boolean;
373
374
  isDeletable: boolean;
374
- priority: number;
375
375
  isAutoEnabled?: boolean | undefined;
376
+ priority: number;
376
377
  };
377
- geckoTerminalPlatformId?: string | undefined;
378
378
  contracts?: {
379
379
  multicall3?: `0x${string}` | undefined;
380
380
  } | undefined;
@@ -385,30 +385,30 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
385
385
  coingeckoPlatformId: import("@metamask/superstruct").Struct<string, null>;
386
386
  geckoTerminalPlatformId: import("@metamask/superstruct").Struct<string | undefined, null>;
387
387
  assets: import("@metamask/superstruct").Struct<{
388
+ listUrl?: string | undefined;
388
389
  native: {
389
- symbol: string;
390
390
  assetId: string;
391
391
  imageUrl: string;
392
392
  name: string;
393
+ symbol: string;
393
394
  decimals: number;
394
395
  coingeckoCoinId?: string | undefined;
395
396
  };
396
- listUrl?: string | undefined;
397
397
  governance?: {
398
- symbol: string;
399
398
  assetId: string;
400
399
  imageUrl: string;
401
400
  name: string;
401
+ symbol: string;
402
402
  decimals: number;
403
403
  coingeckoCoinId?: string | undefined;
404
404
  } | undefined;
405
405
  }, {
406
406
  listUrl: import("@metamask/superstruct").Struct<string | undefined, null>;
407
407
  native: import("@metamask/superstruct").Struct<{
408
- symbol: string;
409
408
  assetId: string;
410
409
  imageUrl: string;
411
410
  name: string;
411
+ symbol: string;
412
412
  decimals: number;
413
413
  coingeckoCoinId?: string | undefined;
414
414
  }, {
@@ -420,10 +420,10 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
420
420
  coingeckoCoinId: import("@metamask/superstruct").Struct<string | undefined, null>;
421
421
  }>;
422
422
  governance: import("@metamask/superstruct").Struct<{
423
- symbol: string;
424
423
  assetId: string;
425
424
  imageUrl: string;
426
425
  name: string;
426
+ symbol: string;
427
427
  decimals: number;
428
428
  coingeckoCoinId?: string | undefined;
429
429
  } | undefined, {
@@ -468,8 +468,8 @@ export declare const RegistryConfigApiResponseSchema: import("@metamask/superstr
468
468
  isFeatured: boolean;
469
469
  isDeprecated: boolean;
470
470
  isDeletable: boolean;
471
- priority: number;
472
471
  isAutoEnabled?: boolean | undefined;
472
+ priority: number;
473
473
  }, {
474
474
  isActive: import("@metamask/superstruct").Struct<boolean, null>;
475
475
  isTestnet: import("@metamask/superstruct").Struct<boolean, null>;
@@ -507,4 +507,4 @@ export type FetchConfigResult = {
507
507
  data: RegistryConfigApiResponse;
508
508
  etag?: string;
509
509
  };
510
- //# sourceMappingURL=types.d.cts.map
510
+ //# sourceMappingURL=types.d.ts.map