UNPKG

@metamask/multichain-account-service

Version:
1 lines 3.81 kB
{"version":3,"file":"traces.mjs","sourceRoot":"","sources":["../../src/analytics/traces.ts"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,KAAK,EAC/C,QAAsB,EACtB,EAA2C,EACtB,EAAE;IACvB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,SAAuB,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAiC;IAEjC,wFAAwF;IACxF,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnB,GAAG,IAAI;QACP,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;KAC3B,CAAC,EACF,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAA6B;IAE7B,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC1C,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;YACxB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;SACrB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,4DAA+C,CAAA;IAC/C,0DAA6C,CAAA;IAC7C,+EAAkE,CAAA;IAClE,iDAAoC,CAAA;IACpC,0FAA6E,CAAA;IAC7E,4FAA+E,CAAA;AACjF,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB","sourcesContent":["import type {\n TraceCallback,\n TraceContext,\n TraceRequest,\n} from '@metamask/controller-utils';\nimport { CreateAccountOptions } from '@metamask/keyring-api';\n\n// Explicit import to avoid circular dependency between `analytics` and `providers`.\nimport type { Bip44AccountProvider } from '../providers/BaseBip44AccountProvider';\n\n/**\n * Fallback function for tracing.\n * This function is used when no specific trace function is provided.\n * It executes the provided function in a trace context if available.\n *\n * @param _request - The trace request containing additional data and context.\n * @param fn - The function to execute within the trace context.\n * @returns A promise that resolves to the result of the executed function.\n * If no function is provided, it resolves to undefined.\n */\nexport const traceFallback: TraceCallback = async <ReturnType>(\n _request: TraceRequest,\n fn?: (context?: TraceContext) => ReturnType,\n): Promise<ReturnType> => {\n if (!fn) {\n return undefined as ReturnType;\n }\n return await Promise.resolve(fn());\n};\n\n/**\n * Compute trace data for a list of providers.\n *\n * @param providers Providers to be included in the trace data.\n * @returns An object mapping provider names to true, indicating their presence in the trace.\n */\nexport function toProviderDataTraces(\n providers: Bip44AccountProvider[],\n): Record<string, boolean> {\n // We cannot use complex objects within traces, so we just map provider names with true.\n return providers.reduce(\n (data, provider) => ({\n ...data,\n [provider.getName()]: true,\n }),\n {},\n );\n}\n\n/**\n * Compute trace data for `createAccounts` options.\n *\n * @param options The `createAccounts` options.\n * @returns An object containing options data depending on its type.\n */\nexport function toCreateAccountsV2DataTraces(\n options: CreateAccountOptions,\n): Record<string, string | number | boolean> {\n if (options.type === 'bip44:derive-index') {\n return {\n groupIndex: options.groupIndex,\n };\n } else if (options.type === 'bip44:derive-index-range') {\n return {\n from: options.range.from,\n to: options.range.to,\n };\n }\n return {};\n}\n\n/**\n * Trace names.\n */\nexport enum TraceName {\n SnapDiscoverAccounts = 'Snap Discover Accounts',\n EvmDiscoverAccounts = 'EVM Discover Accounts',\n ProviderCreateAccounts = 'Provider Create Accounts (v2 - batched)',\n WalletAlignment = 'Wallet Alignment',\n WalletCreateMultichainAccountGroup = 'Wallet Create Multichain Account Group',\n WalletCreateMultichainAccountGroups = 'Wallet Create Multichain Account Groups',\n}\n"]}