UNPKG

@fastnear/wallet-adapter-widget

Version:

User interfaces for select NEAR Protocol web3 wallets

1 lines 4.82 kB
{"version":3,"sources":["../../../src/adapters/meteor.ts"],"sourcesContent":["// @todo low-priority: i thought we were using meer-api-js and @meer-js/ packages\n// seems to be working fine. will likely compile down better and might mean the tsup config\n// can be simplified in terms of which modules it thinks is external and stuff, anyway.\nimport { connect, KeyPair } from \"near-api-js\";\nimport { EMeteorWalletSignInType, MeteorWallet } from \"@fastnear/meteorwallet-sdk\";\nimport { mapActionForWalletSelector } from \"../utils/actionToWalletSelector.js\";\nimport { PublicKey } from \"@near-js/crypto\";\nimport { keyStores } from \"near-api-js\";\n\nasync function createMeteorWalletInstance({ networkId = \"mainnet\" }): Promise<MeteorWallet> {\n const keyStore = new keyStores.BrowserLocalStorageKeyStore(\n window.localStorage,\n \"_meteor_wallet\"\n );\n\n const near = await connect({\n keyStore,\n networkId,\n nodeUrl: networkId === \"mainnet\"\n ? \"https://rpc.mainnet.near.org\"\n : \"https://rpc.testnet.near.org\",\n });\n\n return new MeteorWallet({ near, appKeyPrefix: \"near_app\" });\n}\n\nexport function createMeteorAdapter() {\n return {\n async signIn({ networkId, contractId, publicKey }) {\n const parsedPublicKey = PublicKey.from(publicKey);\n const keyPair = KeyPair.fromString(parsedPublicKey.toString());\n const wallet = await createMeteorWalletInstance({ networkId });\n\n const response = await wallet.requestSignIn({\n contract_id: contractId,\n type: EMeteorWalletSignInType.ALL_METHODS,\n keyPair,\n });\n\n if (!response?.success || !response.payload?.accountId) {\n throw new Error(\"Meteor Wallet sign-in failed\");\n }\n\n return {\n state: {\n accountId: response.payload.accountId,\n publicKey: parsedPublicKey.toString(),\n networkId,\n },\n };\n },\n\n async sendTransactions({ state, transactions }) {\n if (!state?.accountId) {\n throw new Error(\"Not signed in\");\n }\n\n const wallet = await createMeteorWalletInstance({\n networkId: state.networkId,\n });\n\n try {\n const response = await wallet.requestSignTransactions({\n transactions: transactions.map(({ signerId, receiverId, actions }) => {\n if (signerId && signerId !== state.accountId) {\n throw new Error(\"Invalid signer\");\n }\n return {\n signerId: state.accountId,\n receiverId,\n actions: actions.map(mapActionForWalletSelector),\n };\n }),\n });\n\n return { outcomes: response };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : \"Unknown error\";\n if (\n errorMessage === \"User cancelled the action\" ||\n errorMessage === \"User closed the window before completing the action\"\n ) {\n return { rejected: true };\n }\n console.error(\"Transaction error:\", error);\n throw new Error(errorMessage);\n }\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAiC;AACjC,8BAAsD;AACtD,oCAA2C;AAC3C,oBAA0B;AAC1B,IAAAA,sBAA0B;AAE1B,eAAe,2BAA2B,EAAE,YAAY,UAAU,GAA0B;AAC1F,QAAM,WAAW,IAAI,8BAAU;AAAA,IAC7B,OAAO;AAAA,IACP;AAAA,EACF;AAEA,QAAM,OAAO,UAAM,4BAAQ;AAAA,IACzB;AAAA,IACA;AAAA,IACA,SAAS,cAAc,YACnB,iCACA;AAAA,EACN,CAAC;AAED,SAAO,IAAI,qCAAa,EAAE,MAAM,cAAc,WAAW,CAAC;AAC5D;AAfe;AAiBR,SAAS,sBAAsB;AACpC,SAAO;AAAA,IACL,MAAM,OAAO,EAAE,WAAW,YAAY,UAAU,GAAG;AACjD,YAAM,kBAAkB,wBAAU,KAAK,SAAS;AAChD,YAAM,UAAU,2BAAQ,WAAW,gBAAgB,SAAS,CAAC;AAC7D,YAAM,SAAS,MAAM,2BAA2B,EAAE,UAAU,CAAC;AAE7D,YAAM,WAAW,MAAM,OAAO,cAAc;AAAA,QAC1C,aAAa;AAAA,QACb,MAAM,gDAAwB;AAAA,QAC9B;AAAA,MACF,CAAC;AAED,UAAI,CAAC,UAAU,WAAW,CAAC,SAAS,SAAS,WAAW;AACtD,cAAM,IAAI,MAAM,8BAA8B;AAAA,MAChD;AAEA,aAAO;AAAA,QACL,OAAO;AAAA,UACL,WAAW,SAAS,QAAQ;AAAA,UAC5B,WAAW,gBAAgB,SAAS;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,EAAE,OAAO,aAAa,GAAG;AAC9C,UAAI,CAAC,OAAO,WAAW;AACrB,cAAM,IAAI,MAAM,eAAe;AAAA,MACjC;AAEA,YAAM,SAAS,MAAM,2BAA2B;AAAA,QAC9C,WAAW,MAAM;AAAA,MACnB,CAAC;AAED,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,wBAAwB;AAAA,UACpD,cAAc,aAAa,IAAI,CAAC,EAAE,UAAU,YAAY,QAAQ,MAAM;AACpE,gBAAI,YAAY,aAAa,MAAM,WAAW;AAC5C,oBAAM,IAAI,MAAM,gBAAgB;AAAA,YAClC;AACA,mBAAO;AAAA,cACL,UAAU,MAAM;AAAA,cAChB;AAAA,cACA,SAAS,QAAQ,IAAI,wDAA0B;AAAA,YACjD;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAED,eAAO,EAAE,UAAU,SAAS;AAAA,MAC9B,SAAS,OAAO;AACd,cAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU;AAC9D,YACE,iBAAiB,+BACjB,iBAAiB,uDACjB;AACA,iBAAO,EAAE,UAAU,KAAK;AAAA,QAC1B;AACA,gBAAQ,MAAM,sBAAsB,KAAK;AACzC,cAAM,IAAI,MAAM,YAAY;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;AA/DgB;","names":["import_near_api_js"]}