@metamask-previews/multichain-network-controller 0.6.0-preview-d0bf3e9 → 0.6.0-preview-be835479
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -5
- package/dist/MultichainNetworkService/MultichainNetworkService.cjs +27 -53
- package/dist/MultichainNetworkService/MultichainNetworkService.cjs.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.d.cts +2 -4
- package/dist/MultichainNetworkService/MultichainNetworkService.d.cts.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.d.mts +2 -4
- package/dist/MultichainNetworkService/MultichainNetworkService.d.mts.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.mjs +27 -54
- package/dist/MultichainNetworkService/MultichainNetworkService.mjs.map +1 -1
- package/package.json +4 -6
package/CHANGELOG.md
CHANGED
|
@@ -7,10 +7,6 @@ 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
|
-
- Bump `@metamask/controller-utils` to `^11.8.0` ([#5765](https://github.com/MetaMask/core/pull/5765))
|
|
13
|
-
|
|
14
10
|
## [0.6.0]
|
|
15
11
|
|
|
16
12
|
### Changed
|
|
@@ -23,7 +19,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
23
19
|
### Changed
|
|
24
20
|
|
|
25
21
|
- Updated to restrict `getNetworksWithTransactionActivityByAccounts` to EVM networks only while non-EVM network endpoint support is being completed. Full multi-chain support will be restored in the coming weeks ([#5677](https://github.com/MetaMask/core/pull/5677))
|
|
26
|
-
- Updated network activity API requests to have batching support to handle URL length limitations, allowing the controller to fetch network activity for any number of accounts ([#5752](https://github.com/MetaMask/core/pull/5752))
|
|
27
22
|
|
|
28
23
|
## [0.5.0]
|
|
29
24
|
|
|
@@ -10,80 +10,54 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var
|
|
13
|
+
var _MultichainNetworkService_fetch;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.MultichainNetworkService = void 0;
|
|
16
16
|
const superstruct_1 = require("@metamask/superstruct");
|
|
17
|
-
const lodash_1 = require("lodash");
|
|
18
17
|
const accounts_api_1 = require("../api/accounts-api.cjs");
|
|
19
18
|
/**
|
|
20
19
|
* Service responsible for fetching network activity data from the API.
|
|
21
20
|
*/
|
|
22
21
|
class MultichainNetworkService {
|
|
23
|
-
constructor({ fetch: fetchFunction
|
|
24
|
-
_MultichainNetworkService_instances.add(this);
|
|
22
|
+
constructor({ fetch: fetchFunction }) {
|
|
25
23
|
_MultichainNetworkService_fetch.set(this, void 0);
|
|
26
|
-
_MultichainNetworkService_batchSize.set(this, void 0);
|
|
27
24
|
__classPrivateFieldSet(this, _MultichainNetworkService_fetch, fetchFunction, "f");
|
|
28
|
-
__classPrivateFieldSet(this, _MultichainNetworkService_batchSize, batchSize ?? 20, "f");
|
|
29
25
|
}
|
|
30
26
|
/**
|
|
31
27
|
* Fetches active networks for the given account IDs.
|
|
32
|
-
* Automatically handles batching requests to comply with URL length limitations.
|
|
33
28
|
*
|
|
34
29
|
* @param accountIds - Array of CAIP-10 account IDs to fetch activity for.
|
|
35
|
-
* @returns Promise resolving to the
|
|
30
|
+
* @returns Promise resolving to the active networks response.
|
|
36
31
|
* @throws Error if the response format is invalid or the request fails.
|
|
37
32
|
*/
|
|
38
33
|
async fetchNetworkActivity(accountIds) {
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
try {
|
|
35
|
+
const url = (0, accounts_api_1.buildActiveNetworksUrl)(accountIds);
|
|
36
|
+
const response = await __classPrivateFieldGet(this, _MultichainNetworkService_fetch, "f").call(this, url.toString(), {
|
|
37
|
+
method: 'GET',
|
|
38
|
+
headers: {
|
|
39
|
+
[accounts_api_1.MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: accounts_api_1.MULTICHAIN_ACCOUNTS_CLIENT_ID,
|
|
40
|
+
Accept: 'application/json',
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
45
|
+
}
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
(0, superstruct_1.assert)(data, accounts_api_1.ActiveNetworksResponseStruct);
|
|
48
|
+
return data;
|
|
41
49
|
}
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (error instanceof Error) {
|
|
52
|
+
if (error.name === 'AbortError') {
|
|
53
|
+
throw new Error('Request timeout: Failed to fetch active networks');
|
|
54
|
+
}
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`Failed to fetch active networks: ${String(error)}`);
|
|
44
58
|
}
|
|
45
|
-
const batches = (0, lodash_1.chunk)(accountIds, __classPrivateFieldGet(this, _MultichainNetworkService_batchSize, "f"));
|
|
46
|
-
const batchResults = await Promise.all(batches.map((batch) => __classPrivateFieldGet(this, _MultichainNetworkService_instances, "m", _MultichainNetworkService_fetchNetworkActivityBatch).call(this, batch)));
|
|
47
|
-
const combinedResponse = {
|
|
48
|
-
activeNetworks: batchResults.flatMap((response) => response.activeNetworks),
|
|
49
|
-
};
|
|
50
|
-
return combinedResponse;
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
61
|
exports.MultichainNetworkService = MultichainNetworkService;
|
|
54
|
-
_MultichainNetworkService_fetch = new WeakMap()
|
|
55
|
-
/**
|
|
56
|
-
* Internal method to fetch a single batch of account IDs.
|
|
57
|
-
*
|
|
58
|
-
* @param accountIds - Batch of account IDs to fetch
|
|
59
|
-
* @returns Promise resolving to the active networks response for this batch
|
|
60
|
-
* @throws Error if the response format is invalid or the request fails
|
|
61
|
-
*/
|
|
62
|
-
async function _MultichainNetworkService_fetchNetworkActivityBatch(accountIds) {
|
|
63
|
-
try {
|
|
64
|
-
const url = (0, accounts_api_1.buildActiveNetworksUrl)(accountIds);
|
|
65
|
-
const response = await __classPrivateFieldGet(this, _MultichainNetworkService_fetch, "f").call(this, url.toString(), {
|
|
66
|
-
method: 'GET',
|
|
67
|
-
headers: {
|
|
68
|
-
[accounts_api_1.MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: accounts_api_1.MULTICHAIN_ACCOUNTS_CLIENT_ID,
|
|
69
|
-
Accept: 'application/json',
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
if (!response.ok) {
|
|
73
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
74
|
-
}
|
|
75
|
-
const data = await response.json();
|
|
76
|
-
(0, superstruct_1.assert)(data, accounts_api_1.ActiveNetworksResponseStruct);
|
|
77
|
-
return data;
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
if (error instanceof Error) {
|
|
81
|
-
if (error.name === 'AbortError') {
|
|
82
|
-
throw new Error('Request timeout: Failed to fetch active networks');
|
|
83
|
-
}
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
86
|
-
throw new Error(`Failed to fetch active networks: ${String(error)}`);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
62
|
+
_MultichainNetworkService_fetch = new WeakMap();
|
|
89
63
|
//# sourceMappingURL=MultichainNetworkService.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA+C;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA+C;AAG/C,0DAM6B;AAE7B;;GAEG;AACH,MAAa,wBAAwB;IAGnC,YAAY,EAAE,KAAK,EAAE,aAAa,EAA2B;QAFpD,kDAAqB;QAG5B,uBAAA,IAAI,mCAAU,aAAa,MAAA,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,UAA2B;QAE3B,IAAI;YACF,MAAM,GAAG,GAAG,IAAA,qCAAsB,EAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,MAAM,uBAAA,IAAI,uCAAO,MAAX,IAAI,EAAQ,GAAG,CAAC,QAAQ,EAAE,EAAE;gBACjD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,CAAC,gDAAiC,CAAC,EAAE,4CAA6B;oBAClE,MAAM,EAAE,kBAAkB;iBAC3B;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;aAC3D;YAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE5C,IAAA,oBAAM,EAAC,IAAI,EAAE,2CAA4B,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;iBACrE;gBACD,MAAM,KAAK,CAAC;aACb;YAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACtE;IACH,CAAC;CACF;AA/CD,4DA+CC","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { CaipAccountId } from '@metamask/utils';\n\nimport {\n type ActiveNetworksResponse,\n ActiveNetworksResponseStruct,\n buildActiveNetworksUrl,\n MULTICHAIN_ACCOUNTS_CLIENT_HEADER,\n MULTICHAIN_ACCOUNTS_CLIENT_ID,\n} from '../api/accounts-api';\n\n/**\n * Service responsible for fetching network activity data from the API.\n */\nexport class MultichainNetworkService {\n readonly #fetch: typeof fetch;\n\n constructor({ fetch: fetchFunction }: { fetch: typeof fetch }) {\n this.#fetch = fetchFunction;\n }\n\n /**\n * Fetches active networks for the given account IDs.\n *\n * @param accountIds - Array of CAIP-10 account IDs to fetch activity for.\n * @returns Promise resolving to the active networks response.\n * @throws Error if the response format is invalid or the request fails.\n */\n async fetchNetworkActivity(\n accountIds: CaipAccountId[],\n ): Promise<ActiveNetworksResponse> {\n try {\n const url = buildActiveNetworksUrl(accountIds);\n\n const response = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: {\n [MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,\n Accept: 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: unknown = await response.json();\n\n assert(data, ActiveNetworksResponseStruct);\n return data;\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new Error('Request timeout: Failed to fetch active networks');\n }\n throw error;\n }\n\n throw new Error(`Failed to fetch active networks: ${String(error)}`);\n }\n }\n}\n"]}
|
|
@@ -5,16 +5,14 @@ import { type ActiveNetworksResponse } from "../api/accounts-api.cjs";
|
|
|
5
5
|
*/
|
|
6
6
|
export declare class MultichainNetworkService {
|
|
7
7
|
#private;
|
|
8
|
-
constructor({ fetch: fetchFunction
|
|
8
|
+
constructor({ fetch: fetchFunction }: {
|
|
9
9
|
fetch: typeof fetch;
|
|
10
|
-
batchSize?: number;
|
|
11
10
|
});
|
|
12
11
|
/**
|
|
13
12
|
* Fetches active networks for the given account IDs.
|
|
14
|
-
* Automatically handles batching requests to comply with URL length limitations.
|
|
15
13
|
*
|
|
16
14
|
* @param accountIds - Array of CAIP-10 account IDs to fetch activity for.
|
|
17
|
-
* @returns Promise resolving to the
|
|
15
|
+
* @returns Promise resolving to the active networks response.
|
|
18
16
|
* @throws Error if the response format is invalid or the request fails.
|
|
19
17
|
*/
|
|
20
18
|
fetchNetworkActivity(accountIds: CaipAccountId[]): Promise<ActiveNetworksResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.d.cts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.d.cts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAErD,OAAO,EACL,KAAK,sBAAsB,EAK5B,gCAA4B;AAE7B;;GAEG;AACH,qBAAa,wBAAwB;;gBAGvB,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAAE,KAAK,EAAE,OAAO,KAAK,CAAA;KAAE;IAI7D;;;;;;OAMG;IACG,oBAAoB,CACxB,UAAU,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,sBAAsB,CAAC;CA+BnC"}
|
|
@@ -5,16 +5,14 @@ import { type ActiveNetworksResponse } from "../api/accounts-api.mjs";
|
|
|
5
5
|
*/
|
|
6
6
|
export declare class MultichainNetworkService {
|
|
7
7
|
#private;
|
|
8
|
-
constructor({ fetch: fetchFunction
|
|
8
|
+
constructor({ fetch: fetchFunction }: {
|
|
9
9
|
fetch: typeof fetch;
|
|
10
|
-
batchSize?: number;
|
|
11
10
|
});
|
|
12
11
|
/**
|
|
13
12
|
* Fetches active networks for the given account IDs.
|
|
14
|
-
* Automatically handles batching requests to comply with URL length limitations.
|
|
15
13
|
*
|
|
16
14
|
* @param accountIds - Array of CAIP-10 account IDs to fetch activity for.
|
|
17
|
-
* @returns Promise resolving to the
|
|
15
|
+
* @returns Promise resolving to the active networks response.
|
|
18
16
|
* @throws Error if the response format is invalid or the request fails.
|
|
19
17
|
*/
|
|
20
18
|
fetchNetworkActivity(accountIds: CaipAccountId[]): Promise<ActiveNetworksResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.d.mts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.d.mts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AAErD,OAAO,EACL,KAAK,sBAAsB,EAK5B,gCAA4B;AAE7B;;GAEG;AACH,qBAAa,wBAAwB;;gBAGvB,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QAAE,KAAK,EAAE,OAAO,KAAK,CAAA;KAAE;IAI7D;;;;;;OAMG;IACG,oBAAoB,CACxB,UAAU,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,sBAAsB,CAAC;CA+BnC"}
|
|
@@ -9,78 +9,51 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var
|
|
12
|
+
var _MultichainNetworkService_fetch;
|
|
13
13
|
import { assert } from "@metamask/superstruct";
|
|
14
|
-
import $lodash from "lodash";
|
|
15
|
-
const { chunk } = $lodash;
|
|
16
14
|
import { ActiveNetworksResponseStruct, buildActiveNetworksUrl, MULTICHAIN_ACCOUNTS_CLIENT_HEADER, MULTICHAIN_ACCOUNTS_CLIENT_ID } from "../api/accounts-api.mjs";
|
|
17
15
|
/**
|
|
18
16
|
* Service responsible for fetching network activity data from the API.
|
|
19
17
|
*/
|
|
20
18
|
export class MultichainNetworkService {
|
|
21
|
-
constructor({ fetch: fetchFunction
|
|
22
|
-
_MultichainNetworkService_instances.add(this);
|
|
19
|
+
constructor({ fetch: fetchFunction }) {
|
|
23
20
|
_MultichainNetworkService_fetch.set(this, void 0);
|
|
24
|
-
_MultichainNetworkService_batchSize.set(this, void 0);
|
|
25
21
|
__classPrivateFieldSet(this, _MultichainNetworkService_fetch, fetchFunction, "f");
|
|
26
|
-
__classPrivateFieldSet(this, _MultichainNetworkService_batchSize, batchSize ?? 20, "f");
|
|
27
22
|
}
|
|
28
23
|
/**
|
|
29
24
|
* Fetches active networks for the given account IDs.
|
|
30
|
-
* Automatically handles batching requests to comply with URL length limitations.
|
|
31
25
|
*
|
|
32
26
|
* @param accountIds - Array of CAIP-10 account IDs to fetch activity for.
|
|
33
|
-
* @returns Promise resolving to the
|
|
27
|
+
* @returns Promise resolving to the active networks response.
|
|
34
28
|
* @throws Error if the response format is invalid or the request fails.
|
|
35
29
|
*/
|
|
36
30
|
async fetchNetworkActivity(accountIds) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Internal method to fetch a single batch of account IDs.
|
|
54
|
-
*
|
|
55
|
-
* @param accountIds - Batch of account IDs to fetch
|
|
56
|
-
* @returns Promise resolving to the active networks response for this batch
|
|
57
|
-
* @throws Error if the response format is invalid or the request fails
|
|
58
|
-
*/
|
|
59
|
-
async function _MultichainNetworkService_fetchNetworkActivityBatch(accountIds) {
|
|
60
|
-
try {
|
|
61
|
-
const url = buildActiveNetworksUrl(accountIds);
|
|
62
|
-
const response = await __classPrivateFieldGet(this, _MultichainNetworkService_fetch, "f").call(this, url.toString(), {
|
|
63
|
-
method: 'GET',
|
|
64
|
-
headers: {
|
|
65
|
-
[MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,
|
|
66
|
-
Accept: 'application/json',
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
if (!response.ok) {
|
|
70
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
31
|
+
try {
|
|
32
|
+
const url = buildActiveNetworksUrl(accountIds);
|
|
33
|
+
const response = await __classPrivateFieldGet(this, _MultichainNetworkService_fetch, "f").call(this, url.toString(), {
|
|
34
|
+
method: 'GET',
|
|
35
|
+
headers: {
|
|
36
|
+
[MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,
|
|
37
|
+
Accept: 'application/json',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
const data = await response.json();
|
|
44
|
+
assert(data, ActiveNetworksResponseStruct);
|
|
45
|
+
return data;
|
|
71
46
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (error.name === 'AbortError') {
|
|
79
|
-
throw new Error('Request timeout: Failed to fetch active networks');
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof Error) {
|
|
49
|
+
if (error.name === 'AbortError') {
|
|
50
|
+
throw new Error('Request timeout: Failed to fetch active networks');
|
|
51
|
+
}
|
|
52
|
+
throw error;
|
|
80
53
|
}
|
|
81
|
-
throw error;
|
|
54
|
+
throw new Error(`Failed to fetch active networks: ${String(error)}`);
|
|
82
55
|
}
|
|
83
|
-
throw new Error(`Failed to fetch active networks: ${String(error)}`);
|
|
84
56
|
}
|
|
85
|
-
}
|
|
57
|
+
}
|
|
58
|
+
_MultichainNetworkService_fetch = new WeakMap();
|
|
86
59
|
//# sourceMappingURL=MultichainNetworkService.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.mjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,8BAA8B
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.mjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAG/C,OAAO,EAEL,4BAA4B,EAC5B,sBAAsB,EACtB,iCAAiC,EACjC,6BAA6B,EAC9B,gCAA4B;AAE7B;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAGnC,YAAY,EAAE,KAAK,EAAE,aAAa,EAA2B;QAFpD,kDAAqB;QAG5B,uBAAA,IAAI,mCAAU,aAAa,MAAA,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,UAA2B;QAE3B,IAAI;YACF,MAAM,GAAG,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,MAAM,uBAAA,IAAI,uCAAO,MAAX,IAAI,EAAQ,GAAG,CAAC,QAAQ,EAAE,EAAE;gBACjD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,CAAC,iCAAiC,CAAC,EAAE,6BAA6B;oBAClE,MAAM,EAAE,kBAAkB;iBAC3B;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;aAC3D;YAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE5C,MAAM,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;iBACrE;gBACD,MAAM,KAAK,CAAC;aACb;YAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACtE;IACH,CAAC;CACF","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { CaipAccountId } from '@metamask/utils';\n\nimport {\n type ActiveNetworksResponse,\n ActiveNetworksResponseStruct,\n buildActiveNetworksUrl,\n MULTICHAIN_ACCOUNTS_CLIENT_HEADER,\n MULTICHAIN_ACCOUNTS_CLIENT_ID,\n} from '../api/accounts-api';\n\n/**\n * Service responsible for fetching network activity data from the API.\n */\nexport class MultichainNetworkService {\n readonly #fetch: typeof fetch;\n\n constructor({ fetch: fetchFunction }: { fetch: typeof fetch }) {\n this.#fetch = fetchFunction;\n }\n\n /**\n * Fetches active networks for the given account IDs.\n *\n * @param accountIds - Array of CAIP-10 account IDs to fetch activity for.\n * @returns Promise resolving to the active networks response.\n * @throws Error if the response format is invalid or the request fails.\n */\n async fetchNetworkActivity(\n accountIds: CaipAccountId[],\n ): Promise<ActiveNetworksResponse> {\n try {\n const url = buildActiveNetworksUrl(accountIds);\n\n const response = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: {\n [MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,\n Accept: 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: unknown = await response.json();\n\n assert(data, ActiveNetworksResponseStruct);\n return data;\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new Error('Request timeout: Failed to fetch active networks');\n }\n throw error;\n }\n\n throw new Error(`Failed to fetch active networks: ${String(error)}`);\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/multichain-network-controller",
|
|
3
|
-
"version": "0.6.0-preview-
|
|
3
|
+
"version": "0.6.0-preview-be835479",
|
|
4
4
|
"description": "Multichain network controller",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -48,21 +48,19 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@metamask/base-controller": "^8.0.1",
|
|
51
|
-
"@metamask/controller-utils": "^11.
|
|
51
|
+
"@metamask/controller-utils": "^11.7.0",
|
|
52
52
|
"@metamask/keyring-api": "^17.4.0",
|
|
53
53
|
"@metamask/keyring-internal-api": "^6.0.1",
|
|
54
54
|
"@metamask/superstruct": "^3.1.0",
|
|
55
55
|
"@metamask/utils": "^11.2.0",
|
|
56
|
-
"@solana/addresses": "^2.0.0"
|
|
57
|
-
"lodash": "^4.17.21"
|
|
56
|
+
"@solana/addresses": "^2.0.0"
|
|
58
57
|
},
|
|
59
58
|
"devDependencies": {
|
|
60
59
|
"@metamask/accounts-controller": "^28.0.0",
|
|
61
60
|
"@metamask/auto-changelog": "^3.4.4",
|
|
62
61
|
"@metamask/keyring-controller": "^21.0.6",
|
|
63
|
-
"@metamask/network-controller": "^23.
|
|
62
|
+
"@metamask/network-controller": "^23.3.0",
|
|
64
63
|
"@types/jest": "^27.4.1",
|
|
65
|
-
"@types/lodash": "^4.14.191",
|
|
66
64
|
"@types/uuid": "^8.3.0",
|
|
67
65
|
"deepmerge": "^4.2.2",
|
|
68
66
|
"immer": "^9.0.6",
|