UNPKG

@metamask/multichain-network-controller

Version:
1 lines 3.02 kB
{"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"]}