@tatchi-xyz/sdk 0.31.0 → 0.31.1
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/dist/cjs/core/IndexedDBManager/passkeyClientDB.js +2 -2
- package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
- package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/login.js +1 -1
- package/dist/cjs/core/TatchiPasskey/login.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/registration.js +67 -56
- package/dist/cjs/core/TatchiPasskey/registration.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/index.js +3 -3
- package/dist/cjs/core/WebAuthnManager/index.js.map +1 -1
- package/dist/cjs/core/defaultConfigs.js +3 -1
- package/dist/cjs/core/defaultConfigs.js.map +1 -1
- package/dist/cjs/react/components/AccountMenuButton/TransactionSettingsSection.js +3 -3
- package/dist/cjs/react/components/AccountMenuButton/TransactionSettingsSection.js.map +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-CRlobBrN.css → PasskeyAuthMenu-D2eRb2-S.css} +3 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/PasskeyAuthMenu-D2eRb2-S.css.map +1 -0
- package/dist/cjs/react/components/PasskeyAuthMenu/preload.js +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/preload.js.map +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/shell.js +52 -13
- package/dist/cjs/react/components/PasskeyAuthMenu/shell.js.map +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/skeleton.js +4 -2
- package/dist/cjs/react/components/PasskeyAuthMenu/skeleton.js.map +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +5 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
- package/dist/cjs/react/index.js +1 -1
- package/dist/cjs/react/src/core/IndexedDBManager/passkeyClientDB.js +2 -2
- package/dist/cjs/react/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/cjs/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
- package/dist/cjs/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/cjs/react/src/core/TatchiPasskey/login.js +1 -1
- package/dist/cjs/react/src/core/TatchiPasskey/login.js.map +1 -1
- package/dist/cjs/react/src/core/TatchiPasskey/registration.js +67 -56
- package/dist/cjs/react/src/core/TatchiPasskey/registration.js.map +1 -1
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
- package/dist/cjs/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
- package/dist/cjs/react/src/core/WebAuthnManager/index.js +3 -3
- package/dist/cjs/react/src/core/WebAuthnManager/index.js.map +1 -1
- package/dist/cjs/react/src/core/defaultConfigs.js +3 -1
- package/dist/cjs/react/src/core/defaultConfigs.js.map +1 -1
- package/dist/cjs/server/core/AuthService.js +49 -6
- package/dist/cjs/server/core/AuthService.js.map +1 -1
- package/dist/cjs/server/sdk/src/core/defaultConfigs.js.map +1 -1
- package/dist/esm/core/IndexedDBManager/passkeyClientDB.js +2 -2
- package/dist/esm/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
- package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/login.js +1 -1
- package/dist/esm/core/TatchiPasskey/login.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/registration.js +67 -56
- package/dist/esm/core/TatchiPasskey/registration.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/index.js +3 -3
- package/dist/esm/core/WebAuthnManager/index.js.map +1 -1
- package/dist/esm/core/defaultConfigs.js +3 -1
- package/dist/esm/core/defaultConfigs.js.map +1 -1
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +3 -3
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js.map +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-D2VHZ04W.css → PasskeyAuthMenu-qTHAv58Z.css} +3 -1
- package/dist/esm/react/components/PasskeyAuthMenu/PasskeyAuthMenu-qTHAv58Z.css.map +1 -0
- package/dist/esm/react/components/PasskeyAuthMenu/preload.js +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/preload.js.map +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/shell.js +52 -13
- package/dist/esm/react/components/PasskeyAuthMenu/shell.js.map +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/skeleton.js +4 -2
- package/dist/esm/react/components/PasskeyAuthMenu/skeleton.js.map +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +5 -1
- package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
- package/dist/esm/react/index.js +1 -1
- package/dist/esm/react/src/core/IndexedDBManager/passkeyClientDB.js +2 -2
- package/dist/esm/react/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/esm/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +9 -8
- package/dist/esm/react/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/esm/react/src/core/TatchiPasskey/login.js +1 -1
- package/dist/esm/react/src/core/TatchiPasskey/login.js.map +1 -1
- package/dist/esm/react/src/core/TatchiPasskey/registration.js +67 -56
- package/dist/esm/react/src/core/TatchiPasskey/registration.js.map +1 -1
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js +1 -10
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.js.map +1 -1
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +58 -67
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +74 -75
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js +17 -7
- package/dist/esm/react/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.js.map +1 -1
- package/dist/esm/react/src/core/WebAuthnManager/index.js +3 -3
- package/dist/esm/react/src/core/WebAuthnManager/index.js.map +1 -1
- package/dist/esm/react/src/core/defaultConfigs.js +3 -1
- package/dist/esm/react/src/core/defaultConfigs.js.map +1 -1
- package/dist/esm/react/styles/styles.css +2 -0
- package/dist/esm/sdk/{EmailRecovery-Dl8b4ONg.js → EmailRecovery-Y7rurd4B.js} +3 -3
- package/dist/esm/sdk/{EmailRecovery-v9oNO2Tc.js → EmailRecovery-lsjLWApQ.js} +1 -1
- package/dist/esm/sdk/{IndexedDBManager-B1cUvdyY.js → IndexedDBManager-CmdN7smS.js} +3 -3
- package/dist/esm/sdk/{createAdapters-Dv7ZJPf1.js → createAdapters-4c8mBiD5.js} +2 -11
- package/dist/esm/sdk/{createAdapters-Dv7ZJPf1.js.map → createAdapters-4c8mBiD5.js.map} +1 -1
- package/dist/esm/sdk/{createAdapters-1Hmc1vVC.js → createAdapters-DF32SIZa.js} +1 -10
- package/dist/esm/sdk/{defaultConfigs-BmCU1_qI.js → defaultConfigs-BQqiXif-.js} +3 -1
- package/dist/esm/sdk/{emailRecovery-4J-g9tlY.js → emailRecovery-C0LSDleV.js} +5 -5
- package/dist/esm/sdk/{getDeviceNumber-f8bfPB9U.js → getDeviceNumber-WiNzKx1x.js} +4 -2
- package/dist/esm/sdk/{getDeviceNumber-f8bfPB9U.js.map → getDeviceNumber-WiNzKx1x.js.map} +1 -1
- package/dist/esm/sdk/{linkDevice-C98klpcE.js → linkDevice-Ds1GNIDk.js} +4 -4
- package/dist/esm/sdk/{localOnly-40zxrBMm.js → localOnly-COpDBMkm.js} +2 -2
- package/dist/esm/sdk/{localOnly-40zxrBMm.js.map → localOnly-COpDBMkm.js.map} +1 -1
- package/dist/esm/sdk/{localOnly-BZPBj14l.js → localOnly-DQQuqgjJ.js} +1 -1
- package/dist/esm/sdk/{login-DnROv3eA.js → login-BKhTuGcy.js} +3 -3
- package/dist/esm/sdk/offline-export-app.js +29 -19
- package/dist/esm/sdk/offline-export-app.js.map +1 -1
- package/dist/esm/sdk/{registration-BP9M3tE1.js → registration-BR2G9tz_.js} +59 -68
- package/dist/esm/sdk/{registration-MrAOC8Ub.js → registration-R70lvG_o.js} +60 -69
- package/dist/esm/sdk/registration-R70lvG_o.js.map +1 -0
- package/dist/esm/sdk/{router-BEGGuWaB.js → router-2aGn-CTp.js} +1 -1
- package/dist/esm/sdk/{rpcCalls-CMzj_Va_.js → rpcCalls-BPI0icZG.js} +2 -2
- package/dist/esm/sdk/{rpcCalls-B44MZora.js → rpcCalls-BW3M_q3-.js} +1 -1
- package/dist/esm/sdk/{scanDevice-Cp-r-Z2T.js → scanDevice-BBSehlMx.js} +4 -4
- package/dist/esm/sdk/{syncAccount-CqWCmBVb.js → syncAccount-DEZHBiRa.js} +4 -4
- package/dist/esm/sdk/{syncAccount-Dt5jJbEB.js → syncAccount-DHKtl-xh.js} +2 -2
- package/dist/esm/sdk/{transactions-DAZrPW-6.js → transactions-Cg1TIUyK.js} +76 -77
- package/dist/esm/sdk/{transactions-CrjP8yPD.js → transactions-CxsklyCK.js} +77 -78
- package/dist/esm/sdk/transactions-CxsklyCK.js.map +1 -0
- package/dist/esm/sdk/wallet-iframe-host.js +116 -94
- package/dist/esm/server/core/AuthService.js +49 -6
- package/dist/esm/server/core/AuthService.js.map +1 -1
- package/dist/esm/server/sdk/src/core/defaultConfigs.js.map +1 -1
- package/dist/esm/wasm_vrf_worker/pkg/wasm_vrf_worker_bg.wasm +0 -0
- package/dist/types/src/__tests__/setup/bootstrap.d.ts.map +1 -1
- package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts +1 -1
- package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts.map +1 -1
- package/dist/types/src/core/TatchiPasskey/faucets/createAccountRelayServer.d.ts +6 -6
- package/dist/types/src/core/TatchiPasskey/faucets/createAccountRelayServer.d.ts.map +1 -1
- package/dist/types/src/core/TatchiPasskey/registration.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.d.ts +0 -5
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/session.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/handleSecureConfirmRequest.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/index.d.ts +1 -1
- package/dist/types/src/core/WebAuthnManager/index.d.ts.map +1 -1
- package/dist/types/src/core/defaultConfigs.d.ts.map +1 -1
- package/dist/types/src/react/components/PasskeyAuthMenu/preload.d.ts.map +1 -1
- package/dist/types/src/react/components/PasskeyAuthMenu/shell.d.ts.map +1 -1
- package/dist/types/src/react/components/PasskeyAuthMenu/skeleton.d.ts +1 -1
- package/dist/types/src/react/components/PasskeyAuthMenu/skeleton.d.ts.map +1 -1
- package/dist/types/src/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.d.ts.map +1 -1
- package/dist/types/src/server/core/AuthService.d.ts.map +1 -1
- package/dist/workers/offline-export-sw.js +156 -1
- package/dist/workers/wasm_vrf_worker_bg.wasm +0 -0
- package/dist/workers/web3authn-signer.worker.js +1360 -2
- package/dist/workers/web3authn-vrf.worker.js +2857 -2
- package/package.json +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/PasskeyAuthMenu-CRlobBrN.css.map +0 -1
- package/dist/esm/react/components/PasskeyAuthMenu/PasskeyAuthMenu-D2VHZ04W.css.map +0 -1
- package/dist/esm/sdk/registration-MrAOC8Ub.js.map +0 -1
- package/dist/esm/sdk/transactions-CrjP8yPD.js.map +0 -1
|
@@ -4,18 +4,18 @@ import { ActionType } from "./actions-fHadejPs.js";
|
|
|
4
4
|
import { DEFAULT_WAIT_STATUS } from "./rpc-Dq3ioE9T.js";
|
|
5
5
|
import "./signer-worker-DK847sXj.js";
|
|
6
6
|
import "./base64-dqpWgddX.js";
|
|
7
|
-
import { createNearKeypair, getLoginSession } from "./login-
|
|
7
|
+
import { createNearKeypair, getLoginSession } from "./login-BKhTuGcy.js";
|
|
8
8
|
import "./vrf-worker-BzQsJ5BW.js";
|
|
9
9
|
import { DeviceLinkingPhase, DeviceLinkingStatus } from "./sdkSentEvents-CzAZBFjP.js";
|
|
10
10
|
import { DEVICE_LINKING_CONFIG, DeviceLinkingError, DeviceLinkingErrorCode } from "./config-BbNXtVtu.js";
|
|
11
11
|
import "./accountIds-DVDhXwVA.js";
|
|
12
12
|
import "./intentDigest-yivVENNK.js";
|
|
13
13
|
import "./errors-DevlT39D.js";
|
|
14
|
-
import { IndexedDBManager, buildThresholdEd25519Participants2pV1 } from "./IndexedDBManager-
|
|
15
|
-
import "./defaultConfigs-
|
|
14
|
+
import { IndexedDBManager, buildThresholdEd25519Participants2pV1 } from "./IndexedDBManager-CmdN7smS.js";
|
|
15
|
+
import "./defaultConfigs-BQqiXif-.js";
|
|
16
16
|
import "./safari-fallbacks-BcMFntiP.js";
|
|
17
17
|
import "./touchIdPrompt-JPhrOx8o.js";
|
|
18
|
-
import { getDeviceLinkingAccountContractCall, thresholdEd25519KeygenFromRegistrationTx } from "./rpcCalls-
|
|
18
|
+
import { getDeviceLinkingAccountContractCall, thresholdEd25519KeygenFromRegistrationTx } from "./rpcCalls-BW3M_q3-.js";
|
|
19
19
|
import { parseDeviceNumber } from "./getDeviceNumber-y3mMtky6.js";
|
|
20
20
|
|
|
21
21
|
//#region src/core/TatchiPasskey/linkDevice.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./validation-hUZgySTx.js";
|
|
2
2
|
import { ERROR_MESSAGES, SecureConfirmationType, createRandomVRFChallenge, errorMessage, getIntentDigest, getNearAccountId, isUserCancelledSecureConfirm } from "./collectAuthenticationCredentialForVrfChallenge-C9p90e5Z.js";
|
|
3
|
-
import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-
|
|
3
|
+
import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-4c8mBiD5.js";
|
|
4
4
|
import { W3A_EXPORT_VIEWER_IFRAME_ID, addLitCancelListener } from "./css-loader-DWW-_Vli.js";
|
|
5
5
|
import { __isWalletIframeHostMode } from "./host-mode-CgqmYAwZ.js";
|
|
6
6
|
|
|
@@ -130,4 +130,4 @@ async function handleLocalOnlyFlow(ctx, request, worker, opts) {
|
|
|
130
130
|
|
|
131
131
|
//#endregion
|
|
132
132
|
export { handleLocalOnlyFlow };
|
|
133
|
-
//# sourceMappingURL=localOnly-
|
|
133
|
+
//# sourceMappingURL=localOnly-COpDBMkm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localOnly-40zxrBMm.js","names":["TAG_LOADERS: Record<string, () => Promise<unknown>>","removeCancelListener: (() => void) | undefined","err: unknown","uiVrfChallenge: Partial<VRFChallenge>"],"sources":["../../../src/core/WebAuthnManager/LitComponents/ensure-defined.ts","../../../src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.ts"],"sourcesContent":["/**\n * Consolidated loaders for known W3A custom elements that may be used across runtimes.\n * This allows dev tooling to auto-ensure definitions for common elements when possible.\n */\nimport { W3A_EXPORT_VIEWER_IFRAME_ID } from './tags';\n\nexport const TAG_LOADERS: Record<string, () => Promise<unknown>> = {\n [W3A_EXPORT_VIEWER_IFRAME_ID]: () => import('./ExportPrivateKey/iframe-host'),\n};\n\n/**\n * Small utility that guarantees a custom element definition exists in the\n * current runtime before creating/using it. If the tag is not yet defined,\n * it runs the provided dynamic import loader to execute the module that calls\n * customElements.define().\n */\nexport async function ensureDefined(tag: string, loader: () => Promise<unknown>): Promise<void> {\n try {\n if (!customElements.get(tag)) {\n await loader();\n }\n } catch {\n // Best-effort; downstream calls will still throw useful errors if missing\n }\n}\n\n/** Attempt to ensure a known W3A element by tag; returns true if a loader ran. */\nexport async function ensureKnownW3aElement(tag: string): Promise<boolean> {\n try {\n const t = (tag || '').toLowerCase();\n const loader = TAG_LOADERS[t];\n if (!loader) return false;\n await ensureDefined(t, loader);\n return true;\n } catch {\n return false;\n }\n}\n","import type { VrfWorkerManagerContext } from '../../';\nimport type { ConfirmationConfig } from '../../../../types/signer-worker';\nimport {\n SecureConfirmationType,\n TransactionSummary,\n LocalOnlySecureConfirmRequest,\n type ShowSecurePrivateKeyUiPayload,\n} from '../types';\nimport { VRFChallenge } from '../../../../types';\nimport { createRandomVRFChallenge } from '../../../../types/vrf-worker';\nimport { addLitCancelListener } from '../../../LitComponents/lit-events';\nimport { ensureDefined } from '../../../LitComponents/ensure-defined';\nimport { W3A_EXPORT_VIEWER_IFRAME_ID } from '../../../LitComponents/tags';\nimport { __isWalletIframeHostMode } from '../../../../WalletIframe/host-mode';\nimport type { ExportViewerIframeElement } from '../../../LitComponents/ExportPrivateKey/iframe-host';\nimport {\n getNearAccountId,\n getIntentDigest,\n isUserCancelledSecureConfirm,\n ERROR_MESSAGES,\n} from './index';\nimport { errorMessage } from '../../../../../utils/errors';\nimport { createConfirmSession } from '../adapters/session';\nimport { createConfirmTxFlowAdapters } from '../adapters/createAdapters';\n\nasync function mountExportViewer(\n payload: ShowSecurePrivateKeyUiPayload,\n confirmationConfig: ConfirmationConfig,\n): Promise<void> {\n await ensureDefined(W3A_EXPORT_VIEWER_IFRAME_ID, () => import('../../../LitComponents/ExportPrivateKey/iframe-host'));\n const host = document.createElement(W3A_EXPORT_VIEWER_IFRAME_ID) as ExportViewerIframeElement;\n host.theme = payload.theme || confirmationConfig.theme || 'dark';\n host.variant = payload.variant || ((confirmationConfig.uiMode === 'drawer') ? 'drawer' : 'modal');\n host.accountId = payload.nearAccountId;\n host.publicKey = payload.publicKey;\n host.privateKey = payload.privateKey;\n host.loading = false;\n\n window.parent?.postMessage({ type: 'WALLET_UI_OPENED' }, '*');\n document.body.appendChild(host);\n\n let removeCancelListener: (() => void) | undefined;\n removeCancelListener = addLitCancelListener(host, () => {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n removeCancelListener?.();\n host.remove();\n }, { once: true });\n}\n\nexport async function handleLocalOnlyFlow(\n ctx: VrfWorkerManagerContext,\n request: LocalOnlySecureConfirmRequest,\n worker: Worker,\n opts: { confirmationConfig: ConfirmationConfig; transactionSummary: TransactionSummary },\n): Promise<void> {\n\n const { confirmationConfig, transactionSummary } = opts;\n const adapters = createConfirmTxFlowAdapters(ctx);\n const session = createConfirmSession({\n adapters,\n worker,\n request,\n confirmationConfig,\n transactionSummary,\n });\n const nearAccountId = getNearAccountId(request);\n\n // SHOW_SECURE_PRIVATE_KEY_UI: purely visual; keep UI open and return confirmed immediately\n if (request.type === SecureConfirmationType.SHOW_SECURE_PRIVATE_KEY_UI) {\n try {\n await mountExportViewer(request.payload as ShowSecurePrivateKeyUiPayload, confirmationConfig);\n // Keep viewer open; do not close here.\n session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: true,\n });\n return;\n } catch (err: unknown) {\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: errorMessage(err) || 'Failed to render export UI',\n });\n }\n }\n\n // DECRYPT_PRIVATE_KEY_WITH_PRF: collect an authentication credential (with PRF extension results)\n // and return it to the VRF worker; VRF worker extracts PRF outputs internally.\n if (request.type === SecureConfirmationType.DECRYPT_PRIVATE_KEY_WITH_PRF) {\n if (__isWalletIframeHostMode()) {\n confirmationConfig.uiMode = 'skip';\n confirmationConfig.behavior = 'autoProceed';\n }\n\n const vrfChallenge = createRandomVRFChallenge() as VRFChallenge;\n // When this flow is initiated via worker→host messaging (wallet-iframe mode),\n // there is typically no transient user activation. If confirmationConfig chooses\n // a visible UI mode (modal/drawer), prompt first so the click lands inside the\n // wallet iframe and grants activation for the subsequent WebAuthn call.\n if (confirmationConfig.uiMode !== 'skip') {\n // Provide a sensible title/body for non-transaction flows so the confirmer\n // doesn't fall back to \"Register with Passkey\" (txSigningRequests is empty).\n try {\n const op = (transactionSummary as any)?.operation as string | undefined;\n const warning = (transactionSummary as any)?.warning as string | undefined;\n if (!transactionSummary.title) transactionSummary.title = op || 'Decrypt Private Key';\n if (!transactionSummary.body) {\n transactionSummary.body = warning || 'Confirm to authenticate with your passkey.';\n }\n } catch { }\n\n const uiVrfChallenge: Partial<VRFChallenge> = (() => {\n try {\n return {\n ...vrfChallenge,\n userId: nearAccountId,\n rpId: adapters.vrf.getRpId(),\n } as Partial<VRFChallenge>;\n } catch {\n return { ...vrfChallenge, userId: nearAccountId } as Partial<VRFChallenge>;\n }\n })();\n\n const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });\n if (!confirmed) {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: uiError,\n });\n }\n }\n try {\n const credential = await adapters.webauthn.collectAuthenticationCredentialWithPRF({\n nearAccountId,\n vrfChallenge,\n // Offline export / local decrypt needs both PRF outputs so the VRF worker can\n // recover/derive key material without requiring a pre-existing VRF session.\n includeSecondPrfOutput: true,\n });\n // No modal to keep open; export viewer will be shown by a subsequent request.\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: true,\n credential,\n });\n\n } catch (err: unknown) {\n const cancelled = isUserCancelledSecureConfirm(err);\n if (cancelled) {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n }\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: cancelled ? ERROR_MESSAGES.cancelled : (errorMessage(err) || ERROR_MESSAGES.collectCredentialsFailed),\n });\n }\n }\n}\n"],"mappings":";;;;;;;AAMA,MAAaA,cAAsD,GAChE,oCAAoC,OAAO;;;;;;;AAS9C,eAAsB,cAAc,KAAa,QAA+C;AAC9F,KAAI;AACF,MAAI,CAAC,eAAe,IAAI,KACtB,OAAM;SAEF;;;;;ACIV,eAAe,kBACb,SACA,oBACe;AACf,OAAM,cAAc,mCAAmC,OAAO;CAC9D,MAAM,OAAO,SAAS,cAAc;AACpC,MAAK,QAAQ,QAAQ,SAAS,mBAAmB,SAAS;AAC1D,MAAK,UAAU,QAAQ,YAAa,mBAAmB,WAAW,WAAY,WAAW;AACzF,MAAK,YAAY,QAAQ;AACzB,MAAK,YAAY,QAAQ;AACzB,MAAK,aAAa,QAAQ;AAC1B,MAAK,UAAU;AAEf,QAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AACzD,UAAS,KAAK,YAAY;CAE1B,IAAIC;AACJ,wBAAuB,qBAAqB,YAAY;AACtD,SAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AACzD;AACA,OAAK;IACJ,EAAE,MAAM;;AAGb,eAAsB,oBACpB,KACA,SACA,QACA,MACe;CAEf,MAAM,EAAE,oBAAoB,uBAAuB;CACnD,MAAM,WAAW,4BAA4B;CAC7C,MAAM,UAAU,qBAAqB;EACnC;EACA;EACA;EACA;EACA;;CAEF,MAAM,gBAAgB,iBAAiB;AAGvC,KAAI,QAAQ,SAAS,uBAAuB,2BAC1C,KAAI;AACF,QAAM,kBAAkB,QAAQ,SAA0C;AAE1E,UAAQ,qBAAqB;GAC3B,WAAW,QAAQ;GACnB,cAAc,gBAAgB;GAC9B,WAAW;;AAEb;UACOC,KAAc;AACrB,SAAO,QAAQ,qBAAqB;GAClC,WAAW,QAAQ;GACnB,cAAc,gBAAgB;GAC9B,WAAW;GACX,OAAO,aAAa,QAAQ;;;AAOlC,KAAI,QAAQ,SAAS,uBAAuB,8BAA8B;AACxE,MAAI,4BAA4B;AAC9B,sBAAmB,SAAS;AAC5B,sBAAmB,WAAW;;EAGhC,MAAM,eAAe;AAKrB,MAAI,mBAAmB,WAAW,QAAQ;AAGxC,OAAI;IACF,MAAM,KAAM,oBAA4B;IACxC,MAAM,UAAW,oBAA4B;AAC7C,QAAI,CAAC,mBAAmB,MAAO,oBAAmB,QAAQ,MAAM;AAChE,QAAI,CAAC,mBAAmB,KACtB,oBAAmB,OAAO,WAAW;WAEjC;GAER,MAAMC,wBAA+C;AACnD,QAAI;AACF,YAAO;MACL,GAAG;MACH,QAAQ;MACR,MAAM,SAAS,IAAI;;YAEf;AACN,YAAO;MAAE,GAAG;MAAc,QAAQ;;;;GAItC,MAAM,EAAE,WAAW,OAAO,YAAY,MAAM,QAAQ,WAAW,EAAE,cAAc;AAC/E,OAAI,CAAC,WAAW;AACd,WAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AACzD,WAAO,QAAQ,qBAAqB;KAClC,WAAW,QAAQ;KACnB,cAAc,gBAAgB;KAC9B,WAAW;KACX,OAAO;;;;AAIb,MAAI;GACF,MAAM,aAAa,MAAM,SAAS,SAAS,uCAAuC;IAChF;IACA;IAGA,wBAAwB;;AAG1B,UAAO,QAAQ,qBAAqB;IAClC,WAAW,QAAQ;IACnB,cAAc,gBAAgB;IAC9B,WAAW;IACX;;WAGKD,KAAc;GACrB,MAAM,YAAY,6BAA6B;AAC/C,OAAI,UACF,QAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AAE3D,UAAO,QAAQ,qBAAqB;IAClC,WAAW,QAAQ;IACnB,cAAc,gBAAgB;IAC9B,WAAW;IACX,OAAO,YAAY,eAAe,YAAa,aAAa,QAAQ,eAAe"}
|
|
1
|
+
{"version":3,"file":"localOnly-COpDBMkm.js","names":["TAG_LOADERS: Record<string, () => Promise<unknown>>","removeCancelListener: (() => void) | undefined","err: unknown","uiVrfChallenge: Partial<VRFChallenge>"],"sources":["../../../src/core/WebAuthnManager/LitComponents/ensure-defined.ts","../../../src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.ts"],"sourcesContent":["/**\n * Consolidated loaders for known W3A custom elements that may be used across runtimes.\n * This allows dev tooling to auto-ensure definitions for common elements when possible.\n */\nimport { W3A_EXPORT_VIEWER_IFRAME_ID } from './tags';\n\nexport const TAG_LOADERS: Record<string, () => Promise<unknown>> = {\n [W3A_EXPORT_VIEWER_IFRAME_ID]: () => import('./ExportPrivateKey/iframe-host'),\n};\n\n/**\n * Small utility that guarantees a custom element definition exists in the\n * current runtime before creating/using it. If the tag is not yet defined,\n * it runs the provided dynamic import loader to execute the module that calls\n * customElements.define().\n */\nexport async function ensureDefined(tag: string, loader: () => Promise<unknown>): Promise<void> {\n try {\n if (!customElements.get(tag)) {\n await loader();\n }\n } catch {\n // Best-effort; downstream calls will still throw useful errors if missing\n }\n}\n\n/** Attempt to ensure a known W3A element by tag; returns true if a loader ran. */\nexport async function ensureKnownW3aElement(tag: string): Promise<boolean> {\n try {\n const t = (tag || '').toLowerCase();\n const loader = TAG_LOADERS[t];\n if (!loader) return false;\n await ensureDefined(t, loader);\n return true;\n } catch {\n return false;\n }\n}\n","import type { VrfWorkerManagerContext } from '../../';\nimport type { ConfirmationConfig } from '../../../../types/signer-worker';\nimport {\n SecureConfirmationType,\n TransactionSummary,\n LocalOnlySecureConfirmRequest,\n type ShowSecurePrivateKeyUiPayload,\n} from '../types';\nimport { VRFChallenge } from '../../../../types';\nimport { createRandomVRFChallenge } from '../../../../types/vrf-worker';\nimport { addLitCancelListener } from '../../../LitComponents/lit-events';\nimport { ensureDefined } from '../../../LitComponents/ensure-defined';\nimport { W3A_EXPORT_VIEWER_IFRAME_ID } from '../../../LitComponents/tags';\nimport { __isWalletIframeHostMode } from '../../../../WalletIframe/host-mode';\nimport type { ExportViewerIframeElement } from '../../../LitComponents/ExportPrivateKey/iframe-host';\nimport {\n getNearAccountId,\n getIntentDigest,\n isUserCancelledSecureConfirm,\n ERROR_MESSAGES,\n} from './index';\nimport { errorMessage } from '../../../../../utils/errors';\nimport { createConfirmSession } from '../adapters/session';\nimport { createConfirmTxFlowAdapters } from '../adapters/createAdapters';\n\nasync function mountExportViewer(\n payload: ShowSecurePrivateKeyUiPayload,\n confirmationConfig: ConfirmationConfig,\n): Promise<void> {\n await ensureDefined(W3A_EXPORT_VIEWER_IFRAME_ID, () => import('../../../LitComponents/ExportPrivateKey/iframe-host'));\n const host = document.createElement(W3A_EXPORT_VIEWER_IFRAME_ID) as ExportViewerIframeElement;\n host.theme = payload.theme || confirmationConfig.theme || 'dark';\n host.variant = payload.variant || ((confirmationConfig.uiMode === 'drawer') ? 'drawer' : 'modal');\n host.accountId = payload.nearAccountId;\n host.publicKey = payload.publicKey;\n host.privateKey = payload.privateKey;\n host.loading = false;\n\n window.parent?.postMessage({ type: 'WALLET_UI_OPENED' }, '*');\n document.body.appendChild(host);\n\n let removeCancelListener: (() => void) | undefined;\n removeCancelListener = addLitCancelListener(host, () => {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n removeCancelListener?.();\n host.remove();\n }, { once: true });\n}\n\nexport async function handleLocalOnlyFlow(\n ctx: VrfWorkerManagerContext,\n request: LocalOnlySecureConfirmRequest,\n worker: Worker,\n opts: { confirmationConfig: ConfirmationConfig; transactionSummary: TransactionSummary },\n): Promise<void> {\n\n const { confirmationConfig, transactionSummary } = opts;\n const adapters = createConfirmTxFlowAdapters(ctx);\n const session = createConfirmSession({\n adapters,\n worker,\n request,\n confirmationConfig,\n transactionSummary,\n });\n const nearAccountId = getNearAccountId(request);\n\n // SHOW_SECURE_PRIVATE_KEY_UI: purely visual; keep UI open and return confirmed immediately\n if (request.type === SecureConfirmationType.SHOW_SECURE_PRIVATE_KEY_UI) {\n try {\n await mountExportViewer(request.payload as ShowSecurePrivateKeyUiPayload, confirmationConfig);\n // Keep viewer open; do not close here.\n session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: true,\n });\n return;\n } catch (err: unknown) {\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: errorMessage(err) || 'Failed to render export UI',\n });\n }\n }\n\n // DECRYPT_PRIVATE_KEY_WITH_PRF: collect an authentication credential (with PRF extension results)\n // and return it to the VRF worker; VRF worker extracts PRF outputs internally.\n if (request.type === SecureConfirmationType.DECRYPT_PRIVATE_KEY_WITH_PRF) {\n if (__isWalletIframeHostMode()) {\n confirmationConfig.uiMode = 'skip';\n confirmationConfig.behavior = 'autoProceed';\n }\n\n const vrfChallenge = createRandomVRFChallenge() as VRFChallenge;\n // When this flow is initiated via worker→host messaging (wallet-iframe mode),\n // there is typically no transient user activation. If confirmationConfig chooses\n // a visible UI mode (modal/drawer), prompt first so the click lands inside the\n // wallet iframe and grants activation for the subsequent WebAuthn call.\n if (confirmationConfig.uiMode !== 'skip') {\n // Provide a sensible title/body for non-transaction flows so the confirmer\n // doesn't fall back to \"Register with Passkey\" (txSigningRequests is empty).\n try {\n const op = (transactionSummary as any)?.operation as string | undefined;\n const warning = (transactionSummary as any)?.warning as string | undefined;\n if (!transactionSummary.title) transactionSummary.title = op || 'Decrypt Private Key';\n if (!transactionSummary.body) {\n transactionSummary.body = warning || 'Confirm to authenticate with your passkey.';\n }\n } catch { }\n\n const uiVrfChallenge: Partial<VRFChallenge> = (() => {\n try {\n return {\n ...vrfChallenge,\n userId: nearAccountId,\n rpId: adapters.vrf.getRpId(),\n } as Partial<VRFChallenge>;\n } catch {\n return { ...vrfChallenge, userId: nearAccountId } as Partial<VRFChallenge>;\n }\n })();\n\n const { confirmed, error: uiError } = await session.promptUser({ vrfChallenge: uiVrfChallenge });\n if (!confirmed) {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: uiError,\n });\n }\n }\n try {\n const credential = await adapters.webauthn.collectAuthenticationCredentialWithPRF({\n nearAccountId,\n vrfChallenge,\n // Offline export / local decrypt needs both PRF outputs so the VRF worker can\n // recover/derive key material without requiring a pre-existing VRF session.\n includeSecondPrfOutput: true,\n });\n // No modal to keep open; export viewer will be shown by a subsequent request.\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: true,\n credential,\n });\n\n } catch (err: unknown) {\n const cancelled = isUserCancelledSecureConfirm(err);\n if (cancelled) {\n window.parent?.postMessage({ type: 'WALLET_UI_CLOSED' }, '*');\n }\n return session.confirmAndCloseModal({\n requestId: request.requestId,\n intentDigest: getIntentDigest(request),\n confirmed: false,\n error: cancelled ? ERROR_MESSAGES.cancelled : (errorMessage(err) || ERROR_MESSAGES.collectCredentialsFailed),\n });\n }\n }\n}\n"],"mappings":";;;;;;;AAMA,MAAaA,cAAsD,GAChE,oCAAoC,OAAO;;;;;;;AAS9C,eAAsB,cAAc,KAAa,QAA+C;AAC9F,KAAI;AACF,MAAI,CAAC,eAAe,IAAI,KACtB,OAAM;SAEF;;;;;ACIV,eAAe,kBACb,SACA,oBACe;AACf,OAAM,cAAc,mCAAmC,OAAO;CAC9D,MAAM,OAAO,SAAS,cAAc;AACpC,MAAK,QAAQ,QAAQ,SAAS,mBAAmB,SAAS;AAC1D,MAAK,UAAU,QAAQ,YAAa,mBAAmB,WAAW,WAAY,WAAW;AACzF,MAAK,YAAY,QAAQ;AACzB,MAAK,YAAY,QAAQ;AACzB,MAAK,aAAa,QAAQ;AAC1B,MAAK,UAAU;AAEf,QAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AACzD,UAAS,KAAK,YAAY;CAE1B,IAAIC;AACJ,wBAAuB,qBAAqB,YAAY;AACtD,SAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AACzD;AACA,OAAK;IACJ,EAAE,MAAM;;AAGb,eAAsB,oBACpB,KACA,SACA,QACA,MACe;CAEf,MAAM,EAAE,oBAAoB,uBAAuB;CACnD,MAAM,WAAW,4BAA4B;CAC7C,MAAM,UAAU,qBAAqB;EACnC;EACA;EACA;EACA;EACA;;CAEF,MAAM,gBAAgB,iBAAiB;AAGvC,KAAI,QAAQ,SAAS,uBAAuB,2BAC1C,KAAI;AACF,QAAM,kBAAkB,QAAQ,SAA0C;AAE1E,UAAQ,qBAAqB;GAC3B,WAAW,QAAQ;GACnB,cAAc,gBAAgB;GAC9B,WAAW;;AAEb;UACOC,KAAc;AACrB,SAAO,QAAQ,qBAAqB;GAClC,WAAW,QAAQ;GACnB,cAAc,gBAAgB;GAC9B,WAAW;GACX,OAAO,aAAa,QAAQ;;;AAOlC,KAAI,QAAQ,SAAS,uBAAuB,8BAA8B;AACxE,MAAI,4BAA4B;AAC9B,sBAAmB,SAAS;AAC5B,sBAAmB,WAAW;;EAGhC,MAAM,eAAe;AAKrB,MAAI,mBAAmB,WAAW,QAAQ;AAGxC,OAAI;IACF,MAAM,KAAM,oBAA4B;IACxC,MAAM,UAAW,oBAA4B;AAC7C,QAAI,CAAC,mBAAmB,MAAO,oBAAmB,QAAQ,MAAM;AAChE,QAAI,CAAC,mBAAmB,KACtB,oBAAmB,OAAO,WAAW;WAEjC;GAER,MAAMC,wBAA+C;AACnD,QAAI;AACF,YAAO;MACL,GAAG;MACH,QAAQ;MACR,MAAM,SAAS,IAAI;;YAEf;AACN,YAAO;MAAE,GAAG;MAAc,QAAQ;;;;GAItC,MAAM,EAAE,WAAW,OAAO,YAAY,MAAM,QAAQ,WAAW,EAAE,cAAc;AAC/E,OAAI,CAAC,WAAW;AACd,WAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AACzD,WAAO,QAAQ,qBAAqB;KAClC,WAAW,QAAQ;KACnB,cAAc,gBAAgB;KAC9B,WAAW;KACX,OAAO;;;;AAIb,MAAI;GACF,MAAM,aAAa,MAAM,SAAS,SAAS,uCAAuC;IAChF;IACA;IAGA,wBAAwB;;AAG1B,UAAO,QAAQ,qBAAqB;IAClC,WAAW,QAAQ;IACnB,cAAc,gBAAgB;IAC9B,WAAW;IACX;;WAGKD,KAAc;GACrB,MAAM,YAAY,6BAA6B;AAC/C,OAAI,UACF,QAAO,QAAQ,YAAY,EAAE,MAAM,sBAAsB;AAE3D,UAAO,QAAQ,qBAAqB;IAClC,WAAW,QAAQ;IACnB,cAAc,gBAAgB;IAC9B,WAAW;IACX,OAAO,YAAY,eAAe,YAAa,aAAa,QAAQ,eAAe"}
|
|
@@ -14,7 +14,7 @@ import { errorMessage } from "./errors-DevlT39D.js";
|
|
|
14
14
|
import "./safari-fallbacks-BcMFntiP.js";
|
|
15
15
|
import "./touchIdPrompt-JPhrOx8o.js";
|
|
16
16
|
import { ERROR_MESSAGES, SecureConfirmationType, getIntentDigest, getNearAccountId, isUserCancelledSecureConfirm } from "./collectAuthenticationCredentialForVrfChallenge-DqzPzwvU.js";
|
|
17
|
-
import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-
|
|
17
|
+
import { createConfirmSession, createConfirmTxFlowAdapters } from "./createAdapters-DF32SIZa.js";
|
|
18
18
|
|
|
19
19
|
//#region src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.ts
|
|
20
20
|
async function mountExportViewer(payload, confirmationConfig) {
|
|
@@ -4,10 +4,10 @@ import { createRandomVRFChallenge } from "./vrf-worker-BzQsJ5BW.js";
|
|
|
4
4
|
import { LoginPhase, LoginStatus } from "./sdkSentEvents-CzAZBFjP.js";
|
|
5
5
|
import { alphabetizeStringify, computeLoginIntentDigest, sha256BytesUtf8 } from "./intentDigest-yivVENNK.js";
|
|
6
6
|
import { getUserFriendlyErrorMessage } from "./errors-DevlT39D.js";
|
|
7
|
-
import { IndexedDBManager, normalizeThresholdEd25519ParticipantIds } from "./IndexedDBManager-
|
|
7
|
+
import { IndexedDBManager, normalizeThresholdEd25519ParticipantIds } from "./IndexedDBManager-CmdN7smS.js";
|
|
8
8
|
import { removePrfOutputGuard } from "./safari-fallbacks-BcMFntiP.js";
|
|
9
9
|
import { authenticatorsToAllowCredentials } from "./touchIdPrompt-JPhrOx8o.js";
|
|
10
|
-
import { verifyAuthenticationResponse } from "./rpcCalls-
|
|
10
|
+
import { verifyAuthenticationResponse } from "./rpcCalls-BW3M_q3-.js";
|
|
11
11
|
import { parseDeviceNumber } from "./getDeviceNumber-y3mMtky6.js";
|
|
12
12
|
|
|
13
13
|
//#region ../node_modules/.pnpm/base-x@5.0.1/node_modules/base-x/src/esm/index.js
|
|
@@ -1319,7 +1319,7 @@ async function handleLoginUnlockVRF(context, nearAccountId, onEvent, onError, af
|
|
|
1319
1319
|
const relayerUrl$1 = context.configs.relayer?.url;
|
|
1320
1320
|
if (usedFallbackTouchId && relayerUrl$1) {
|
|
1321
1321
|
const refreshed = await webAuthnManager.shamir3PassEncryptCurrentVrfKeypair();
|
|
1322
|
-
await webAuthnManager.updateServerEncryptedVrfKeypair(nearAccountId, refreshed);
|
|
1322
|
+
await webAuthnManager.updateServerEncryptedVrfKeypair(nearAccountId, refreshed, activeDeviceNumber);
|
|
1323
1323
|
}
|
|
1324
1324
|
} catch (refreshErr) {
|
|
1325
1325
|
console.warn("Non-fatal: Failed to refresh serverEncryptedVrfKeypair:", refreshErr?.message || refreshErr);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assertString, ensureEd25519Prefix, isFunction, isNumber, isObject, isString, stripTrailingSlashes, toOptionalTrimmedString, toTrimmedString, validateNearAccountId } from "./validation-hUZgySTx.js";
|
|
2
2
|
import { ActionType, SecureConfirmMessageType, SecureConfirmationType, TouchIdPrompt, base64Decode, base64Encode, base64UrlDecode, collectAuthenticationCredentialForVrfChallenge, computeThresholdEd25519KeygenIntentDigest, computeUiIntentDigestFromTxs, createRandomVRFChallenge, errorMessage, getIntentDigest, normalizeRegistrationCredential, orderActionForDigest, parseTransactionSummary, removePrfOutputGuard, sanitizeForPostMessage, sendConfirmResponse, serializeRegistrationCredentialWithPRF, toAccountId, toActionArgsWasm, toError, validateActionArgsWasm, validateVRFChallenge } from "./collectAuthenticationCredentialForVrfChallenge-C9p90e5Z.js";
|
|
3
|
-
import { DEFAULT_CONFIRMATION_CONFIG, DEFAULT_SIGNING_MODE, DEFAULT_THRESHOLD_BEHAVIOR, INTERNAL_WORKER_REQUEST_TYPE_SIGN_ADD_KEY_THRESHOLD_PUBLIC_KEY_NO_PROMPT, PASSKEY_MANAGER_DEFAULT_CONFIGS, THRESHOLD_ED25519_CLIENT_PARTICIPANT_ID, THRESHOLD_ED25519_RELAYER_PARTICIPANT_ID, UserVerificationPolicy as UserVerificationPolicy$1, WorkerRequestType, WorkerResponseType, buildConfigsFromEnv, coerceSignerMode, getLastLoggedInDeviceNumber, getThresholdBehaviorFromSignerMode, isDecryptPrivateKeyWithPrfSuccess, isDeriveNearKeypairAndEncryptSuccess, isExtractCosePublicKeySuccess, isRecoverKeypairFromPasskeySuccess, isRegisterDevice2WithDerivedKeySuccess, isSignAddKeyThresholdPublicKeyNoPromptSuccess, isSignDelegateActionSuccess, isSignNep413MessageSuccess, isSignTransactionsWithActionsSuccess, isWorkerError, isWorkerProgress, isWorkerSuccess, mergeSignerMode } from "./getDeviceNumber-
|
|
3
|
+
import { DEFAULT_CONFIRMATION_CONFIG, DEFAULT_SIGNING_MODE, DEFAULT_THRESHOLD_BEHAVIOR, INTERNAL_WORKER_REQUEST_TYPE_SIGN_ADD_KEY_THRESHOLD_PUBLIC_KEY_NO_PROMPT, PASSKEY_MANAGER_DEFAULT_CONFIGS, THRESHOLD_ED25519_CLIENT_PARTICIPANT_ID, THRESHOLD_ED25519_RELAYER_PARTICIPANT_ID, UserVerificationPolicy as UserVerificationPolicy$1, WorkerRequestType, WorkerResponseType, buildConfigsFromEnv, coerceSignerMode, getLastLoggedInDeviceNumber, getThresholdBehaviorFromSignerMode, isDecryptPrivateKeyWithPrfSuccess, isDeriveNearKeypairAndEncryptSuccess, isExtractCosePublicKeySuccess, isRecoverKeypairFromPasskeySuccess, isRegisterDevice2WithDerivedKeySuccess, isSignAddKeyThresholdPublicKeyNoPromptSuccess, isSignDelegateActionSuccess, isSignNep413MessageSuccess, isSignTransactionsWithActionsSuccess, isWorkerError, isWorkerProgress, isWorkerSuccess, mergeSignerMode } from "./getDeviceNumber-WiNzKx1x.js";
|
|
4
4
|
import { __isWalletIframeHostMode } from "./host-mode-CgqmYAwZ.js";
|
|
5
5
|
|
|
6
6
|
//#region ../node_modules/.pnpm/idb@8.0.3/node_modules/idb/build/index.js
|
|
@@ -513,8 +513,8 @@ var PasskeyClientDBManager = class {
|
|
|
513
513
|
await this.storeUser(userData);
|
|
514
514
|
return userData;
|
|
515
515
|
}
|
|
516
|
-
async updateUser(nearAccountId, updates) {
|
|
517
|
-
const user = await this.getUser(nearAccountId);
|
|
516
|
+
async updateUser(nearAccountId, updates, deviceNumber) {
|
|
517
|
+
const user = await this.getUser(nearAccountId, deviceNumber);
|
|
518
518
|
if (user) {
|
|
519
519
|
const updatedUser = {
|
|
520
520
|
...user,
|
|
@@ -3860,13 +3860,23 @@ async function handlePromptUserConfirmInJsMainThread(ctx, message, worker) {
|
|
|
3860
3860
|
});
|
|
3861
3861
|
return;
|
|
3862
3862
|
}
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3863
|
+
try {
|
|
3864
|
+
await handler({
|
|
3865
|
+
ctx,
|
|
3866
|
+
request,
|
|
3867
|
+
worker,
|
|
3868
|
+
confirmationConfig,
|
|
3869
|
+
transactionSummary
|
|
3870
|
+
});
|
|
3871
|
+
} catch (e) {
|
|
3872
|
+
console.error("[SecureConfirm][Host] handler failed", e);
|
|
3873
|
+
sendConfirmResponse(worker, {
|
|
3874
|
+
requestId: request.requestId,
|
|
3875
|
+
intentDigest: getIntentDigest(request),
|
|
3876
|
+
confirmed: false,
|
|
3877
|
+
error: errorMessage(e) || "Secure confirmation failed"
|
|
3878
|
+
});
|
|
3879
|
+
}
|
|
3870
3880
|
}
|
|
3871
3881
|
async function importFlow(label, loader) {
|
|
3872
3882
|
try {
|
|
@@ -3878,42 +3888,42 @@ async function importFlow(label, loader) {
|
|
|
3878
3888
|
}
|
|
3879
3889
|
const HANDLERS = {
|
|
3880
3890
|
[SecureConfirmationType.DECRYPT_PRIVATE_KEY_WITH_PRF]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3881
|
-
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-
|
|
3891
|
+
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-COpDBMkm.js"));
|
|
3882
3892
|
await handleLocalOnlyFlow(ctx, request, worker, {
|
|
3883
3893
|
confirmationConfig,
|
|
3884
3894
|
transactionSummary
|
|
3885
3895
|
});
|
|
3886
3896
|
},
|
|
3887
3897
|
[SecureConfirmationType.SHOW_SECURE_PRIVATE_KEY_UI]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3888
|
-
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-
|
|
3898
|
+
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-COpDBMkm.js"));
|
|
3889
3899
|
await handleLocalOnlyFlow(ctx, request, worker, {
|
|
3890
3900
|
confirmationConfig,
|
|
3891
3901
|
transactionSummary
|
|
3892
3902
|
});
|
|
3893
3903
|
},
|
|
3894
3904
|
[SecureConfirmationType.REGISTER_ACCOUNT]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3895
|
-
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-
|
|
3905
|
+
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-R70lvG_o.js"));
|
|
3896
3906
|
await handleRegistrationFlow(ctx, request, worker, {
|
|
3897
3907
|
confirmationConfig,
|
|
3898
3908
|
transactionSummary
|
|
3899
3909
|
});
|
|
3900
3910
|
},
|
|
3901
3911
|
[SecureConfirmationType.LINK_DEVICE]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3902
|
-
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-
|
|
3912
|
+
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-R70lvG_o.js"));
|
|
3903
3913
|
await handleRegistrationFlow(ctx, request, worker, {
|
|
3904
3914
|
confirmationConfig,
|
|
3905
3915
|
transactionSummary
|
|
3906
3916
|
});
|
|
3907
3917
|
},
|
|
3908
3918
|
[SecureConfirmationType.SIGN_TRANSACTION]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3909
|
-
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-
|
|
3919
|
+
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-CxsklyCK.js"));
|
|
3910
3920
|
await handleTransactionSigningFlow(ctx, request, worker, {
|
|
3911
3921
|
confirmationConfig,
|
|
3912
3922
|
transactionSummary
|
|
3913
3923
|
});
|
|
3914
3924
|
},
|
|
3915
3925
|
[SecureConfirmationType.SIGN_NEP413_MESSAGE]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3916
|
-
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-
|
|
3926
|
+
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-CxsklyCK.js"));
|
|
3917
3927
|
await handleTransactionSigningFlow(ctx, request, worker, {
|
|
3918
3928
|
confirmationConfig,
|
|
3919
3929
|
transactionSummary
|
|
@@ -7050,13 +7060,13 @@ var WebAuthnManager = class {
|
|
|
7050
7060
|
/**
|
|
7051
7061
|
* Persist refreshed server-encrypted VRF keypair in IndexedDB.
|
|
7052
7062
|
*/
|
|
7053
|
-
async updateServerEncryptedVrfKeypair(nearAccountId, serverEncrypted) {
|
|
7063
|
+
async updateServerEncryptedVrfKeypair(nearAccountId, serverEncrypted, deviceNumber) {
|
|
7054
7064
|
await IndexedDBManager.clientDB.updateUser(nearAccountId, { serverEncryptedVrfKeypair: {
|
|
7055
7065
|
ciphertextVrfB64u: serverEncrypted.ciphertextVrfB64u,
|
|
7056
7066
|
kek_s_b64u: serverEncrypted.kek_s_b64u,
|
|
7057
7067
|
serverKeyId: serverEncrypted.serverKeyId,
|
|
7058
7068
|
updatedAt: Date.now()
|
|
7059
|
-
} });
|
|
7069
|
+
} }, deviceNumber);
|
|
7060
7070
|
}
|
|
7061
7071
|
async clearVrfSession() {
|
|
7062
7072
|
if (typeof window !== "undefined" && this.workerBaseOrigin !== window.location.origin) return;
|
|
@@ -7164,7 +7174,7 @@ var WebAuthnManager = class {
|
|
|
7164
7174
|
const active = status.active && status.nearAccountId === nearAccountId;
|
|
7165
7175
|
if (!active) return false;
|
|
7166
7176
|
const refreshed = await this.shamir3PassEncryptCurrentVrfKeypair();
|
|
7167
|
-
await this.updateServerEncryptedVrfKeypair(nearAccountId, refreshed);
|
|
7177
|
+
await this.updateServerEncryptedVrfKeypair(nearAccountId, refreshed, userData?.deviceNumber);
|
|
7168
7178
|
return true;
|
|
7169
7179
|
} catch {
|
|
7170
7180
|
return false;
|