@metamask/snaps-sdk
Version:
A library containing the core functionality for building MetaMask Snaps
1 lines • 4.11 kB
Source Map (JSON)
{"version":3,"file":"caip.cjs","sourceRoot":"","sources":["../../src/types/caip.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AACtD,2CAUyB;AAyBzB;;GAEG;AACU,QAAA,yDAAyD,GAAG,IAAA,oBAAM,EAC7E,IAAA,mBAAK,EAAC,2BAAmB,CAAC,EAC1B,gDAAgD,EAChD,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC/C,IAAA,0BAAkB,EAAC,SAAS,CAAC,CAC9B,CAAC;IAEF,IACE,CAAC,gBAAgB,CAAC,KAAK,CACrB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CACpC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO;QACvC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CACpD,EACD,CAAC;QACD,OAAO,2DAA2D,CAAC;IACrE,CAAC;IAED,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QACxE,OAAO,SAAS,KAAK,0BAAkB,CAAC,MAAM,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,sBAAsB,GAAG,IAAA,oBAAM,EAC1C,yBAAiB,EACjB,sBAAsB,EACtB,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,SAAS,KAAK,0BAAkB,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,2CAA2C,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,wBAAwB,GAAG,IAAA,oBAAM,EAC5C,2BAAmB,EACnB,wBAAwB,EACxB,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,EACJ,KAAK,EAAE,EAAE,SAAS,EAAE,GACrB,GAAG,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;IAE9B,IAAI,SAAS,KAAK,0BAAkB,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,+CAA+C,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC","sourcesContent":["import { array, refine } from '@metamask/superstruct';\nimport {\n CaipAccountIdStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n KnownCaipNamespace,\n parseCaipAccountId,\n parseCaipAssetType,\n parseCaipChainId,\n type CaipAccountId,\n type CaipChainId,\n} from '@metamask/utils';\n\nexport type {\n CaipAccountId,\n CaipAssetType,\n CaipChainId,\n CaipNamespace,\n} from '@metamask/utils';\n\n/**\n * A CAIP-2 chain ID, i.e., a human-readable namespace and reference.\n *\n * @see https://chainagnostic.org/CAIPs/caip-2\n * @deprecated Use {@link CaipChainId} instead.\n */\nexport type ChainId = CaipChainId;\n\n/**\n * A CAIP-10 account ID, i.e., a chain ID and an account address.\n *\n * @see https://chainagnostic.org/CAIPs/caip-10\n * @deprecated Use {@link CaipAccountId} instead.\n */\nexport type AccountId = CaipAccountId;\n\n/**\n * A struct representing a list of non-EIP-155 CAIP-10 account IDs where the account addresses are the same.\n */\nexport const NonEip155CaipAccountIdsMatchedByAddressAndNamespaceStruct = refine(\n array(CaipAccountIdStruct),\n 'Non-EIP-155 Matching Addresses Account ID List',\n (value) => {\n const parsedAccountIds = value.map((accountId) =>\n parseCaipAccountId(accountId),\n );\n\n if (\n !parsedAccountIds.every(\n ({ address, chain: { namespace } }) =>\n address === parsedAccountIds[0].address &&\n namespace === parsedAccountIds[0].chain.namespace,\n )\n ) {\n return 'All account IDs must have the same address and namespace.';\n }\n\n const containsEip155 = parsedAccountIds.some(({ chain: { namespace } }) => {\n return namespace === KnownCaipNamespace.Eip155;\n });\n\n if (containsEip155) {\n return 'All account IDs must have non-EIP-155 namespaces.';\n }\n\n return true;\n },\n);\n\n/**\n * A struct representing a non-EIP-155 chain ID.\n */\nexport const NonEip155ChainIdStruct = refine(\n CaipChainIdStruct,\n 'Non-EIP-155 Chain ID',\n (value) => {\n const { namespace } = parseCaipChainId(value);\n\n if (namespace === KnownCaipNamespace.Eip155) {\n return 'Chain ID must not be an EIP-155 chain ID.';\n }\n\n return true;\n },\n);\n\n/**\n * A struct representing a non-EIP-155 asset type.\n */\nexport const NonEip155AssetTypeStruct = refine(\n CaipAssetTypeStruct,\n 'Non-EIP-155 Asset Type',\n (value) => {\n const {\n chain: { namespace },\n } = parseCaipAssetType(value);\n\n if (namespace === KnownCaipNamespace.Eip155) {\n return 'Asset type must not be an EIP-155 asset type.';\n }\n\n return true;\n },\n);\n"]}