@seams/wallet 0.21.0 → 0.23.0
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/THIRD_PARTY_NOTICES.md +5 -2
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +107 -43
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +1 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-receipt.js +36 -6
- package/dist/esm/core/ui/messages.js +9 -14
- package/dist/esm/externalNear/actions.js +26 -0
- package/dist/esm/externalNear/boundary.js +53 -0
- package/dist/esm/externalNear/controller.js +187 -0
- package/dist/esm/externalNear/hot.js +40 -0
- package/dist/esm/externalNear/index.js +3 -0
- package/dist/esm/externalNear/intear.js +109 -0
- package/dist/esm/externalNear/intearPopup.js +83 -0
- package/dist/esm/externalNear/meteor.js +121 -0
- package/dist/esm/externalNear/meteorRequest.js +117 -0
- package/dist/esm/externalNear/types.js +17 -0
- package/dist/esm/externalNear/wallets.js +33 -0
- package/dist/esm/node_modules/borsh/lib/esm/buffer.js +67 -0
- package/dist/esm/node_modules/borsh/lib/esm/deserialize.js +94 -0
- package/dist/esm/node_modules/borsh/lib/esm/index.js +13 -0
- package/dist/esm/node_modules/borsh/lib/esm/serialize.js +127 -0
- package/dist/esm/node_modules/borsh/lib/esm/types.js +19 -0
- package/dist/esm/node_modules/borsh/lib/esm/utils.js +104 -0
- package/dist/esm/plugins/plugin-utils.js +2 -5
- package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +23 -9
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +376 -84
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +87 -167
- package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +11 -9
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +76 -74
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +23 -22
- package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +1 -5
- package/dist/esm/react/components/AccountMenuButton/icons/MapPinIcon.js +12 -0
- package/dist/esm/react/components/AccountMenuButton/index.js +2 -1
- package/dist/esm/react/externalNear.css +90 -0
- package/dist/esm/react/externalNear.js +104 -0
- package/dist/esm/react/styles/styles.css +452 -162
- package/dist/{public/sdk/ConfirmationDrawer-B7RCp58z.js → esm/sdk/ConfirmationDrawer-Ck33ZmU-.js} +1 -1
- package/dist/esm/sdk/adapters-CgJpSAxH.js +2 -0
- package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +2 -0
- package/dist/esm/sdk/{export-viewer-host-CVdpEuY6.js → export-viewer-host-C9n-62Pi.js} +1 -1
- package/dist/esm/sdk/{exportKeypairOperation-gVCqLrDl.js → exportKeypairOperation-Du9HKB8f.js} +1 -1
- package/dist/esm/sdk/host-C5KYWEcs.js +1 -0
- package/dist/esm/sdk/{localOnly-TXaYAZj-.js → localOnly-CvFSZFUy.js} +1 -1
- package/dist/esm/sdk/{mountExportPrivateKeySurface-DUnKOBQr.js → mountExportPrivateKeySurface-DdJHWwqY.js} +1 -1
- package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-MGTl6FhG.js → mountRecoveryCodeBackupSurface-D3QFgMGE.js} +1 -1
- package/dist/{public/sdk/pendingWalletRecoveryCodeBackup-DWeemdJv.js → esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js} +1 -1
- package/dist/esm/sdk/{registration-DVX_lnP7.js → registration-CIxJvbTo.js} +1 -1
- package/dist/esm/sdk/{registration-DeCUrUR9.js → registration-CeOmKyCG.js} +1 -1
- package/dist/{public/sdk/runtime-auth-BAGyfscG.js → esm/sdk/runtime-auth-C0V-5znH.js} +1 -1
- package/dist/{public/sdk/runtime-device-link-DKkMLVor.js → esm/sdk/runtime-device-link-B1jpHQSF.js} +1 -1
- package/dist/{public/sdk/runtime-ecdsa-tempo-0TAVH1xg.js → esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js} +1 -1
- package/dist/esm/sdk/{runtime-email-otp-DoHa8Hif.js → runtime-email-otp-DXuxFOjL.js} +1 -1
- package/dist/esm/sdk/{runtime-export-CAt17IFH.js → runtime-export-Ba12ChDI.js} +1 -1
- package/dist/esm/sdk/{runtime-near-BQX9Jk9Z.js → runtime-near-DRrdWzmr.js} +1 -1
- package/dist/esm/sdk/{runtime-preferences-BuKTIpv6.js → runtime-preferences-BWyhRaBA.js} +1 -1
- package/dist/esm/sdk/{runtime-recovery-DyxJKKNw.js → runtime-recovery-DlJlaZlf.js} +1 -1
- package/dist/esm/sdk/{runtime-recovery-codes-CWmt0FDB.js → runtime-recovery-codes-CuqYWqK7.js} +1 -1
- package/dist/esm/sdk/{shared-BVps1f3F.js → shared-B95wnpoD.js} +1 -1
- package/dist/esm/sdk/transaction-activity-CpDMkSPm.js +1 -0
- package/dist/esm/sdk/tx-confirm-ui.js +186 -71
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/{public/sdk/walletRecoveryAdminProof-CIoLawfC.js → esm/sdk/walletRecoveryAdminProof-CtH8_lph.js} +1 -1
- package/dist/public/headers.manifest.json +1 -1
- package/dist/{esm/sdk/ConfirmationDrawer-B7RCp58z.js → public/sdk/ConfirmationDrawer-Ck33ZmU-.js} +1 -1
- package/dist/public/sdk/adapters-CgJpSAxH.js +2 -0
- package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +2 -0
- package/dist/public/sdk/{export-viewer-host-CVdpEuY6.js → export-viewer-host-C9n-62Pi.js} +1 -1
- package/dist/public/sdk/{exportKeypairOperation-gVCqLrDl.js → exportKeypairOperation-Du9HKB8f.js} +1 -1
- package/dist/public/sdk/host-C5KYWEcs.js +1 -0
- package/dist/public/sdk/{localOnly-TXaYAZj-.js → localOnly-CvFSZFUy.js} +1 -1
- package/dist/public/sdk/{mountExportPrivateKeySurface-DUnKOBQr.js → mountExportPrivateKeySurface-DdJHWwqY.js} +1 -1
- package/dist/public/sdk/{mountRecoveryCodeBackupSurface-MGTl6FhG.js → mountRecoveryCodeBackupSurface-D3QFgMGE.js} +1 -1
- package/dist/{esm/sdk/pendingWalletRecoveryCodeBackup-DWeemdJv.js → public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js} +1 -1
- package/dist/public/sdk/{registration-DVX_lnP7.js → registration-CIxJvbTo.js} +1 -1
- package/dist/public/sdk/{registration-DeCUrUR9.js → registration-CeOmKyCG.js} +1 -1
- package/dist/{esm/sdk/runtime-auth-BAGyfscG.js → public/sdk/runtime-auth-C0V-5znH.js} +1 -1
- package/dist/{esm/sdk/runtime-device-link-DKkMLVor.js → public/sdk/runtime-device-link-B1jpHQSF.js} +1 -1
- package/dist/{esm/sdk/runtime-ecdsa-tempo-0TAVH1xg.js → public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js} +1 -1
- package/dist/public/sdk/{runtime-email-otp-DoHa8Hif.js → runtime-email-otp-DXuxFOjL.js} +1 -1
- package/dist/public/sdk/{runtime-export-CAt17IFH.js → runtime-export-Ba12ChDI.js} +1 -1
- package/dist/public/sdk/{runtime-near-BQX9Jk9Z.js → runtime-near-DRrdWzmr.js} +1 -1
- package/dist/public/sdk/{runtime-preferences-BuKTIpv6.js → runtime-preferences-BWyhRaBA.js} +1 -1
- package/dist/public/sdk/{runtime-recovery-DyxJKKNw.js → runtime-recovery-DlJlaZlf.js} +1 -1
- package/dist/public/sdk/{runtime-recovery-codes-CWmt0FDB.js → runtime-recovery-codes-CuqYWqK7.js} +1 -1
- package/dist/public/sdk/{shared-BVps1f3F.js → shared-B95wnpoD.js} +1 -1
- package/dist/public/sdk/transaction-activity-CpDMkSPm.js +1 -0
- package/dist/public/sdk/tx-confirm-ui.js +186 -71
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/{esm/sdk/walletRecoveryAdminProof-CIoLawfC.js → public/sdk/walletRecoveryAdminProof-CtH8_lph.js} +1 -1
- package/dist/public/wallet-assets.manifest.json +50 -51
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/controller.d.ts +2 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-activity.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-receipt.d.ts +25 -6
- package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/actions.d.ts +20 -0
- package/dist/types/wallet/src/externalNear/boundary.d.ts +7 -0
- package/dist/types/wallet/src/externalNear/controller.d.ts +23 -0
- package/dist/types/wallet/src/externalNear/hot.d.ts +13 -0
- package/dist/types/wallet/src/externalNear/index.d.ts +4 -0
- package/dist/types/wallet/src/externalNear/intear.d.ts +12 -0
- package/dist/types/wallet/src/externalNear/intearPopup.d.ts +25 -0
- package/dist/types/wallet/src/externalNear/meteor.d.ts +16 -0
- package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +29 -0
- package/dist/types/wallet/src/externalNear/types.d.ts +67 -0
- package/dist/types/wallet/src/externalNear/wallets.d.ts +4 -0
- package/dist/types/wallet/src/plugins/plugin-utils.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MapPinIcon.d.ts +2 -0
- package/dist/types/wallet/src/react/externalNear.d.ts +26 -0
- package/package.json +18 -1
- package/dist/esm/plugins/SeamsWeb/walletIframe/sanitization.js +0 -18
- package/dist/esm/react/components/AccountMenuButton/SegmentedControl.js +0 -77
- package/dist/esm/sdk/adapters-La60hveX.js +0 -2
- package/dist/esm/sdk/appearance-token-vars-Bu6YUWmf.js +0 -2
- package/dist/esm/sdk/host-Bz7mRJPZ.js +0 -1
- package/dist/esm/sdk/transaction-activity-D5f-Yn9t.js +0 -1
- package/dist/public/sdk/adapters-La60hveX.js +0 -2
- package/dist/public/sdk/appearance-token-vars-Bu6YUWmf.js +0 -2
- package/dist/public/sdk/host-Bz7mRJPZ.js +0 -1
- package/dist/public/sdk/transaction-activity-D5f-Yn9t.js +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/SegmentedControl.d.ts +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
import{nt as e,ot as t}from"./activeWalletSession-BtEHhe99.js";import{r as n}from"./base64-BmKR3UqU.js";import{r,t as i}from"./secureRandomId-8LSc91aN.js";import{o as a}from"./signerSlot-CpyIfl3J.js";import{l as o}from"./wallet-recovery-BEui57xM.js";import{n as s,s as c,t as l,u}from"./helpers-BXezXx19.js";import{i as ee}from"./pendingWalletRecoveryCodeBackup-DWeemdJv.js";import{t as d}from"./walletCustodyOperation-BO_tSfGY.js";import{t as f}from"./webauthnPromptCoordinator-CBkTiMP0.js";import{i as p}from"./collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js";function m(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===5&&n.every(e=>[`ok`,`challengeId`,`challenge_digest`,`expiresAtMs`,`otpChannel`].includes(e))&&t.get(`ok`)===!0)return{kind:`success`,challengeId:t.get(`challengeId`),challengeDigest:t.get(`challenge_digest`),expiresAtMs:t.get(`expiresAtMs`),otpChannel:t.get(`otpChannel`)};let r=[`ok`,`code`,`message`,`retryAfterMs`];if((t.size===3||t.size===4)&&n.every(e=>r.includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`&&typeof t.get(`message`)==`string`&&(t.size===3||typeof t.get(`retryAfterMs`)==`number`)){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function h(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/custody/email-otp/challenge`,body:{walletId:e.walletId,providerSubjectId:e.providerSubjectId,operation:e.operation,payload:e.payload,...e.requestOrigin?{requestOrigin:e.requestOrigin}:{}},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`Email OTP challenge request failed`}}let n=m(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status!==200||n.kind!==`success`)return{kind:t.status>=400&&t.status<500?`rejected`:`transport_failed`,message:r||`Email OTP challenge failed (HTTP ${t.status})`};let i=typeof n.challengeId==`string`?n.challengeId.trim():``,a=typeof n.challengeDigest==`string`?n.challengeDigest.trim():``,o=Number(n.expiresAtMs),s=typeof n.otpChannel==`string`?n.otpChannel.trim():``;return!i||!a||!Number.isSafeInteger(o)||o<=0||!s?{kind:`transport_failed`,message:`Email OTP challenge returned an unusable payload`}:{kind:`ready`,challengeId:i,challenge_digest:a,expiresAtMs:o,otpChannel:s}}function g(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[`ok`,`activeCodeCount`,`totalCodeCount`,`issuedAtMs`,`storeVersion`,`backupOutstanding`],r=[...t.keys()];if(t.size===n.length&&r.every(e=>n.includes(e))&&t.get(`ok`)===!0)return{kind:`success`,activeCodeCount:t.get(`activeCodeCount`),totalCodeCount:t.get(`totalCodeCount`),issuedAtMs:t.get(`issuedAtMs`),storeVersion:t.get(`storeVersion`),backupOutstanding:t.get(`backupOutstanding`)};let i=[`ok`,`code`,`message`];if(t.size===i.length&&r.every(e=>i.includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function _(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/${encodeURIComponent(e.walletId)}/recovery/status`,body:{requestId:e.requestId,factorProof:e.factorProof},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`recovery status request failed`}}let n=g(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===401||t.status===403)return{kind:`unauthorized`,message:r||`recovery status is unauthorized`};if(t.status===404)return{kind:`no_recovery_set`,message:r||`this wallet has no recovery set`};if(t.status!==200)return{kind:`transport_failed`,message:r||`recovery status failed (HTTP ${t.status})`};if(n.kind!==`success`)return{kind:`transport_failed`,message:`recovery status returned an unusable payload`};let i=Number(n.activeCodeCount),a=Number(n.totalCodeCount),o=Number(n.issuedAtMs),s=typeof n.storeVersion==`string`?n.storeVersion.trim():``;return!Number.isSafeInteger(i)||i<0||!Number.isSafeInteger(a)||a<i||!Number.isSafeInteger(o)||o<=0||!s||typeof n.backupOutstanding!=`boolean`?{kind:`transport_failed`,message:`recovery status returned an unusable payload`}:{kind:`ready`,walletId:e.walletId,activeCodeCount:i,totalCodeCount:a,issuedAtMs:o,storeVersion:s,backupOutstanding:n.backupOutstanding,pendingLocalBackup:!1}}function v(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===2&&n.includes(`ok`)&&n.includes(`issuedAtMs`)&&t.get(`ok`)===!0)return{kind:`success`,issuedAtMs:t.get(`issuedAtMs`)};if(t.size===3&&n.includes(`ok`)&&n.includes(`code`)&&n.includes(`message`)&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function y(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/recovery/acknowledge-backup`,body:{walletId:e.walletId,requestId:e.requestId,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:e.factorProof},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`recovery backup acknowledgement failed`}}let n=v(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===401||t.status===403)return{kind:`unauthorized`,message:r||`recovery backup acknowledgement is unauthorized`};if(t.status===404)return{kind:`no_recovery_set`,message:r||`this wallet has no recovery set`};if(t.status===409)return{kind:`conflict`,message:r||`Recovery codes changed. Check status and review the current set.`};if(t.status!==200)return{kind:`transport_failed`,message:r||`recovery backup acknowledgement failed (HTTP ${t.status})`};if(n.kind!==`success`)return{kind:`transport_failed`,message:`recovery backup acknowledgement returned an unusable payload`};let i=Number(n.issuedAtMs);return!Number.isSafeInteger(i)||i<=0?{kind:`transport_failed`,message:`recovery backup acknowledgement returned an unusable payload`}:{kind:`acknowledged`,walletId:e.walletId,issuedAtMs:i}}function b(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===3&&n.every(e=>[`ok`,`issuedAtMs`,`storeVersion`].includes(e))&&t.get(`ok`)===!0)return{kind:`success`,issuedAtMs:t.get(`issuedAtMs`),storeVersion:t.get(`storeVersion`)};if(t.size===3&&n.every(e=>[`ok`,`code`,`message`].includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function x(e){let t=await S({relayUrl:e.relayUrl,path:`/wallets/recovery/rotate`,body:{walletId:e.walletId,expectedStoreVersion:e.expectedStoreVersion,manifestKekWraps:e.replacement.manifestKekWraps,entries:[e.replacement.entry],recoveryCodeLocators:e.recoveryCodeLocators,factorProof:e.factorProof},fetchImpl:e.fetchImpl}),n=b(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===200&&n.kind===`success`){let e=Number(n.issuedAtMs),t=typeof n.storeVersion==`string`?n.storeVersion.trim():``;return!Number.isSafeInteger(e)||e<=0||!t?{kind:`transport_failed`,message:`rotation returned an unusable response`}:{kind:`rotated`,issuedAtMs:e,storeVersion:t}}return t.status===404?{kind:`no_recovery_set`,message:r||`no recovery set`}:t.status===409?{kind:`conflict`,message:r||`recovery set changed`}:t.status===400?{kind:`rejected`,message:r||`rotation rejected`}:{kind:`transport_failed`,message:r||`rotation failed (HTTP ${t.status})`}}async function S(n){let r=`${t(n.relayUrl)}${n.path}`;return await(n.fetchImpl||fetch)(r,e({headers:{Accept:`application/json`},body:n.body}))}var C=class extends Error{code=`wallet_origin_webauthn_unavailable`;constructor(e){super(e),this.name=`WalletOriginWebAuthnUnavailableError`}};async function w(e,t,n){let r=T(e,t);try{return e===`create`?await navigator.credentials.create({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}}):await navigator.credentials.get({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}})}catch(t){throw e===`create`&&(N(t)||P(t))?new C(`Wallet-origin WebAuthn registration is unavailable: ${F(t)}`):t}}function T(e,t){return e===`create`?E(t):D(t)}function E(e){return{...e,challenge:M(e.challenge),user:{...e.user,id:M(e.user.id)},excludeCredentials:e.excludeCredentials?.map(O),extensions:k(e.extensions)}}function D(e){return{...e,challenge:M(e.challenge),allowCredentials:e.allowCredentials?.map(O),extensions:k(e.extensions)}}function O(e){return{...e,id:M(e.id)}}function k(e){if(!e)return e;let t={...e},n=t.prf;if(n&&typeof n==`object`){let e={...n};if(e.eval&&typeof e.eval==`object`&&(e.eval=A(e.eval)),e.evalByCredential&&typeof e.evalByCredential==`object`){let t={};for(let[n,r]of Object.entries(e.evalByCredential))t[n]=r&&typeof r==`object`?A(r):r;e.evalByCredential=t}t.prf=e}return t}function A(e){return{...e,...j(e.first)?{first:M(e.first)}:{},...j(e.second)?{second:M(e.second)}:{}}}function j(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function M(e){if(e instanceof ArrayBuffer)return e.slice(0);let t=e,n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice();if(e instanceof DataView)return new DataView(n.buffer);let r=Object.getPrototypeOf(e).constructor;return new r(n.buffer)}function N(e){let t=F(e);return/origin of the document is not the same as its ancestors/i.test(t)}function P(e){let t=I(e),n=F(e),r=t===`NotAllowedError`,i=/document is not focused|not focused|focus/i.test(n);return!!(r&&i)}function F(e){return String(e?.message||``)}function I(e){let t=e?.name;return typeof t==`string`?t:``}function L(e,t){return(e||t||``).toLowerCase()}function R(e){let t=n(String(e||``));if(t.length!==32)throw Error(`Invalid WebAuthn challenge: expected 32 bytes, got ${t.length}`);return t}function z(e){if(e.kind!==`wallet_registration`)throw Error(`Wallet registration challenge is unavailable`);return e.challengeB64u}function B(e){let t=a(String(e.walletId||``).trim());if(String(e.intendedUserName||``).trim()!==String(t))throw Error(`WebAuthn registration user.name must match walletId`);return{walletId:t}}var V=class{rpIdOverride;abortController;removePageAbortHandlers;removeExternalAbortListener;constructor(e){this.rpIdOverride=e}getRpId(){try{return L(this.rpIdOverride,window?.location?.hostname)}catch{return this.rpIdOverride||``}}getAuthenticationCredentialsSerializedForChallengeB64u(e){let t=`webauthn-get-${i(12,`WebAuthn get request IDs`)}`;return f.runImmediate({owner:{kind:`wallet_request`,requestId:t,operation:`authentication`},operation:this.executeAuthenticationCredential.bind(this,e)})}async executeAuthenticationCredential({subjectId:e,challengeB64u:t,allowCredentials:r=[],includeSecondPrfOutput:i=!1,cancellation:a={kind:`none`}}){this.abortController=new AbortController,this.removePageAbortHandlers=q(this.abortController),this.removeExternalAbortListener=H(this.abortController,a);let o=this.getRpId(),u={challenge:R(t),rpId:o,userVerification:`preferred`,timeout:6e4,extensions:{prf:{eval:{first:l(),second:s()}}}};r.length>0&&(u.allowCredentials=r.map(e=>({id:n(e.id),type:`public-key`,transports:e.transports})));try{let e=c({credential:await w(`get`,u,{abortSignal:this.abortController.signal}),firstPrfOutput:!0,secondPrfOutput:i});return G(e,t),e}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}generateRegistrationCredentialsInternal(e){switch(e.prompt.kind){case`reserved`:return f.runReserved({reservation:e.prompt.reservation,owner:e.prompt.owner,operation:this.executeRegistrationCredential.bind(this,e)});case`immediate`:return f.runImmediate({owner:{kind:`wallet_request`,requestId:e.prompt.requestId,operation:`registration`},operation:this.executeRegistrationCredential.bind(this,e)})}}async executeRegistrationCredential(e){this.abortController=new AbortController,this.removePageAbortHandlers=q(this.abortController),this.removeExternalAbortListener=H(this.abortController,e.prompt.cancellation);let t=this.getRpId(),r=B({walletId:e.walletId,intendedUserName:e.intendedUserName}),i=e.kind===`wallet_recovery`?e.recoveryRegistration:null,a=e.kind===`wallet_add_auth_method`?e.registration:null,o=i??a,c=o?.rpId??t;if(o&&c!==t)throw Error(`Wallet recovery RP ID does not match the wallet origin`);let u=o?{challenge:R(o.challengeB64u),rp:{name:`Seams Wallet`,id:c},user:{id:n(o.user.idB64u),name:o.user.name,displayName:o.user.displayName},pubKeyCredParams:o.pubKeyCredParams.map(e=>({...e})),authenticatorSelection:{...o.authenticatorSelection},timeout:o.timeoutMs,attestation:o.attestation,extensions:{prf:{eval:{first:n(o.extensions.prf.eval.firstB64u),second:n(o.extensions.prf.eval.secondB64u)}}},excludeCredentials:o.excludeCredentials.map(e=>({type:e.type,id:n(e.id)}))}:{challenge:R(z(e)),rp:{name:`WebAuthn Passkey`,id:c},user:{id:new TextEncoder().encode(K(e.walletId,e.signerSlot)),name:r.walletId,displayName:r.walletId},pubKeyCredParams:[{alg:-7,type:`public-key`},{alg:-257,type:`public-key`}],authenticatorSelection:{residentKey:`required`,userVerification:`preferred`},timeout:6e4,attestation:`none`,extensions:{prf:{eval:{first:l(),second:s()}}}};try{return await w(`create`,u,{abortSignal:this.abortController.signal})}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}};function H(e,t){if(t.kind===`none`)return;let n=t.signal,r=e.abort.bind(e);if(n.aborted){r();return}return n.addEventListener(`abort`,r,{once:!0}),n.removeEventListener.bind(n,`abort`,r)}function U(e){return String(e||``).trim().replace(/=+$/g,``)}function W(e){let t=String(e.response?.clientDataJSON||``).trim();if(!t)throw Error(`WebAuthn authentication response missing clientDataJSON`);let r=``;try{r=new TextDecoder().decode(n(t))}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON encoding: ${e instanceof Error?e.message:String(e)}`)}let i;try{i=JSON.parse(r)}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON JSON: ${e instanceof Error?e.message:String(e)}`)}let a=i&&typeof i==`object`?i.challenge:void 0;if(typeof a!=`string`||!a.trim())throw Error(`WebAuthn authentication response clientDataJSON missing challenge`);return a}function G(e,t){let n=U(W(e)),r=U(t);if(n!==r)throw Error(`Unexpected authentication response challenge "${n}", expected "${r}"`)}function K(e,t){return t===void 0||t===1?e:`${e} (${t})`}function q(e){let t=()=>{document.hidden&&e.abort()},n=()=>{e.abort()},r=()=>{e.abort()};return document.addEventListener(`visibilitychange`,t,{passive:!0}),window.addEventListener(`pagehide`,n,{passive:!0}),window.addEventListener(`beforeunload`,r,{passive:!0}),()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`pagehide`,n),window.removeEventListener(`beforeunload`,r)}}async function J(e){let t=e.request.payload.walletId,n=window.location.origin,r=await d({walletId:t,operation:e.request.operation,payload:e.request.payload,requestOrigin:n}),i=await p({credentialStore:o,touchIdPrompt:new V(e.rpId),walletId:t,challengeB64u:r,includeSecondPrfOutput:!1}),a=ee(i);if(!a)throw Error(`Wallet recovery proof did not receive a passkey credential`);return{kind:`passkey`,walletId:t,rpId:e.rpId,credentialIdB64u:a,challenge_digest:r,webauthn_authentication:u(i)}}function Y(){return r(`wallet-recovery-admin`,16,`wallet recovery administration request IDs`)}async function X(e){let t=Y(),n={walletId:e.walletId,requestId:t},r=await J({rpId:e.rpId,request:{operation:`recovery_status`,payload:n}});return await _({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,factorProof:r})}async function Z(e){let t=Y(),n={walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs},r=await J({rpId:e.rpId,request:{operation:`recovery_backup_acknowledge`,payload:n}});return await y({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:r})}async function Q(e){let t=await o.resolveSelectedWalletAuthority(e);if(t.kind!==`resolved`||t.selection.lockState!==`unlocked`||String(t.selection.walletId)!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.kind!==`email_otp`||t.authMethod.status!==`active`||t.authority.state!==`active`||String(t.authMethod.walletId)!==e||String(t.authority.walletId)!==e)throw Error(`Unlock this wallet with its active Email OTP method`);let n=await o.listWalletAuthMethodsForWallet(e),r=null;for(let e of n)if(!(e.kind!==`email_otp`||e.status!==`active`||e.localStatus!==`synced`||String(e.authority.bindingId)!==String(t.authMethod.walletAuthMethodId))){if(r!==null)throw Error(`The selected Email OTP owner method is duplicated`);r=String(e.authority.factor.providerUserId||``).trim()}if(!r)throw Error(`The selected Email OTP owner method is unavailable on this wallet`);return{walletAuthMethodId:String(t.authMethod.walletAuthMethodId),providerSubjectId:r}}async function $(e){let t=e.request.payload.walletId,{providerSubjectId:n}=await Q(t),r=window.location.origin,i=await d({walletId:t,operation:e.request.operation,payload:e.request.payload,requestOrigin:r}),a=await h({relayUrl:e.relayUrl,walletId:t,providerSubjectId:n,operation:e.request.operation,payload:e.request.payload,requestOrigin:r});if(a.kind!==`ready`)throw Error(a.message);if(a.challenge_digest!==i)throw Error(`Recovery Email OTP challenge does not match this operation`);let o=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:e.request.operation,walletId:t,emailAddress:`your email`,challengeId:a.challengeId});if(o.challengeId!==a.challengeId)throw Error(`Recovery Email OTP confirmation changed its challenge`);return{kind:`email_otp`,provider_subject_id:n,challenge_id:o.challengeId,otp_code:o.otpCode,challenge_digest:i}}async function te(e){let t=Y(),n={walletId:e.walletId,requestId:t},r=await $({context:e.context,relayUrl:e.relayUrl,request:{operation:`recovery_status`,payload:n}});return await _({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,factorProof:r})}async function ne(e){let t=Y(),n={walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs},r=await $({context:e.context,relayUrl:e.relayUrl,request:{operation:`recovery_backup_acknowledge`,payload:n}});return await y({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:r})}export{X as a,_ as c,te as i,h as l,Z as n,Q as o,$ as r,V as s,ne as t,x as u};
|
|
1
|
+
import{nt as e,ot as t}from"./activeWalletSession-BtEHhe99.js";import{r as n}from"./base64-BmKR3UqU.js";import{r,t as i}from"./secureRandomId-8LSc91aN.js";import{o as a}from"./signerSlot-CpyIfl3J.js";import{l as o}from"./wallet-recovery-BEui57xM.js";import{n as s,s as c,t as l,u}from"./helpers-BXezXx19.js";import{i as ee}from"./pendingWalletRecoveryCodeBackup-LbstFwcY.js";import{t as d}from"./walletCustodyOperation-BO_tSfGY.js";import{t as f}from"./webauthnPromptCoordinator-CBkTiMP0.js";import{i as p}from"./collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js";function m(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===5&&n.every(e=>[`ok`,`challengeId`,`challenge_digest`,`expiresAtMs`,`otpChannel`].includes(e))&&t.get(`ok`)===!0)return{kind:`success`,challengeId:t.get(`challengeId`),challengeDigest:t.get(`challenge_digest`),expiresAtMs:t.get(`expiresAtMs`),otpChannel:t.get(`otpChannel`)};let r=[`ok`,`code`,`message`,`retryAfterMs`];if((t.size===3||t.size===4)&&n.every(e=>r.includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`&&typeof t.get(`message`)==`string`&&(t.size===3||typeof t.get(`retryAfterMs`)==`number`)){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function h(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/custody/email-otp/challenge`,body:{walletId:e.walletId,providerSubjectId:e.providerSubjectId,operation:e.operation,payload:e.payload,...e.requestOrigin?{requestOrigin:e.requestOrigin}:{}},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`Email OTP challenge request failed`}}let n=m(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status!==200||n.kind!==`success`)return{kind:t.status>=400&&t.status<500?`rejected`:`transport_failed`,message:r||`Email OTP challenge failed (HTTP ${t.status})`};let i=typeof n.challengeId==`string`?n.challengeId.trim():``,a=typeof n.challengeDigest==`string`?n.challengeDigest.trim():``,o=Number(n.expiresAtMs),s=typeof n.otpChannel==`string`?n.otpChannel.trim():``;return!i||!a||!Number.isSafeInteger(o)||o<=0||!s?{kind:`transport_failed`,message:`Email OTP challenge returned an unusable payload`}:{kind:`ready`,challengeId:i,challenge_digest:a,expiresAtMs:o,otpChannel:s}}function g(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[`ok`,`activeCodeCount`,`totalCodeCount`,`issuedAtMs`,`storeVersion`,`backupOutstanding`],r=[...t.keys()];if(t.size===n.length&&r.every(e=>n.includes(e))&&t.get(`ok`)===!0)return{kind:`success`,activeCodeCount:t.get(`activeCodeCount`),totalCodeCount:t.get(`totalCodeCount`),issuedAtMs:t.get(`issuedAtMs`),storeVersion:t.get(`storeVersion`),backupOutstanding:t.get(`backupOutstanding`)};let i=[`ok`,`code`,`message`];if(t.size===i.length&&r.every(e=>i.includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function _(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/${encodeURIComponent(e.walletId)}/recovery/status`,body:{requestId:e.requestId,factorProof:e.factorProof},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`recovery status request failed`}}let n=g(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===401||t.status===403)return{kind:`unauthorized`,message:r||`recovery status is unauthorized`};if(t.status===404)return{kind:`no_recovery_set`,message:r||`this wallet has no recovery set`};if(t.status!==200)return{kind:`transport_failed`,message:r||`recovery status failed (HTTP ${t.status})`};if(n.kind!==`success`)return{kind:`transport_failed`,message:`recovery status returned an unusable payload`};let i=Number(n.activeCodeCount),a=Number(n.totalCodeCount),o=Number(n.issuedAtMs),s=typeof n.storeVersion==`string`?n.storeVersion.trim():``;return!Number.isSafeInteger(i)||i<0||!Number.isSafeInteger(a)||a<i||!Number.isSafeInteger(o)||o<=0||!s||typeof n.backupOutstanding!=`boolean`?{kind:`transport_failed`,message:`recovery status returned an unusable payload`}:{kind:`ready`,walletId:e.walletId,activeCodeCount:i,totalCodeCount:a,issuedAtMs:o,storeVersion:s,backupOutstanding:n.backupOutstanding,pendingLocalBackup:!1}}function v(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===2&&n.includes(`ok`)&&n.includes(`issuedAtMs`)&&t.get(`ok`)===!0)return{kind:`success`,issuedAtMs:t.get(`issuedAtMs`)};if(t.size===3&&n.includes(`ok`)&&n.includes(`code`)&&n.includes(`message`)&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function y(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/recovery/acknowledge-backup`,body:{walletId:e.walletId,requestId:e.requestId,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:e.factorProof},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`recovery backup acknowledgement failed`}}let n=v(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===401||t.status===403)return{kind:`unauthorized`,message:r||`recovery backup acknowledgement is unauthorized`};if(t.status===404)return{kind:`no_recovery_set`,message:r||`this wallet has no recovery set`};if(t.status===409)return{kind:`conflict`,message:r||`Recovery codes changed. Check status and review the current set.`};if(t.status!==200)return{kind:`transport_failed`,message:r||`recovery backup acknowledgement failed (HTTP ${t.status})`};if(n.kind!==`success`)return{kind:`transport_failed`,message:`recovery backup acknowledgement returned an unusable payload`};let i=Number(n.issuedAtMs);return!Number.isSafeInteger(i)||i<=0?{kind:`transport_failed`,message:`recovery backup acknowledgement returned an unusable payload`}:{kind:`acknowledged`,walletId:e.walletId,issuedAtMs:i}}function b(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===3&&n.every(e=>[`ok`,`issuedAtMs`,`storeVersion`].includes(e))&&t.get(`ok`)===!0)return{kind:`success`,issuedAtMs:t.get(`issuedAtMs`),storeVersion:t.get(`storeVersion`)};if(t.size===3&&n.every(e=>[`ok`,`code`,`message`].includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function x(e){let t=await S({relayUrl:e.relayUrl,path:`/wallets/recovery/rotate`,body:{walletId:e.walletId,expectedStoreVersion:e.expectedStoreVersion,manifestKekWraps:e.replacement.manifestKekWraps,entries:[e.replacement.entry],recoveryCodeLocators:e.recoveryCodeLocators,factorProof:e.factorProof},fetchImpl:e.fetchImpl}),n=b(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===200&&n.kind===`success`){let e=Number(n.issuedAtMs),t=typeof n.storeVersion==`string`?n.storeVersion.trim():``;return!Number.isSafeInteger(e)||e<=0||!t?{kind:`transport_failed`,message:`rotation returned an unusable response`}:{kind:`rotated`,issuedAtMs:e,storeVersion:t}}return t.status===404?{kind:`no_recovery_set`,message:r||`no recovery set`}:t.status===409?{kind:`conflict`,message:r||`recovery set changed`}:t.status===400?{kind:`rejected`,message:r||`rotation rejected`}:{kind:`transport_failed`,message:r||`rotation failed (HTTP ${t.status})`}}async function S(n){let r=`${t(n.relayUrl)}${n.path}`;return await(n.fetchImpl||fetch)(r,e({headers:{Accept:`application/json`},body:n.body}))}var C=class extends Error{code=`wallet_origin_webauthn_unavailable`;constructor(e){super(e),this.name=`WalletOriginWebAuthnUnavailableError`}};async function w(e,t,n){let r=T(e,t);try{return e===`create`?await navigator.credentials.create({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}}):await navigator.credentials.get({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}})}catch(t){throw e===`create`&&(N(t)||P(t))?new C(`Wallet-origin WebAuthn registration is unavailable: ${F(t)}`):t}}function T(e,t){return e===`create`?E(t):D(t)}function E(e){return{...e,challenge:M(e.challenge),user:{...e.user,id:M(e.user.id)},excludeCredentials:e.excludeCredentials?.map(O),extensions:k(e.extensions)}}function D(e){return{...e,challenge:M(e.challenge),allowCredentials:e.allowCredentials?.map(O),extensions:k(e.extensions)}}function O(e){return{...e,id:M(e.id)}}function k(e){if(!e)return e;let t={...e},n=t.prf;if(n&&typeof n==`object`){let e={...n};if(e.eval&&typeof e.eval==`object`&&(e.eval=A(e.eval)),e.evalByCredential&&typeof e.evalByCredential==`object`){let t={};for(let[n,r]of Object.entries(e.evalByCredential))t[n]=r&&typeof r==`object`?A(r):r;e.evalByCredential=t}t.prf=e}return t}function A(e){return{...e,...j(e.first)?{first:M(e.first)}:{},...j(e.second)?{second:M(e.second)}:{}}}function j(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function M(e){if(e instanceof ArrayBuffer)return e.slice(0);let t=e,n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice();if(e instanceof DataView)return new DataView(n.buffer);let r=Object.getPrototypeOf(e).constructor;return new r(n.buffer)}function N(e){let t=F(e);return/origin of the document is not the same as its ancestors/i.test(t)}function P(e){let t=I(e),n=F(e),r=t===`NotAllowedError`,i=/document is not focused|not focused|focus/i.test(n);return!!(r&&i)}function F(e){return String(e?.message||``)}function I(e){let t=e?.name;return typeof t==`string`?t:``}function L(e,t){return(e||t||``).toLowerCase()}function R(e){let t=n(String(e||``));if(t.length!==32)throw Error(`Invalid WebAuthn challenge: expected 32 bytes, got ${t.length}`);return t}function z(e){if(e.kind!==`wallet_registration`)throw Error(`Wallet registration challenge is unavailable`);return e.challengeB64u}function B(e){let t=a(String(e.walletId||``).trim());if(String(e.intendedUserName||``).trim()!==String(t))throw Error(`WebAuthn registration user.name must match walletId`);return{walletId:t}}var V=class{rpIdOverride;abortController;removePageAbortHandlers;removeExternalAbortListener;constructor(e){this.rpIdOverride=e}getRpId(){try{return L(this.rpIdOverride,window?.location?.hostname)}catch{return this.rpIdOverride||``}}getAuthenticationCredentialsSerializedForChallengeB64u(e){let t=`webauthn-get-${i(12,`WebAuthn get request IDs`)}`;return f.runImmediate({owner:{kind:`wallet_request`,requestId:t,operation:`authentication`},operation:this.executeAuthenticationCredential.bind(this,e)})}async executeAuthenticationCredential({subjectId:e,challengeB64u:t,allowCredentials:r=[],includeSecondPrfOutput:i=!1,cancellation:a={kind:`none`}}){this.abortController=new AbortController,this.removePageAbortHandlers=q(this.abortController),this.removeExternalAbortListener=H(this.abortController,a);let o=this.getRpId(),u={challenge:R(t),rpId:o,userVerification:`preferred`,timeout:6e4,extensions:{prf:{eval:{first:l(),second:s()}}}};r.length>0&&(u.allowCredentials=r.map(e=>({id:n(e.id),type:`public-key`,transports:e.transports})));try{let e=c({credential:await w(`get`,u,{abortSignal:this.abortController.signal}),firstPrfOutput:!0,secondPrfOutput:i});return G(e,t),e}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}generateRegistrationCredentialsInternal(e){switch(e.prompt.kind){case`reserved`:return f.runReserved({reservation:e.prompt.reservation,owner:e.prompt.owner,operation:this.executeRegistrationCredential.bind(this,e)});case`immediate`:return f.runImmediate({owner:{kind:`wallet_request`,requestId:e.prompt.requestId,operation:`registration`},operation:this.executeRegistrationCredential.bind(this,e)})}}async executeRegistrationCredential(e){this.abortController=new AbortController,this.removePageAbortHandlers=q(this.abortController),this.removeExternalAbortListener=H(this.abortController,e.prompt.cancellation);let t=this.getRpId(),r=B({walletId:e.walletId,intendedUserName:e.intendedUserName}),i=e.kind===`wallet_recovery`?e.recoveryRegistration:null,a=e.kind===`wallet_add_auth_method`?e.registration:null,o=i??a,c=o?.rpId??t;if(o&&c!==t)throw Error(`Wallet recovery RP ID does not match the wallet origin`);let u=o?{challenge:R(o.challengeB64u),rp:{name:`Seams Wallet`,id:c},user:{id:n(o.user.idB64u),name:o.user.name,displayName:o.user.displayName},pubKeyCredParams:o.pubKeyCredParams.map(e=>({...e})),authenticatorSelection:{...o.authenticatorSelection},timeout:o.timeoutMs,attestation:o.attestation,extensions:{prf:{eval:{first:n(o.extensions.prf.eval.firstB64u),second:n(o.extensions.prf.eval.secondB64u)}}},excludeCredentials:o.excludeCredentials.map(e=>({type:e.type,id:n(e.id)}))}:{challenge:R(z(e)),rp:{name:`WebAuthn Passkey`,id:c},user:{id:new TextEncoder().encode(K(e.walletId,e.signerSlot)),name:r.walletId,displayName:r.walletId},pubKeyCredParams:[{alg:-7,type:`public-key`},{alg:-257,type:`public-key`}],authenticatorSelection:{residentKey:`required`,userVerification:`preferred`},timeout:6e4,attestation:`none`,extensions:{prf:{eval:{first:l(),second:s()}}}};try{return await w(`create`,u,{abortSignal:this.abortController.signal})}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}};function H(e,t){if(t.kind===`none`)return;let n=t.signal,r=e.abort.bind(e);if(n.aborted){r();return}return n.addEventListener(`abort`,r,{once:!0}),n.removeEventListener.bind(n,`abort`,r)}function U(e){return String(e||``).trim().replace(/=+$/g,``)}function W(e){let t=String(e.response?.clientDataJSON||``).trim();if(!t)throw Error(`WebAuthn authentication response missing clientDataJSON`);let r=``;try{r=new TextDecoder().decode(n(t))}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON encoding: ${e instanceof Error?e.message:String(e)}`)}let i;try{i=JSON.parse(r)}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON JSON: ${e instanceof Error?e.message:String(e)}`)}let a=i&&typeof i==`object`?i.challenge:void 0;if(typeof a!=`string`||!a.trim())throw Error(`WebAuthn authentication response clientDataJSON missing challenge`);return a}function G(e,t){let n=U(W(e)),r=U(t);if(n!==r)throw Error(`Unexpected authentication response challenge "${n}", expected "${r}"`)}function K(e,t){return t===void 0||t===1?e:`${e} (${t})`}function q(e){let t=()=>{document.hidden&&e.abort()},n=()=>{e.abort()},r=()=>{e.abort()};return document.addEventListener(`visibilitychange`,t,{passive:!0}),window.addEventListener(`pagehide`,n,{passive:!0}),window.addEventListener(`beforeunload`,r,{passive:!0}),()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`pagehide`,n),window.removeEventListener(`beforeunload`,r)}}async function J(e){let t=e.request.payload.walletId,n=window.location.origin,r=await d({walletId:t,operation:e.request.operation,payload:e.request.payload,requestOrigin:n}),i=await p({credentialStore:o,touchIdPrompt:new V(e.rpId),walletId:t,challengeB64u:r,includeSecondPrfOutput:!1}),a=ee(i);if(!a)throw Error(`Wallet recovery proof did not receive a passkey credential`);return{kind:`passkey`,walletId:t,rpId:e.rpId,credentialIdB64u:a,challenge_digest:r,webauthn_authentication:u(i)}}function Y(){return r(`wallet-recovery-admin`,16,`wallet recovery administration request IDs`)}async function X(e){let t=Y(),n={walletId:e.walletId,requestId:t},r=await J({rpId:e.rpId,request:{operation:`recovery_status`,payload:n}});return await _({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,factorProof:r})}async function Z(e){let t=Y(),n={walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs},r=await J({rpId:e.rpId,request:{operation:`recovery_backup_acknowledge`,payload:n}});return await y({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:r})}async function Q(e){let t=await o.resolveSelectedWalletAuthority(e);if(t.kind!==`resolved`||t.selection.lockState!==`unlocked`||String(t.selection.walletId)!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.kind!==`email_otp`||t.authMethod.status!==`active`||t.authority.state!==`active`||String(t.authMethod.walletId)!==e||String(t.authority.walletId)!==e)throw Error(`Unlock this wallet with its active Email OTP method`);let n=await o.listWalletAuthMethodsForWallet(e),r=null;for(let e of n)if(!(e.kind!==`email_otp`||e.status!==`active`||e.localStatus!==`synced`||String(e.authority.bindingId)!==String(t.authMethod.walletAuthMethodId))){if(r!==null)throw Error(`The selected Email OTP owner method is duplicated`);r=String(e.authority.factor.providerUserId||``).trim()}if(!r)throw Error(`The selected Email OTP owner method is unavailable on this wallet`);return{walletAuthMethodId:String(t.authMethod.walletAuthMethodId),providerSubjectId:r}}async function $(e){let t=e.request.payload.walletId,{providerSubjectId:n}=await Q(t),r=window.location.origin,i=await d({walletId:t,operation:e.request.operation,payload:e.request.payload,requestOrigin:r}),a=await h({relayUrl:e.relayUrl,walletId:t,providerSubjectId:n,operation:e.request.operation,payload:e.request.payload,requestOrigin:r});if(a.kind!==`ready`)throw Error(a.message);if(a.challenge_digest!==i)throw Error(`Recovery Email OTP challenge does not match this operation`);let o=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:e.request.operation,walletId:t,emailAddress:`your email`,challengeId:a.challengeId});if(o.challengeId!==a.challengeId)throw Error(`Recovery Email OTP confirmation changed its challenge`);return{kind:`email_otp`,provider_subject_id:n,challenge_id:o.challengeId,otp_code:o.otpCode,challenge_digest:i}}async function te(e){let t=Y(),n={walletId:e.walletId,requestId:t},r=await $({context:e.context,relayUrl:e.relayUrl,request:{operation:`recovery_status`,payload:n}});return await _({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,factorProof:r})}async function ne(e){let t=Y(),n={walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs},r=await $({context:e.context,relayUrl:e.relayUrl,request:{operation:`recovery_backup_acknowledge`,payload:n}});return await y({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:r})}export{X as a,_ as c,te as i,h as l,Z as n,Q as o,$ as r,V as s,ne as t,x as u};
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "@seams/wallet",
|
|
4
|
-
"packageVersion": "0.
|
|
4
|
+
"packageVersion": "0.23.0",
|
|
5
5
|
"assetRoot": "dist/public",
|
|
6
6
|
"sdkBasePath": "/sdk",
|
|
7
7
|
"walletServicePath": "/wallet-service",
|
|
8
|
-
"walletHostRelayerOriginPolicy": "document_meta_v1",
|
|
9
8
|
"headersManifest": "headers.manifest.json",
|
|
10
9
|
"versionSkewContract": {
|
|
11
10
|
"kind": "wallet_iframe_protocol_handshake",
|
|
12
|
-
"packageVersion": "0.
|
|
11
|
+
"packageVersion": "0.23.0",
|
|
13
12
|
"protocolVersion": "16.0.0",
|
|
14
13
|
"readyPayloadField": "protocolVersion",
|
|
15
14
|
"failureMode": "typed_error",
|
|
@@ -107,8 +106,8 @@
|
|
|
107
106
|
]
|
|
108
107
|
},
|
|
109
108
|
{
|
|
110
|
-
"route": "/sdk/adapters-
|
|
111
|
-
"sourceFile": "sdk/adapters-
|
|
109
|
+
"route": "/sdk/adapters-CgJpSAxH.js",
|
|
110
|
+
"sourceFile": "sdk/adapters-CgJpSAxH.js",
|
|
112
111
|
"owner": "wallet_sdk_asset",
|
|
113
112
|
"routeClass": "javascript",
|
|
114
113
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -131,8 +130,8 @@
|
|
|
131
130
|
]
|
|
132
131
|
},
|
|
133
132
|
{
|
|
134
|
-
"route": "/sdk/appearance-token-vars-
|
|
135
|
-
"sourceFile": "sdk/appearance-token-vars-
|
|
133
|
+
"route": "/sdk/appearance-token-vars-BA3KQyEE.js",
|
|
134
|
+
"sourceFile": "sdk/appearance-token-vars-BA3KQyEE.js",
|
|
136
135
|
"owner": "wallet_sdk_asset",
|
|
137
136
|
"routeClass": "javascript",
|
|
138
137
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -563,8 +562,8 @@
|
|
|
563
562
|
]
|
|
564
563
|
},
|
|
565
564
|
{
|
|
566
|
-
"route": "/sdk/ConfirmationDrawer-
|
|
567
|
-
"sourceFile": "sdk/ConfirmationDrawer-
|
|
565
|
+
"route": "/sdk/ConfirmationDrawer-Ck33ZmU-.js",
|
|
566
|
+
"sourceFile": "sdk/ConfirmationDrawer-Ck33ZmU-.js",
|
|
568
567
|
"owner": "wallet_sdk_asset",
|
|
569
568
|
"routeClass": "javascript",
|
|
570
569
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -923,8 +922,8 @@
|
|
|
923
922
|
]
|
|
924
923
|
},
|
|
925
924
|
{
|
|
926
|
-
"route": "/sdk/export-viewer-host-
|
|
927
|
-
"sourceFile": "sdk/export-viewer-host-
|
|
925
|
+
"route": "/sdk/export-viewer-host-C9n-62Pi.js",
|
|
926
|
+
"sourceFile": "sdk/export-viewer-host-C9n-62Pi.js",
|
|
928
927
|
"owner": "wallet_sdk_asset",
|
|
929
928
|
"routeClass": "javascript",
|
|
930
929
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -947,8 +946,8 @@
|
|
|
947
946
|
]
|
|
948
947
|
},
|
|
949
948
|
{
|
|
950
|
-
"route": "/sdk/exportKeypairOperation-
|
|
951
|
-
"sourceFile": "sdk/exportKeypairOperation-
|
|
949
|
+
"route": "/sdk/exportKeypairOperation-Du9HKB8f.js",
|
|
950
|
+
"sourceFile": "sdk/exportKeypairOperation-Du9HKB8f.js",
|
|
952
951
|
"owner": "wallet_sdk_asset",
|
|
953
952
|
"routeClass": "javascript",
|
|
954
953
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -995,8 +994,8 @@
|
|
|
995
994
|
]
|
|
996
995
|
},
|
|
997
996
|
{
|
|
998
|
-
"route": "/sdk/host-
|
|
999
|
-
"sourceFile": "sdk/host-
|
|
997
|
+
"route": "/sdk/host-C5KYWEcs.js",
|
|
998
|
+
"sourceFile": "sdk/host-C5KYWEcs.js",
|
|
1000
999
|
"owner": "wallet_sdk_asset",
|
|
1001
1000
|
"routeClass": "javascript",
|
|
1002
1001
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1139,8 +1138,8 @@
|
|
|
1139
1138
|
]
|
|
1140
1139
|
},
|
|
1141
1140
|
{
|
|
1142
|
-
"route": "/sdk/localOnly-
|
|
1143
|
-
"sourceFile": "sdk/localOnly-
|
|
1141
|
+
"route": "/sdk/localOnly-CvFSZFUy.js",
|
|
1142
|
+
"sourceFile": "sdk/localOnly-CvFSZFUy.js",
|
|
1144
1143
|
"owner": "wallet_sdk_asset",
|
|
1145
1144
|
"routeClass": "javascript",
|
|
1146
1145
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1163,8 +1162,8 @@
|
|
|
1163
1162
|
]
|
|
1164
1163
|
},
|
|
1165
1164
|
{
|
|
1166
|
-
"route": "/sdk/mountExportPrivateKeySurface-
|
|
1167
|
-
"sourceFile": "sdk/mountExportPrivateKeySurface-
|
|
1165
|
+
"route": "/sdk/mountExportPrivateKeySurface-DdJHWwqY.js",
|
|
1166
|
+
"sourceFile": "sdk/mountExportPrivateKeySurface-DdJHWwqY.js",
|
|
1168
1167
|
"owner": "wallet_sdk_asset",
|
|
1169
1168
|
"routeClass": "javascript",
|
|
1170
1169
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1187,8 +1186,8 @@
|
|
|
1187
1186
|
]
|
|
1188
1187
|
},
|
|
1189
1188
|
{
|
|
1190
|
-
"route": "/sdk/mountRecoveryCodeBackupSurface-
|
|
1191
|
-
"sourceFile": "sdk/mountRecoveryCodeBackupSurface-
|
|
1189
|
+
"route": "/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js",
|
|
1190
|
+
"sourceFile": "sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js",
|
|
1192
1191
|
"owner": "wallet_sdk_asset",
|
|
1193
1192
|
"routeClass": "javascript",
|
|
1194
1193
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1379,8 +1378,8 @@
|
|
|
1379
1378
|
]
|
|
1380
1379
|
},
|
|
1381
1380
|
{
|
|
1382
|
-
"route": "/sdk/pendingWalletRecoveryCodeBackup-
|
|
1383
|
-
"sourceFile": "sdk/pendingWalletRecoveryCodeBackup-
|
|
1381
|
+
"route": "/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js",
|
|
1382
|
+
"sourceFile": "sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js",
|
|
1384
1383
|
"owner": "wallet_sdk_asset",
|
|
1385
1384
|
"routeClass": "javascript",
|
|
1386
1385
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1571,8 +1570,8 @@
|
|
|
1571
1570
|
]
|
|
1572
1571
|
},
|
|
1573
1572
|
{
|
|
1574
|
-
"route": "/sdk/registration-
|
|
1575
|
-
"sourceFile": "sdk/registration-
|
|
1573
|
+
"route": "/sdk/registration-CeOmKyCG.js",
|
|
1574
|
+
"sourceFile": "sdk/registration-CeOmKyCG.js",
|
|
1576
1575
|
"owner": "wallet_sdk_asset",
|
|
1577
1576
|
"routeClass": "javascript",
|
|
1578
1577
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1595,8 +1594,8 @@
|
|
|
1595
1594
|
]
|
|
1596
1595
|
},
|
|
1597
1596
|
{
|
|
1598
|
-
"route": "/sdk/registration-
|
|
1599
|
-
"sourceFile": "sdk/registration-
|
|
1597
|
+
"route": "/sdk/registration-CIxJvbTo.js",
|
|
1598
|
+
"sourceFile": "sdk/registration-CIxJvbTo.js",
|
|
1600
1599
|
"owner": "wallet_sdk_asset",
|
|
1601
1600
|
"routeClass": "javascript",
|
|
1602
1601
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1787,8 +1786,8 @@
|
|
|
1787
1786
|
]
|
|
1788
1787
|
},
|
|
1789
1788
|
{
|
|
1790
|
-
"route": "/sdk/runtime-auth-
|
|
1791
|
-
"sourceFile": "sdk/runtime-auth-
|
|
1789
|
+
"route": "/sdk/runtime-auth-C0V-5znH.js",
|
|
1790
|
+
"sourceFile": "sdk/runtime-auth-C0V-5znH.js",
|
|
1792
1791
|
"owner": "wallet_sdk_asset",
|
|
1793
1792
|
"routeClass": "javascript",
|
|
1794
1793
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1811,8 +1810,8 @@
|
|
|
1811
1810
|
]
|
|
1812
1811
|
},
|
|
1813
1812
|
{
|
|
1814
|
-
"route": "/sdk/runtime-device-link-
|
|
1815
|
-
"sourceFile": "sdk/runtime-device-link-
|
|
1813
|
+
"route": "/sdk/runtime-device-link-B1jpHQSF.js",
|
|
1814
|
+
"sourceFile": "sdk/runtime-device-link-B1jpHQSF.js",
|
|
1816
1815
|
"owner": "wallet_sdk_asset",
|
|
1817
1816
|
"routeClass": "javascript",
|
|
1818
1817
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1835,8 +1834,8 @@
|
|
|
1835
1834
|
]
|
|
1836
1835
|
},
|
|
1837
1836
|
{
|
|
1838
|
-
"route": "/sdk/runtime-ecdsa-tempo-
|
|
1839
|
-
"sourceFile": "sdk/runtime-ecdsa-tempo-
|
|
1837
|
+
"route": "/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js",
|
|
1838
|
+
"sourceFile": "sdk/runtime-ecdsa-tempo-CDSZ3pxS.js",
|
|
1840
1839
|
"owner": "wallet_sdk_asset",
|
|
1841
1840
|
"routeClass": "javascript",
|
|
1842
1841
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1859,8 +1858,8 @@
|
|
|
1859
1858
|
]
|
|
1860
1859
|
},
|
|
1861
1860
|
{
|
|
1862
|
-
"route": "/sdk/runtime-email-otp-
|
|
1863
|
-
"sourceFile": "sdk/runtime-email-otp-
|
|
1861
|
+
"route": "/sdk/runtime-email-otp-DXuxFOjL.js",
|
|
1862
|
+
"sourceFile": "sdk/runtime-email-otp-DXuxFOjL.js",
|
|
1864
1863
|
"owner": "wallet_sdk_asset",
|
|
1865
1864
|
"routeClass": "javascript",
|
|
1866
1865
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1883,8 +1882,8 @@
|
|
|
1883
1882
|
]
|
|
1884
1883
|
},
|
|
1885
1884
|
{
|
|
1886
|
-
"route": "/sdk/runtime-export-
|
|
1887
|
-
"sourceFile": "sdk/runtime-export-
|
|
1885
|
+
"route": "/sdk/runtime-export-Ba12ChDI.js",
|
|
1886
|
+
"sourceFile": "sdk/runtime-export-Ba12ChDI.js",
|
|
1888
1887
|
"owner": "wallet_sdk_asset",
|
|
1889
1888
|
"routeClass": "javascript",
|
|
1890
1889
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1907,8 +1906,8 @@
|
|
|
1907
1906
|
]
|
|
1908
1907
|
},
|
|
1909
1908
|
{
|
|
1910
|
-
"route": "/sdk/runtime-near-
|
|
1911
|
-
"sourceFile": "sdk/runtime-near-
|
|
1909
|
+
"route": "/sdk/runtime-near-DRrdWzmr.js",
|
|
1910
|
+
"sourceFile": "sdk/runtime-near-DRrdWzmr.js",
|
|
1912
1911
|
"owner": "wallet_sdk_asset",
|
|
1913
1912
|
"routeClass": "javascript",
|
|
1914
1913
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1931,8 +1930,8 @@
|
|
|
1931
1930
|
]
|
|
1932
1931
|
},
|
|
1933
1932
|
{
|
|
1934
|
-
"route": "/sdk/runtime-preferences-
|
|
1935
|
-
"sourceFile": "sdk/runtime-preferences-
|
|
1933
|
+
"route": "/sdk/runtime-preferences-BWyhRaBA.js",
|
|
1934
|
+
"sourceFile": "sdk/runtime-preferences-BWyhRaBA.js",
|
|
1936
1935
|
"owner": "wallet_sdk_asset",
|
|
1937
1936
|
"routeClass": "javascript",
|
|
1938
1937
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1955,8 +1954,8 @@
|
|
|
1955
1954
|
]
|
|
1956
1955
|
},
|
|
1957
1956
|
{
|
|
1958
|
-
"route": "/sdk/runtime-recovery-codes-
|
|
1959
|
-
"sourceFile": "sdk/runtime-recovery-codes-
|
|
1957
|
+
"route": "/sdk/runtime-recovery-codes-CuqYWqK7.js",
|
|
1958
|
+
"sourceFile": "sdk/runtime-recovery-codes-CuqYWqK7.js",
|
|
1960
1959
|
"owner": "wallet_sdk_asset",
|
|
1961
1960
|
"routeClass": "javascript",
|
|
1962
1961
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -1979,8 +1978,8 @@
|
|
|
1979
1978
|
]
|
|
1980
1979
|
},
|
|
1981
1980
|
{
|
|
1982
|
-
"route": "/sdk/runtime-recovery-
|
|
1983
|
-
"sourceFile": "sdk/runtime-recovery-
|
|
1981
|
+
"route": "/sdk/runtime-recovery-DlJlaZlf.js",
|
|
1982
|
+
"sourceFile": "sdk/runtime-recovery-DlJlaZlf.js",
|
|
1984
1983
|
"owner": "wallet_sdk_asset",
|
|
1985
1984
|
"routeClass": "javascript",
|
|
1986
1985
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -2099,8 +2098,8 @@
|
|
|
2099
2098
|
]
|
|
2100
2099
|
},
|
|
2101
2100
|
{
|
|
2102
|
-
"route": "/sdk/shared-
|
|
2103
|
-
"sourceFile": "sdk/shared-
|
|
2101
|
+
"route": "/sdk/shared-B95wnpoD.js",
|
|
2102
|
+
"sourceFile": "sdk/shared-B95wnpoD.js",
|
|
2104
2103
|
"owner": "wallet_sdk_asset",
|
|
2105
2104
|
"routeClass": "javascript",
|
|
2106
2105
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -2483,8 +2482,8 @@
|
|
|
2483
2482
|
]
|
|
2484
2483
|
},
|
|
2485
2484
|
{
|
|
2486
|
-
"route": "/sdk/transaction-activity-
|
|
2487
|
-
"sourceFile": "sdk/transaction-activity-
|
|
2485
|
+
"route": "/sdk/transaction-activity-CpDMkSPm.js",
|
|
2486
|
+
"sourceFile": "sdk/transaction-activity-CpDMkSPm.js",
|
|
2488
2487
|
"owner": "wallet_sdk_asset",
|
|
2489
2488
|
"routeClass": "javascript",
|
|
2490
2489
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -2987,8 +2986,8 @@
|
|
|
2987
2986
|
]
|
|
2988
2987
|
},
|
|
2989
2988
|
{
|
|
2990
|
-
"route": "/sdk/walletRecoveryAdminProof-
|
|
2991
|
-
"sourceFile": "sdk/walletRecoveryAdminProof-
|
|
2989
|
+
"route": "/sdk/walletRecoveryAdminProof-CtH8_lph.js",
|
|
2990
|
+
"sourceFile": "sdk/walletRecoveryAdminProof-CtH8_lph.js",
|
|
2992
2991
|
"owner": "wallet_sdk_asset",
|
|
2993
2992
|
"routeClass": "javascript",
|
|
2994
2993
|
"contentType": "text/javascript; charset=utf-8",
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Web3Authn Wallet Service</title>
|
|
7
7
|
<!-- Surface styles are external so strict CSP can keep style-src 'self' -->
|
|
8
|
-
<link rel="stylesheet" href="/sdk/wallet-ui.css?v=0.
|
|
8
|
+
<link rel="stylesheet" href="/sdk/wallet-ui.css?v=0.23.0" />
|
|
9
9
|
<!-- Minimal shims some ESM bundles expect (externalized to enable strict CSP) -->
|
|
10
|
-
<script src="/sdk/wallet-shims.js?v=0.
|
|
10
|
+
<script src="/sdk/wallet-shims.js?v=0.23.0"></script>
|
|
11
11
|
<!-- Hint the browser to fetch the host script earlier -->
|
|
12
|
-
<link rel="modulepreload" href="/sdk/wallet-iframe-host-runtime.js?v=0.
|
|
12
|
+
<link rel="modulepreload" href="/sdk/wallet-iframe-host-runtime.js?v=0.23.0" crossorigin>
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<!-- sdkBasePath points to the SDK root (e.g. '/sdk'). Load the host directly. -->
|
|
16
|
-
<script type="module" src="/sdk/wallet-iframe-host-runtime.js?v=0.
|
|
16
|
+
<script type="module" src="/sdk/wallet-iframe-host-runtime.js?v=0.23.0"></script>
|
|
17
17
|
</body>
|
|
18
18
|
</html>
|
|
@@ -14,7 +14,9 @@ export declare class AuthMenuController {
|
|
|
14
14
|
request: HostedAuthMenuOpenRequest;
|
|
15
15
|
requestId: string | undefined;
|
|
16
16
|
}): Promise<import('../../shared/messages').HostedAuthMenuOutcome>;
|
|
17
|
+
private readLoginAccounts;
|
|
17
18
|
private bootstrapLoginAccounts;
|
|
19
|
+
private applyLoginAccounts;
|
|
18
20
|
private prepareLogin;
|
|
19
21
|
private prepareRecoveredLogin;
|
|
20
22
|
private beginGoogleEmailOtp;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChildToParentEnvelope, ParentToChildEnvelope } from '../../../../SeamsWeb/walletIframe/shared/messages';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ReceiptProgress, TransactionReceiptModel, TransactionReceiptView } from './transaction-receipt';
|
|
3
3
|
type ReceiptSurface = {
|
|
4
4
|
readonly element: HTMLElement;
|
|
5
5
|
showReceipt(model: TransactionReceiptModel): void;
|
|
@@ -9,7 +9,7 @@ type Activity = {
|
|
|
9
9
|
requestId: string;
|
|
10
10
|
post: (message: ChildToParentEnvelope) => void;
|
|
11
11
|
surface: ReceiptSurface | null;
|
|
12
|
-
|
|
12
|
+
progress: ReceiptProgress;
|
|
13
13
|
view: TransactionReceiptView;
|
|
14
14
|
retained: boolean;
|
|
15
15
|
signingHash: string | null;
|
|
@@ -19,15 +19,34 @@ export type TransactionReceiptState = {
|
|
|
19
19
|
hash: string | null;
|
|
20
20
|
message: string;
|
|
21
21
|
};
|
|
22
|
+
export type MessageReceiptState = {
|
|
23
|
+
kind: 'signing';
|
|
24
|
+
message?: never;
|
|
25
|
+
} | {
|
|
26
|
+
kind: 'signed';
|
|
27
|
+
message?: never;
|
|
28
|
+
} | {
|
|
29
|
+
kind: 'failed';
|
|
30
|
+
message: string;
|
|
31
|
+
};
|
|
32
|
+
export type ReceiptProgress = {
|
|
33
|
+
readonly subject: 'transaction';
|
|
34
|
+
readonly state: TransactionReceiptState;
|
|
35
|
+
} | {
|
|
36
|
+
readonly subject: 'message';
|
|
37
|
+
readonly state: MessageReceiptState;
|
|
38
|
+
};
|
|
22
39
|
export type TransactionReceiptView = 'expanded' | 'toast';
|
|
23
|
-
export type TransactionReceiptModel = {
|
|
24
|
-
state: TransactionReceiptState;
|
|
40
|
+
export type TransactionReceiptModel = ReceiptProgress & {
|
|
25
41
|
view: TransactionReceiptView;
|
|
26
42
|
onView: (view: TransactionReceiptView) => void;
|
|
27
43
|
onDismiss: () => void;
|
|
28
44
|
};
|
|
29
|
-
export declare function receiptIsPending(
|
|
30
|
-
export declare function
|
|
31
|
-
|
|
32
|
-
export declare function
|
|
45
|
+
export declare function receiptIsPending(receipt: ReceiptProgress): boolean;
|
|
46
|
+
export declare function receiptIsComplete(receipt: ReceiptProgress): boolean;
|
|
47
|
+
/** A message signature has one stage, so its toast fills at once when signed. */
|
|
48
|
+
export declare function receiptCompletedStages(receipt: ReceiptProgress): 0 | 1 | 2 | 3;
|
|
49
|
+
export declare function receiptTitle(receipt: ReceiptProgress): string;
|
|
50
|
+
export declare function receiptHeading(receipt: ReceiptProgress): string;
|
|
51
|
+
export declare function receiptDescription(receipt: ReceiptProgress): string;
|
|
33
52
|
//# sourceMappingURL=transaction-receipt.d.ts.map
|