@cartridge/controller 0.7.13-alpha.1 → 0.7.13-alpha.2
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/.turbo/turbo-build$colon$deps.log +51 -49
- package/.turbo/turbo-build.log +47 -45
- package/dist/icon.d.ts +1 -1
- package/dist/index.js +3307 -1392
- package/dist/index.js.map +1 -1
- package/dist/node/index.cjs +14 -5
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.js +14 -5
- package/dist/node/index.js.map +1 -1
- package/dist/provider-LFJfEvkl.js +287 -0
- package/dist/provider-LFJfEvkl.js.map +1 -0
- package/dist/session/account.d.ts +4 -1
- package/dist/session.js +86 -77
- package/dist/session.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/wallets/bridge.d.ts +2 -2
- package/dist/wallets/index.d.ts +5 -2
- package/dist/wallets/metamask/index.d.ts +1 -1
- package/dist/wallets/rabby/index.d.ts +18 -0
- package/dist/wallets/turnkey/index.d.ts +19 -0
- package/dist/wallets/types.d.ts +1 -1
- package/dist/wallets/wallet-connect/index.d.ts +18 -0
- package/package.json +9 -4
- package/src/icon.ts +1 -1
- package/src/iframe/base.ts +1 -0
- package/src/node/account.ts +9 -0
- package/src/node/provider.ts +3 -0
- package/src/session/account.ts +9 -0
- package/src/session/provider.ts +6 -0
- package/src/telegram/provider.ts +6 -0
- package/src/types.ts +1 -0
- package/src/wallets/bridge.ts +8 -6
- package/src/wallets/index.ts +5 -2
- package/src/wallets/metamask/index.ts +6 -5
- package/src/wallets/rabby/index.ts +231 -0
- package/src/wallets/turnkey/index.ts +191 -0
- package/src/wallets/types.ts +1 -1
- package/src/wallets/wallet-connect/index.ts +196 -0
- package/.turbo/turbo-format.log +0 -39
- package/dist/provider-BDCJkGu6.js +0 -287
- package/dist/provider-BDCJkGu6.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-LFJfEvkl.js","sources":["../src/types.ts","../src/utils.ts","../src/constants.ts","../src/errors.ts","../../../node_modules/.pnpm/@starknet-io+types-js@0.7.10/node_modules/@starknet-io/types-js/dist/esm/wallet-api/constants.js","../src/icon.ts","../src/mutex.ts","../src/provider.ts"],"sourcesContent":["import {\n constants,\n BigNumberish,\n Call,\n Abi,\n InvocationsDetails,\n} from \"starknet\";\nimport {\n AddInvokeTransactionResult,\n ChainId,\n Signature,\n TypedData,\n} from \"@starknet-io/types-js\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { Policy, SessionPolicies } from \"@cartridge/presets\";\nimport {\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n} from \"./wallets/types\";\n\nexport type Session = {\n chainId: constants.StarknetChainId;\n policies: Policy[];\n maxFee: BigNumberish;\n expiresAt: bigint;\n credentials: {\n authorization: string[];\n privateKey: string;\n };\n};\n\nexport enum ResponseCodes {\n SUCCESS = \"SUCCESS\",\n NOT_CONNECTED = \"NOT_CONNECTED\",\n ERROR = \"ERROR\",\n CANCELED = \"CANCELED\",\n USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\n}\n\nexport type ConnectError = {\n code: ResponseCodes;\n message: string;\n error?: ControllerError;\n};\n\nexport type ControllerError = {\n code: Number;\n message: string;\n data?: any;\n};\n\nexport type ConnectReply = {\n code: ResponseCodes.SUCCESS;\n address: string;\n policies?: SessionPolicies;\n};\n\nexport type ExecuteReply =\n | (AddInvokeTransactionResult & {\n code: ResponseCodes.SUCCESS;\n })\n | {\n code: ResponseCodes.USER_INTERACTION_REQUIRED;\n };\n\nexport type ProbeReply = {\n code: ResponseCodes.SUCCESS;\n address: string;\n rpcUrl?: string;\n};\n\nexport type DeployReply = {\n code: ResponseCodes.SUCCESS;\n transaction_hash: string;\n};\n\nexport type IFrames = {\n keychain: KeychainIFrame;\n profile?: ProfileIFrame;\n version?: number;\n};\n\nexport interface LookupRequest {\n usernames?: string[];\n addresses?: string[];\n}\n\nexport interface LookupResult {\n username: string;\n addresses: string[];\n}\n\nexport interface LookupResponse {\n results: LookupResult[];\n}\n\nexport enum FeeSource {\n PAYMASTER = \"PAYMASTER\",\n CREDITS = \"CREDITS\",\n}\n\ntype ContractAddress = string;\ntype CartridgeID = string;\nexport type ControllerAccounts = Record<ContractAddress, CartridgeID>;\n\nexport interface Keychain {\n probe(rpcUrl: string): Promise<ProbeReply | ConnectError>;\n connect(\n policies: SessionPolicies,\n rpcUrl: string,\n ): Promise<ConnectReply | ConnectError>;\n disconnect(): void;\n\n reset(): void;\n revoke(origin: string): void;\n\n deploy(): Promise<DeployReply | ConnectError>;\n execute(\n calls: Call | Call[],\n abis?: Abi[],\n transactionsDetail?: InvocationsDetails,\n sync?: boolean,\n feeSource?: any,\n error?: ControllerError,\n ): Promise<ExecuteReply | ConnectError>;\n signMessage(\n typedData: TypedData,\n account: string,\n async?: boolean,\n ): Promise<Signature | ConnectError>;\n openSettings(): Promise<void | ConnectError>;\n session(): Promise<Session>;\n sessions(): Promise<{\n [key: string]: Session;\n }>;\n delegateAccount(): string;\n username(): string;\n openPurchaseCredits(): void;\n openExecute(calls: Call[]): Promise<void>;\n switchChain(rpcUrl: string): Promise<void>;\n openStarterPack(starterpackId: string): void;\n\n // External wallet methods\n externalDetectWallets(): Promise<ExternalWallet[]>;\n externalConnectWallet(\n type: ExternalWalletType,\n ): Promise<ExternalWalletResponse>;\n externalSignMessage(\n type: ExternalWalletType,\n message: string,\n ): Promise<ExternalWalletResponse>;\n externalSignTypedData(\n type: ExternalWalletType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any,\n ): Promise<ExternalWalletResponse>;\n externalGetBalance(\n type: ExternalWalletType,\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse>;\n}\n\nexport interface Profile {\n navigate(path: string): void;\n switchChain(rpcUrl: string): Promise<void>;\n}\n\nexport interface Modal {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Options for configuring the controller\n */\nexport type ControllerOptions = ProviderOptions &\n KeychainOptions &\n ProfileOptions;\n\nexport type IFrameOptions = {\n /** The ID of the starter pack to use */\n starterPackId?: string;\n /** The preset to use */\n preset?: string;\n};\n\nexport type Chain = {\n rpcUrl: string;\n};\n\nexport type ProviderOptions = {\n defaultChainId: ChainId;\n chains: Chain[];\n};\n\nexport type KeychainOptions = IFrameOptions & {\n policies?: SessionPolicies;\n /** The URL of keychain */\n url?: string;\n /** The origin of keychain */\n origin?: string;\n /** Propagate transaction errors back to caller instead of showing modal */\n propagateSessionErrors?: boolean;\n /** The fee source to use for execute from outside */\n feeSource?: FeeSource;\n};\n\nexport type ProfileOptions = IFrameOptions & {\n /** The URL of profile. Mainly for internal development purpose */\n profileUrl?: string;\n /** The project name of Slot instance. */\n slot?: string;\n /** The namespace to use to fetch trophies data from indexer. Will be mandatory once profile page is in production */\n namespace?: string;\n /** The tokens to be listed on Inventory modal */\n tokens?: Tokens;\n /** The policies to use for the profile */\n policies?: SessionPolicies;\n};\n\nexport type ProfileContextTypeVariant =\n | \"inventory\"\n | \"trophies\"\n | \"achievements\"\n | \"leaderboard\"\n | \"activity\";\n\nexport type Tokens = {\n erc20?: string[];\n};\n","import {\n addAddressPadding,\n Call,\n CallData,\n constants,\n getChecksumAddress,\n hash,\n Provider,\n shortString,\n typedData,\n TypedDataRevision,\n} from \"starknet\";\nimport wasm from \"@cartridge/account-wasm/controller\";\nimport { Policies, SessionPolicies } from \"@cartridge/presets\";\nimport { ChainId } from \"@starknet-io/types-js\";\nimport { ParsedSessionPolicies } from \"./policies\";\n\n// Whitelist of allowed property names to prevent prototype pollution\nconst ALLOWED_PROPERTIES = new Set([\n \"contracts\",\n \"messages\",\n \"target\",\n \"method\",\n \"name\",\n \"description\",\n \"types\",\n \"domain\",\n \"primaryType\",\n]);\n\nconst LOCAL_HOSTNAMES = [\"localhost\", \"127.0.0.1\", \"0.0.0.0\"];\n\nfunction validatePropertyName(prop: string): void {\n if (!ALLOWED_PROPERTIES.has(prop)) {\n throw new Error(`Invalid property name: ${prop}`);\n }\n}\n\nfunction safeObjectAccess<T>(obj: any, prop: string): T {\n validatePropertyName(prop);\n return obj[prop];\n}\n\nexport function normalizeCalls(calls: Call | Call[]) {\n return toArray(calls).map((call) => {\n return {\n entrypoint: call.entrypoint,\n contractAddress: addAddressPadding(call.contractAddress),\n calldata: CallData.toHex(call.calldata),\n };\n });\n}\n\nexport function toSessionPolicies(policies: Policies): SessionPolicies {\n return Array.isArray(policies)\n ? policies.reduce<SessionPolicies>(\n (prev, p) => {\n if (safeObjectAccess<string>(p, \"target\")) {\n const target = getChecksumAddress(\n safeObjectAccess<string>(p, \"target\"),\n );\n const entrypoint = safeObjectAccess<string>(p, \"method\");\n const contracts = safeObjectAccess<Record<string, any>>(\n prev,\n \"contracts\",\n );\n const item = {\n name: humanizeString(entrypoint),\n entrypoint: entrypoint,\n description: safeObjectAccess<string>(p, \"description\"),\n };\n\n if (target in contracts) {\n const methods = toArray(contracts[target].methods);\n contracts[target] = {\n methods: [...methods, item],\n };\n } else {\n contracts[target] = {\n methods: [item],\n };\n }\n } else {\n const messages = safeObjectAccess<any[]>(prev, \"messages\");\n messages.push(p);\n }\n\n return prev;\n },\n { contracts: {}, messages: [] },\n )\n : policies;\n}\n\nexport function toWasmPolicies(policies: ParsedSessionPolicies): wasm.Policy[] {\n return [\n ...Object.entries(policies.contracts ?? {}).flatMap(\n ([target, { methods }]) =>\n toArray(methods).map((m) => ({\n target,\n method: m.entrypoint,\n authorized: m.authorized,\n })),\n ),\n ...(policies.messages ?? []).map((p) => {\n const domainHash = typedData.getStructHash(\n p.types,\n \"StarknetDomain\",\n p.domain,\n TypedDataRevision.ACTIVE,\n );\n const typeHash = typedData.getTypeHash(\n p.types,\n p.primaryType,\n TypedDataRevision.ACTIVE,\n );\n\n return {\n scope_hash: hash.computePoseidonHash(domainHash, typeHash),\n authorized: p.authorized,\n };\n }),\n ];\n}\n\nexport function toArray<T>(val: T | T[]): T[] {\n return Array.isArray(val) ? val : [val];\n}\n\nexport function humanizeString(str: string): string {\n return (\n str\n // Convert from camelCase or snake_case\n .replace(/([a-z])([A-Z])/g, \"$1 $2\") // camelCase to spaces\n .replace(/_/g, \" \") // snake_case to spaces\n .toLowerCase()\n // Capitalize first letter\n .replace(/^\\w/, (c) => c.toUpperCase())\n );\n}\n\nexport async function parseChainId(url: URL): Promise<ChainId> {\n const parts = url.pathname.split(\"/\");\n\n if (parts.includes(\"starknet\")) {\n if (parts.includes(\"mainnet\")) {\n return constants.StarknetChainId.SN_MAIN;\n } else if (parts.includes(\"sepolia\")) {\n return constants.StarknetChainId.SN_SEPOLIA;\n }\n } else if (parts.length >= 3) {\n const projectName = parts[2];\n if (parts.includes(\"katana\")) {\n return shortString.encodeShortString(\n `WP_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n } else if (parts.includes(\"mainnet\")) {\n return shortString.encodeShortString(\n `GG_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n }\n }\n\n if (LOCAL_HOSTNAMES.includes(url.hostname)) {\n const provider = new Provider({\n nodeUrl: url.toString(),\n });\n return await provider.getChainId();\n }\n\n throw new Error(`Chain ${url.toString()} not supported`);\n}\n","export const KEYCHAIN_URL = \"https://x.cartridge.gg\";\nexport const PROFILE_URL = \"https://profile.cartridge.gg\";\nexport const API_URL = \"https://api.cartridge.gg\";\n","export class NotReadyToConnect extends Error {\n constructor() {\n super(\"Not ready to connect\");\n\n Object.setPrototypeOf(this, NotReadyToConnect.prototype);\n }\n}\n","export const Permission = {\n ACCOUNTS: 'accounts',\n};\n//# sourceMappingURL=constants.js.map","export const icon =\n \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDgwMCA4MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2RfNTExMl83ODIpIj4KPHBhdGggZD0iTTQ2OS4yMzYgNzBDNDgyLjM5IDcwIDQ5My4wNTMgODAuNjYzIDQ5My4wNTMgOTMuODE2NFYxNDcuMTQ3TDUxNS4zMzggMTQ3LjE0N0w1MTUuNDI4IDE0Ny4xNDdMNTE1LjU1NCAxNDcuMTQ3TDUxNS44MjYgMTQ3LjE0OUM1MTYuMDE2IDE0Ny4xNTEgNTE2LjIyNSAxNDcuMTUzIDUxNi40NTEgMTQ3LjE1N0M1MTYuOTA0IDE0Ny4xNjQgNTE3LjQyOCAxNDcuMTc2IDUxOC4wMiAxNDcuMTk1QzUxOS4yMDEgMTQ3LjIzNCA1MjAuNjYgMTQ3LjMwNCA1MjIuMzYxIDE0Ny40MjRDNTI1Ljc0MSAxNDcuNjYzIDUzMC4xODUgMTQ4LjExNCA1MzUuMzYzIDE0OC45NjlDNTQ1LjAwMSAxNTAuNTYyIDU1OC41NTYgMTUzLjc4IDU3Mi45MTggMTYwLjYwM0w3MzAuNDIgMjI2LjY3MUw3MzIuMTAxIDIyNy41MDVDNzcxLjc4NyAyNDcuMTc3IDc4OS45OTMgMjg2LjI5NiA3ODkuOTkzIDMyMi4wMzZWNTg1Ljg2NUM3ODkuOTkzIDU4Ni4wNTQgNzg5Ljk5NCA1ODYuMjU0IDc4OS45OTQgNTg2LjQ2M0w3ODkuOTk2IDU4Ni45MTNDNzkwLjAzOCA1OTcuMDk2IDc5MC4xNjEgNjI2Ljk5NiA3NjQuMjMxIDY1Mi44MjNMNzE0Ljc2IDcwMi4wOTVMNzE0LjY0MSA3MDIuMjE1QzcwNC42MDEgNzEyLjI3NSA2OTIuMTIzIDcyMC42NTIgNjc2LjI4NCA3MjQuODc5QzY2NC4zOSA3MjguMDU0IDY1Mi44MjcgNzI3Ljk2NiA2NDguNjM3IDcyNy45MzRMNjQ4LjYxOSA3MjcuOTMzQzY0OC40MDkgNzI3LjkzMiA2NDguMjE5IDcyNy45MyA2NDguMDQ3IDcyNy45M0w2NDcuNzUyIDcyNy45MjlINDgwLjcyMUM0NzQuMDk0IDcyNy45MjkgNDY4LjcyMSA3MjIuNTU2IDQ2OC43MjEgNzE1LjkyOVY2NjguMzg4SDMyOC41ODZDMzI4LjU4NiA2NzIuNjI5IDMyOC41NzIgNjk4LjA1MiAzMjguNTYxIDcxNS45NDRDMzI4LjU1NyA3MjIuNTY5IDMyMy4xODYgNzI3LjkyOSAzMTYuNTYxIDcyNy45MjlIMTUyLjI0NkMxNTIuMTA0IDcyNy45MjkgMTUxLjk0MiA3MjcuOTI5IDE1MS43NjIgNzI3LjkzMUwxNTEuMzYyIDcyNy45MzRDMTQ3LjE3MiA3MjcuOTY2IDEzNS42MDkgNzI4LjA1NCAxMjMuNzE0IDcyNC44NzlDMTA3Ljg3MyA3MjAuNjUxIDk1LjM5MzggNzEyLjI3MiA4NS4zNTI5IDcwMi4yMUw4NS4yMzg2IDcwMi4wOTVMMzUuNjcgNjUyLjcyNUwzNS41NzIzIDY1Mi42MjdDOS44NjI0MiA2MjYuNzggOS45NjY3IDU5Ny4xODUgMTAuMDAzIDU4Ni44NzRDMTAuMDA0MyA1ODYuNTEzIDEwLjAwNTUgNTg2LjE3NyAxMC4wMDU1IDU4NS44NjVWMzIyLjAzNkMxMC4wMDU1IDI4Ni40MyAyOC4xNjYyIDI0Ny4xOTkgNjcuODk3NyAyMjcuNTA1TDY5LjU3OSAyMjYuNjcxTDIyNy4wODEgMTYwLjYwM0MyNDEuNDQzIDE1My43OCAyNTQuOTk4IDE1MC41NjIgMjY0LjYzNiAxNDguOTY5QzI2OS44MTQgMTQ4LjExNCAyNzQuMjU4IDE0Ny42NjMgMjc3LjYzOCAxNDcuNDI0QzI3OS4zMzggMTQ3LjMwNCAyODAuNzk4IDE0Ny4yMzQgMjgxLjk3OSAxNDcuMTk1QzI4Mi41NzEgMTQ3LjE3NiAyODMuMDk1IDE0Ny4xNjQgMjgzLjU0NyAxNDcuMTU3TDI4My45MTcgMTQ3LjE1MkwyODQuMTczIDE0Ny4xNDlMMjg0LjQ0NSAxNDcuMTQ3TDI4NC41NzEgMTQ3LjE0N0wyODQuNjYgMTQ3LjE0N0wzMDYuOTQyIDE0Ny4xNDdWOTMuODE2NEMzMDYuOTQyIDgwLjY2MyAzMTcuNjA1IDcwIDMzMC43NTggNzBINDY5LjIzNloiIGZpbGw9IiMxOTFBMUEiLz4KPHBhdGggZD0iTTM2Ni40ODMgMTI5LjU0SDQzMy41MTJWMjA2LjY4N0gzNjYuNDgzVjEyOS41NFoiIGZpbGw9IiNGQkNCNEEiLz4KPHBhdGggZD0iTTI2OS4wMSA2MDIuNDI5SDE0NC4wMDhDMTM1Ljc2OCA2MDIuNDI5IDEzNS43NjggNTk0LjE0NiAxMzUuNzY4IDU5NC4xNDZWMjgwLjg1QzEzNS43NjggMjgwLjg1IDEzNS43NjggMjcyLjY0NCAxNDQuMDA4IDI3Mi42NDRIMzY2LjQ4M0wzNjYuNDgzIDIwNi42ODdIMjg0LjY5QzI4NC42OSAyMDYuNjg3IDI2OC4xMzQgMjA2LjY4NyAyNTEuNTc5IDIxNC44OTNMOTQuMzQxNCAyODAuODVDNzcuNzg2MSAyODkuMDU3IDY5LjU0NjkgMzA1LjYyMyA2OS41NDY5IDMyMi4wMzVWNTg1Ljg2M0M2OS41NDY5IDU5NC4xNDcgNjkuNTQ2OSA2MDIuMzUzIDc3Ljc4NjEgNjEwLjYzNkwxMjcuNDUyIDY2MC4xMDRDMTM1LjY5MSA2NjguMzg3IDE0MS45MjggNjY4LjM4NyAxNTIuMjQ3IDY2OC4zODdIMjY5LjAyOUMyNjkuMDM3IDY0OC4zNCAyNjkuMDQ2IDYyNC42NTUgMjY5LjA1NCA2MDIuODg3SDUyOC4wMTNWNjY4LjM4N0g2NDcuNzUzQzY1OC4wNzEgNjY4LjM4NyA2NjQuMzA4IDY2OC4zODcgNjcyLjU0NyA2NjAuMTA0TDcyMi4yMTMgNjEwLjYzNkM3MzAuNDUzIDYwMi40MjkgNzMwLjQ1MyA1OTQuMTQ3IDczMC40NTMgNTg1Ljg2M1YzMjIuMDM1QzczMC40NTMgMzA1LjU0NiA3MjIuMjEzIDI4OS4wNTcgNzA1LjY1OCAyODAuODVMNTQ4LjQyMSAyMTQuODkzQzUzMS44NjUgMjA2LjY4NyA1MTUuMzEgMjA2LjY4NyA1MTUuMzEgMjA2LjY4N0g0MzMuNTEyTDQzMy41MTIgMjcyLjY0NEg2NTYuMDY5QzY2NC4zMDggMjcyLjY0NCA2NjQuMzA4IDI4MC44NSA2NjQuMzA4IDI4MC44NVY1OTQuMTQ2QzY2NC4zMDggNTk0LjE0NiA2NjQuMzA4IDYwMi40MjkgNjU2LjA2OSA2MDIuNDI5SDUyOC4yNjJWNTM3LjM5NkgyNjkuMDc1QzI2OS4wNzUgNTQzLjcwNyAyNjkuMDE3IDU5Ni45MTIgMjY5LjAxIDYwMi40MjlaIiBmaWxsPSIjRkJDQjRBIi8+CjxwYXRoIGQ9Ik0yNjkuMDA5IDQzNi4xNzJINTI4LjI2MlYzNzAuNjgxSDI2OS4wNzVDMjY5LjA3NSAzNzcuMzczIDI2OS4wMDkgNDM2Ljc4OCAyNjkuMDA5IDQzNi4xNzJaIiBmaWxsPSIjRkJDQjRBIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZF81MTEyXzc4MiIgeD0iLTQiIHk9IjAiIHdpZHRoPSI4MDgiIGhlaWdodD0iODA4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQgZHk9IjQiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMiIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJvdXQiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjUgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd181MTEyXzc4MiIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd181MTEyXzc4MiIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPC9kZWZzPgo8L3N2Zz4K\";\n","function releaseStub() {}\n\n/**\n * A simple mutual exclusion lock. It allows you to obtain and release a lock,\n * ensuring that only one task can access a critical section at a time.\n */\nexport class Mutex {\n private m_lastPromise: Promise<void> = Promise.resolve();\n\n /**\n * Acquire lock\n * @param [bypass=false] option to skip lock acquisition\n */\n public async obtain(bypass = false): Promise<() => void> {\n let release = releaseStub;\n if (bypass) return release;\n const lastPromise = this.m_lastPromise;\n this.m_lastPromise = new Promise<void>((resolve) => (release = resolve));\n await lastPromise;\n return release;\n }\n}\n","import { WalletAccount } from \"starknet\";\nimport {\n AddInvokeTransactionParameters,\n AddStarknetChainParameters,\n Errors,\n Permission,\n RequestAccountsParameters,\n RequestFn,\n StarknetWindowObject,\n SwitchStarknetChainParameters,\n TypedData,\n WalletEventHandlers,\n WalletEventListener,\n WalletEvents,\n} from \"@starknet-io/types-js\";\nimport manifest from \"../package.json\";\n\nimport { icon } from \"./icon\";\nimport { Mutex } from \"./mutex\";\n\nconst mutex = new Mutex();\n\nexport default abstract class BaseProvider implements StarknetWindowObject {\n public id = \"controller\";\n public name = \"Controller\";\n public version = manifest.version;\n public icon = icon;\n\n public account?: WalletAccount;\n public subscriptions: WalletEvents[] = [];\n\n private _probePromise: Promise<WalletAccount | undefined> | null = null;\n\n protected async safeProbe(): Promise<WalletAccount | undefined> {\n // If we already have an account, return it\n if (this.account) {\n return this.account;\n }\n\n // If we're already probing, wait for the existing probe\n if (this._probePromise) {\n return this._probePromise;\n }\n\n const release = await mutex.obtain();\n return await new Promise<WalletAccount | undefined>(async (resolve) => {\n try {\n this._probePromise = this.probe();\n const result = await this._probePromise;\n resolve(result);\n } finally {\n this._probePromise = null;\n }\n }).finally(() => {\n release();\n });\n }\n\n request: RequestFn = async (call) => {\n switch (call.type) {\n case \"wallet_getPermissions\":\n await this.safeProbe();\n\n if (this.account) {\n return [Permission.ACCOUNTS];\n }\n\n return [];\n\n case \"wallet_requestAccounts\": {\n if (this.account) {\n return [this.account.address];\n }\n\n const silentMode =\n call.params && (call.params as RequestAccountsParameters).silent_mode;\n\n this.account = await this.safeProbe();\n\n if (!this.account && !silentMode) {\n this.account = await this.connect();\n }\n\n if (this.account) {\n return [this.account.address];\n }\n\n return [];\n }\n\n case \"wallet_watchAsset\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_watchAsset not implemented\",\n } as Errors.UNEXPECTED_ERROR;\n\n case \"wallet_addStarknetChain\": {\n let params = call.params as AddStarknetChainParameters;\n return this.addStarknetChain(params);\n }\n\n case \"wallet_switchStarknetChain\": {\n let params = call.params as SwitchStarknetChainParameters;\n return this.switchStarknetChain(params.chainId);\n }\n\n case \"wallet_requestChainId\":\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as Errors.UNEXPECTED_ERROR;\n }\n\n return await this.account.getChainId();\n\n case \"wallet_deploymentData\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_deploymentData not implemented\",\n } as Errors.UNEXPECTED_ERROR;\n\n case \"wallet_addInvokeTransaction\":\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as Errors.UNEXPECTED_ERROR;\n }\n\n let params = call.params as AddInvokeTransactionParameters;\n return await this.account.execute(\n params.calls.map((call) => ({\n contractAddress: call.contract_address,\n entrypoint: call.entry_point,\n calldata: call.calldata,\n })),\n );\n\n case \"wallet_addDeclareTransaction\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_addDeclareTransaction not implemented\",\n } as Errors.UNEXPECTED_ERROR;\n\n case \"wallet_signTypedData\": {\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as Errors.UNEXPECTED_ERROR;\n }\n\n return await this.account.signMessage(call.params as TypedData);\n }\n\n case \"wallet_supportedSpecs\":\n return [];\n case \"wallet_supportedWalletApi\":\n return [];\n default:\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: `Unknown RPC call type: ${call.type}`,\n } as Errors.UNEXPECTED_ERROR;\n }\n };\n\n on: WalletEventListener = <E extends keyof WalletEventHandlers>(\n event: E,\n handler: WalletEventHandlers[E],\n ): void => {\n if (event !== \"accountsChanged\" && event !== \"networkChanged\") {\n throw new Error(`Unknown event: ${event}`);\n }\n this.subscriptions.push({ type: event, handler } as WalletEvents);\n };\n\n off: WalletEventListener = <E extends keyof WalletEventHandlers>(\n event: E,\n handler: WalletEventHandlers[E],\n ): void => {\n if (event !== \"accountsChanged\" && event !== \"networkChanged\") {\n throw new Error(`Unknown event: ${event}`);\n }\n const idx = this.subscriptions.findIndex(\n (sub) => sub.type === event && sub.handler === handler,\n );\n if (idx >= 0) {\n this.subscriptions.splice(idx, 1);\n }\n };\n\n protected emitNetworkChanged(chainId: string) {\n this.subscriptions\n .filter((sub) => sub.type === \"networkChanged\")\n .forEach((sub) => {\n (sub.handler as WalletEventHandlers[\"networkChanged\"])(chainId);\n });\n }\n\n protected emitAccountsChanged(accounts: string[]) {\n this.subscriptions\n .filter((sub) => sub.type === \"accountsChanged\")\n .forEach((sub) => {\n (sub.handler as WalletEventHandlers[\"accountsChanged\"])(accounts);\n });\n }\n\n abstract probe(): Promise<WalletAccount | undefined>;\n abstract connect(): Promise<WalletAccount | undefined>;\n abstract switchStarknetChain(chainId: string): Promise<boolean>;\n abstract addStarknetChain(\n chain: AddStarknetChainParameters,\n ): Promise<boolean>;\n}\n"],"names":["ResponseCodes","FeeSource","ALLOWED_PROPERTIES","LOCAL_HOSTNAMES","validatePropertyName","prop","safeObjectAccess","obj","normalizeCalls","calls","toArray","call","addAddressPadding","CallData","toSessionPolicies","policies","prev","p","target","getChecksumAddress","entrypoint","contracts","item","humanizeString","methods","toWasmPolicies","m","domainHash","typedData","TypedDataRevision","typeHash","hash","val","str","c","parseChainId","url","parts","constants","projectName","shortString","Provider","KEYCHAIN_URL","PROFILE_URL","API_URL","NotReadyToConnect","Permission","icon","releaseStub","Mutex","bypass","release","lastPromise","resolve","mutex","BaseProvider","manifest","result","silentMode","params","event","handler","idx","sub","chainId","accounts"],"mappings":"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","x_google_ignoreList":[4]}
|
|
@@ -6,7 +6,7 @@ export * from '../errors';
|
|
|
6
6
|
export * from '../types';
|
|
7
7
|
export default class SessionAccount extends WalletAccount {
|
|
8
8
|
controller: CartridgeSessionAccount;
|
|
9
|
-
constructor(provider: BaseProvider, { rpcUrl, privateKey, address, ownerGuid, chainId, expiresAt, policies, }: {
|
|
9
|
+
constructor(provider: BaseProvider, { rpcUrl, privateKey, address, ownerGuid, chainId, expiresAt, policies, guardianKeyGuid, metadataHash, sessionKeyGuid, }: {
|
|
10
10
|
rpcUrl: string;
|
|
11
11
|
privateKey: string;
|
|
12
12
|
address: string;
|
|
@@ -14,6 +14,9 @@ export default class SessionAccount extends WalletAccount {
|
|
|
14
14
|
chainId: string;
|
|
15
15
|
expiresAt: number;
|
|
16
16
|
policies: Policy[];
|
|
17
|
+
guardianKeyGuid: string;
|
|
18
|
+
metadataHash: string;
|
|
19
|
+
sessionKeyGuid: string;
|
|
17
20
|
});
|
|
18
21
|
/**
|
|
19
22
|
* Invoke execute function in account contract
|
package/dist/session.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { WalletAccount as N, stark as F, ec as T } from "starknet";
|
|
2
2
|
import * as C from "../../account-wasm/pkg-session/account_wasm_bg.wasm";
|
|
3
|
-
import { n as J, B as z, K
|
|
4
|
-
import { F as Y, N as X, R as Z } from "./provider-
|
|
5
|
-
let
|
|
6
|
-
function
|
|
7
|
-
|
|
3
|
+
import { n as J, B as z, K, b as E } from "./provider-LFJfEvkl.js";
|
|
4
|
+
import { F as Y, N as X, R as Z } from "./provider-LFJfEvkl.js";
|
|
5
|
+
let a;
|
|
6
|
+
function j(n) {
|
|
7
|
+
a = n;
|
|
8
8
|
}
|
|
9
9
|
const g = new Array(128).fill(void 0);
|
|
10
10
|
g.push(void 0, null, !0, !1);
|
|
11
|
-
function
|
|
11
|
+
function D(n) {
|
|
12
12
|
return g[n];
|
|
13
13
|
}
|
|
14
|
-
let _ = 0,
|
|
14
|
+
let _ = 0, b = null;
|
|
15
15
|
function O() {
|
|
16
|
-
return (
|
|
16
|
+
return (b === null || b.byteLength === 0) && (b = new Uint8Array(a.memory.buffer)), b;
|
|
17
17
|
}
|
|
18
18
|
const M = typeof TextEncoder > "u" ? (0, module.require)("util").TextEncoder : TextEncoder;
|
|
19
|
-
let
|
|
20
|
-
const P = typeof
|
|
21
|
-
return
|
|
19
|
+
let x = new M("utf-8");
|
|
20
|
+
const P = typeof x.encodeInto == "function" ? function(n, e) {
|
|
21
|
+
return x.encodeInto(n, e);
|
|
22
22
|
} : function(n, e) {
|
|
23
|
-
const r =
|
|
23
|
+
const r = x.encode(n);
|
|
24
24
|
return e.set(r), {
|
|
25
25
|
read: n.length,
|
|
26
26
|
written: r.length
|
|
@@ -28,16 +28,16 @@ const P = typeof b.encodeInto == "function" ? function(n, e) {
|
|
|
28
28
|
};
|
|
29
29
|
function k(n, e, r) {
|
|
30
30
|
if (r === void 0) {
|
|
31
|
-
const i =
|
|
31
|
+
const i = x.encode(n), u = e(i.length, 1) >>> 0;
|
|
32
32
|
return O().subarray(u, u + i.length).set(i), _ = i.length, u;
|
|
33
33
|
}
|
|
34
34
|
let t = n.length, s = e(t, 1) >>> 0;
|
|
35
|
-
const
|
|
35
|
+
const c = O();
|
|
36
36
|
let o = 0;
|
|
37
37
|
for (; o < t; o++) {
|
|
38
38
|
const i = n.charCodeAt(o);
|
|
39
39
|
if (i > 127) break;
|
|
40
|
-
|
|
40
|
+
c[s + o] = i;
|
|
41
41
|
}
|
|
42
42
|
if (o !== t) {
|
|
43
43
|
o !== 0 && (n = n.slice(o)), s = r(s, t, t = o + n.length * 3, 1) >>> 0;
|
|
@@ -46,42 +46,42 @@ function k(n, e, r) {
|
|
|
46
46
|
}
|
|
47
47
|
return _ = o, s;
|
|
48
48
|
}
|
|
49
|
-
let
|
|
50
|
-
function
|
|
51
|
-
return (
|
|
49
|
+
let f = null;
|
|
50
|
+
function h() {
|
|
51
|
+
return (f === null || f.buffer.detached === !0 || f.buffer.detached === void 0 && f.buffer !== a.memory.buffer) && (f = new DataView(a.memory.buffer)), f;
|
|
52
52
|
}
|
|
53
53
|
const V = typeof TextDecoder > "u" ? (0, module.require)("util").TextDecoder : TextDecoder;
|
|
54
54
|
let $ = new V("utf-8", { ignoreBOM: !0, fatal: !0 });
|
|
55
55
|
$.decode();
|
|
56
|
-
let
|
|
56
|
+
let y = g.length;
|
|
57
57
|
function l(n) {
|
|
58
|
-
|
|
59
|
-
const e =
|
|
60
|
-
return
|
|
58
|
+
y === g.length && g.push(g.length + 1);
|
|
59
|
+
const e = y;
|
|
60
|
+
return y = g[e], g[e] = n, e;
|
|
61
61
|
}
|
|
62
|
-
function
|
|
63
|
-
n < 132 || (g[n] =
|
|
62
|
+
function G(n) {
|
|
63
|
+
n < 132 || (g[n] = y, y = n);
|
|
64
64
|
}
|
|
65
|
-
function
|
|
66
|
-
const e =
|
|
67
|
-
return
|
|
65
|
+
function w(n) {
|
|
66
|
+
const e = D(n);
|
|
67
|
+
return G(n), e;
|
|
68
68
|
}
|
|
69
69
|
typeof FinalizationRegistry > "u" || new FinalizationRegistry((n) => {
|
|
70
|
-
|
|
70
|
+
a.__wbindgen_export_4.get(n.dtor)(n.a, n.b);
|
|
71
71
|
});
|
|
72
|
-
function
|
|
73
|
-
const r = e(n.length * 4, 4) >>> 0, t =
|
|
72
|
+
function v(n, e) {
|
|
73
|
+
const r = e(n.length * 4, 4) >>> 0, t = h();
|
|
74
74
|
for (let s = 0; s < n.length; s++)
|
|
75
75
|
t.setUint32(r + 4 * s, l(n[s]), !0);
|
|
76
76
|
return _ = n.length, r;
|
|
77
77
|
}
|
|
78
78
|
const R = typeof FinalizationRegistry > "u" ? { register: () => {
|
|
79
79
|
}, unregister: () => {
|
|
80
|
-
} } : new FinalizationRegistry((n) =>
|
|
81
|
-
class
|
|
80
|
+
} } : new FinalizationRegistry((n) => a.__wbg_cartridgesessionaccount_free(n >>> 0, 1));
|
|
81
|
+
class S {
|
|
82
82
|
static __wrap(e) {
|
|
83
83
|
e = e >>> 0;
|
|
84
|
-
const r = Object.create(
|
|
84
|
+
const r = Object.create(S.prototype);
|
|
85
85
|
return r.__wbg_ptr = e, R.register(r, r.__wbg_ptr, r), r;
|
|
86
86
|
}
|
|
87
87
|
__destroy_into_raw() {
|
|
@@ -90,7 +90,7 @@ class w {
|
|
|
90
90
|
}
|
|
91
91
|
free() {
|
|
92
92
|
const e = this.__destroy_into_raw();
|
|
93
|
-
|
|
93
|
+
a.__wbg_cartridgesessionaccount_free(e, 0);
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* @param {string} rpc_url
|
|
@@ -101,16 +101,16 @@ class w {
|
|
|
101
101
|
* @param {Session} session
|
|
102
102
|
* @returns {CartridgeSessionAccount}
|
|
103
103
|
*/
|
|
104
|
-
static new(e, r, t, s,
|
|
104
|
+
static new(e, r, t, s, c, o) {
|
|
105
105
|
try {
|
|
106
|
-
const d =
|
|
107
|
-
|
|
108
|
-
var i =
|
|
109
|
-
if (
|
|
110
|
-
throw
|
|
111
|
-
return
|
|
106
|
+
const d = a.__wbindgen_add_to_stack_pointer(-16), m = k(e, a.__wbindgen_export_0, a.__wbindgen_export_1), I = _, U = v(c, a.__wbindgen_export_0), A = _;
|
|
107
|
+
a.cartridgesessionaccount_new(d, m, I, l(r), l(t), l(s), U, A, l(o));
|
|
108
|
+
var i = h().getInt32(d + 4 * 0, !0), u = h().getInt32(d + 4 * 1, !0), p = h().getInt32(d + 4 * 2, !0);
|
|
109
|
+
if (p)
|
|
110
|
+
throw w(u);
|
|
111
|
+
return S.__wrap(i);
|
|
112
112
|
} finally {
|
|
113
|
-
|
|
113
|
+
a.__wbindgen_add_to_stack_pointer(16);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
@@ -122,16 +122,16 @@ class w {
|
|
|
122
122
|
* @param {Session} session
|
|
123
123
|
* @returns {CartridgeSessionAccount}
|
|
124
124
|
*/
|
|
125
|
-
static newAsRegistered(e, r, t, s,
|
|
125
|
+
static newAsRegistered(e, r, t, s, c, o) {
|
|
126
126
|
try {
|
|
127
|
-
const d =
|
|
128
|
-
|
|
129
|
-
var i =
|
|
130
|
-
if (
|
|
131
|
-
throw
|
|
132
|
-
return
|
|
127
|
+
const d = a.__wbindgen_add_to_stack_pointer(-16), m = k(e, a.__wbindgen_export_0, a.__wbindgen_export_1), I = _;
|
|
128
|
+
a.cartridgesessionaccount_newAsRegistered(d, m, I, l(r), l(t), l(s), l(c), l(o));
|
|
129
|
+
var i = h().getInt32(d + 4 * 0, !0), u = h().getInt32(d + 4 * 1, !0), p = h().getInt32(d + 4 * 2, !0);
|
|
130
|
+
if (p)
|
|
131
|
+
throw w(u);
|
|
132
|
+
return S.__wrap(i);
|
|
133
133
|
} finally {
|
|
134
|
-
|
|
134
|
+
a.__wbindgen_add_to_stack_pointer(16);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
@@ -140,48 +140,54 @@ class w {
|
|
|
140
140
|
* @returns {Promise<Felts>}
|
|
141
141
|
*/
|
|
142
142
|
sign(e, r) {
|
|
143
|
-
const t =
|
|
144
|
-
return
|
|
143
|
+
const t = v(r, a.__wbindgen_export_0), s = _, c = a.cartridgesessionaccount_sign(this.__wbg_ptr, l(e), t, s);
|
|
144
|
+
return w(c);
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
147
147
|
* @param {JsCall[]} calls
|
|
148
148
|
* @returns {Promise<any>}
|
|
149
149
|
*/
|
|
150
150
|
execute(e) {
|
|
151
|
-
const r =
|
|
152
|
-
return
|
|
151
|
+
const r = v(e, a.__wbindgen_export_0), t = _, s = a.cartridgesessionaccount_execute(this.__wbg_ptr, r, t);
|
|
152
|
+
return w(s);
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
155
155
|
* @param {JsCall[]} calls
|
|
156
156
|
* @returns {Promise<any>}
|
|
157
157
|
*/
|
|
158
158
|
executeFromOutside(e) {
|
|
159
|
-
const r =
|
|
160
|
-
return
|
|
159
|
+
const r = v(e, a.__wbindgen_export_0), t = _, s = a.cartridgesessionaccount_executeFromOutside(this.__wbg_ptr, r, t);
|
|
160
|
+
return w(s);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
typeof FinalizationRegistry > "u" || new FinalizationRegistry((n) =>
|
|
164
|
-
|
|
165
|
-
class
|
|
163
|
+
typeof FinalizationRegistry > "u" || new FinalizationRegistry((n) => a.__wbg_jscontrollererror_free(n >>> 0, 1));
|
|
164
|
+
j(C);
|
|
165
|
+
class W extends N {
|
|
166
166
|
controller;
|
|
167
167
|
constructor(e, {
|
|
168
168
|
rpcUrl: r,
|
|
169
169
|
privateKey: t,
|
|
170
170
|
address: s,
|
|
171
|
-
ownerGuid:
|
|
171
|
+
ownerGuid: c,
|
|
172
172
|
chainId: o,
|
|
173
173
|
expiresAt: i,
|
|
174
|
-
policies: u
|
|
174
|
+
policies: u,
|
|
175
|
+
guardianKeyGuid: p,
|
|
176
|
+
metadataHash: d,
|
|
177
|
+
sessionKeyGuid: m
|
|
175
178
|
}) {
|
|
176
|
-
super({ nodeUrl: r }, e), this.address = s, this.controller =
|
|
179
|
+
super({ nodeUrl: r }, e), this.address = s, this.controller = S.newAsRegistered(
|
|
177
180
|
r,
|
|
178
181
|
t,
|
|
179
182
|
s,
|
|
180
|
-
|
|
183
|
+
c,
|
|
181
184
|
o,
|
|
182
185
|
{
|
|
183
186
|
expiresAt: i,
|
|
184
|
-
policies: u
|
|
187
|
+
policies: u,
|
|
188
|
+
guardianKeyGuid: p,
|
|
189
|
+
metadataHash: d,
|
|
190
|
+
sessionKeyGuid: m
|
|
185
191
|
}
|
|
186
192
|
);
|
|
187
193
|
}
|
|
@@ -201,7 +207,7 @@ class L extends N {
|
|
|
201
207
|
return this.controller.execute(J(e));
|
|
202
208
|
}
|
|
203
209
|
}
|
|
204
|
-
class
|
|
210
|
+
class Q extends z {
|
|
205
211
|
id = "controller_session";
|
|
206
212
|
name = "Controller Session";
|
|
207
213
|
_chainId;
|
|
@@ -215,7 +221,7 @@ class B extends z {
|
|
|
215
221
|
chainId: r,
|
|
216
222
|
policies: t,
|
|
217
223
|
redirectUrl: s,
|
|
218
|
-
keychainUrl:
|
|
224
|
+
keychainUrl: c
|
|
219
225
|
}) {
|
|
220
226
|
super(), this._policies = {
|
|
221
227
|
verified: !1,
|
|
@@ -235,16 +241,16 @@ class B extends z {
|
|
|
235
241
|
...o,
|
|
236
242
|
authorized: !0
|
|
237
243
|
}))
|
|
238
|
-
}, this._rpcUrl = e, this._chainId = r, this._redirectUrl = s, this._keychainUrl =
|
|
244
|
+
}, this._rpcUrl = e, this._chainId = r, this._redirectUrl = s, this._keychainUrl = c || K, typeof window < "u" && (window.starknet_controller_session = this);
|
|
239
245
|
}
|
|
240
246
|
validatePoliciesSubset(e, r) {
|
|
241
247
|
if (e.contracts) {
|
|
242
248
|
if (!r.contracts) return !1;
|
|
243
249
|
for (const [t, s] of Object.entries(e.contracts)) {
|
|
244
|
-
const
|
|
245
|
-
if (!
|
|
250
|
+
const c = r.contracts[t];
|
|
251
|
+
if (!c) return !1;
|
|
246
252
|
for (const o of s.methods) {
|
|
247
|
-
const i =
|
|
253
|
+
const i = c.methods.find(
|
|
248
254
|
(u) => u.entrypoint === o.entrypoint
|
|
249
255
|
);
|
|
250
256
|
if (!i || !i.authorized) return !1;
|
|
@@ -255,7 +261,7 @@ class B extends z {
|
|
|
255
261
|
if (!r.messages) return !1;
|
|
256
262
|
for (const t of e.messages) {
|
|
257
263
|
const s = r.messages.find(
|
|
258
|
-
(
|
|
264
|
+
(c) => JSON.stringify(c.domain) === JSON.stringify(t.domain) && JSON.stringify(c.types) === JSON.stringify(t.types)
|
|
259
265
|
);
|
|
260
266
|
if (!s || !s.authorized) return !1;
|
|
261
267
|
}
|
|
@@ -319,10 +325,10 @@ class B extends z {
|
|
|
319
325
|
this.clearStoredSession();
|
|
320
326
|
return;
|
|
321
327
|
}
|
|
322
|
-
const
|
|
323
|
-
if (
|
|
328
|
+
const c = localStorage.getItem("sessionPolicies");
|
|
329
|
+
if (c) {
|
|
324
330
|
const o = JSON.parse(
|
|
325
|
-
|
|
331
|
+
c
|
|
326
332
|
);
|
|
327
333
|
if (!this.validatePoliciesSubset(
|
|
328
334
|
this._policies,
|
|
@@ -332,14 +338,17 @@ class B extends z {
|
|
|
332
338
|
return;
|
|
333
339
|
}
|
|
334
340
|
}
|
|
335
|
-
return this._username = t.username, this.account = new
|
|
341
|
+
return this._username = t.username, this.account = new W(this, {
|
|
336
342
|
rpcUrl: this._rpcUrl,
|
|
337
343
|
privateKey: r.privKey,
|
|
338
344
|
address: t.address,
|
|
339
345
|
ownerGuid: t.ownerGuid,
|
|
340
346
|
chainId: this._chainId,
|
|
341
347
|
expiresAt: parseInt(t.expiresAt),
|
|
342
|
-
policies:
|
|
348
|
+
policies: E(this._policies),
|
|
349
|
+
guardianKeyGuid: t.guardianKeyGuid,
|
|
350
|
+
metadataHash: t.metadataHash,
|
|
351
|
+
sessionKeyGuid: t.sessionKeyGuid
|
|
343
352
|
}), this.account;
|
|
344
353
|
}
|
|
345
354
|
clearStoredSession() {
|
|
@@ -350,6 +359,6 @@ export {
|
|
|
350
359
|
Y as FeeSource,
|
|
351
360
|
X as NotReadyToConnect,
|
|
352
361
|
Z as ResponseCodes,
|
|
353
|
-
|
|
362
|
+
Q as default
|
|
354
363
|
};
|
|
355
364
|
//# sourceMappingURL=session.js.map
|