@openfort/openfort-js 0.10.39 → 1.0.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/dist/cjs/packages/internal/openapi-clients/dist/index.cjs +1 -0
- package/dist/cjs/sdk/src/api/auth.cjs +1 -0
- package/dist/cjs/sdk/src/api/embeddedWallet.cjs +1 -0
- package/dist/cjs/sdk/src/api/proxy.cjs +1 -0
- package/dist/cjs/sdk/src/api/user.cjs +1 -0
- package/dist/cjs/sdk/src/auth/authManager.cjs +1 -0
- package/dist/cjs/sdk/src/core/config/config.cjs +1 -0
- package/dist/cjs/sdk/src/core/configuration/account.cjs +1 -0
- package/dist/cjs/sdk/src/core/configuration/authentication.cjs +1 -0
- package/dist/cjs/sdk/src/core/errors/authErrorCodes.cjs +1 -0
- package/dist/cjs/sdk/src/core/errors/internal/extractApiError.cjs +1 -0
- package/dist/cjs/sdk/src/core/errors/openfortError.cjs +1 -0
- package/dist/cjs/sdk/src/core/errors/sentry.cjs +1 -0
- package/dist/cjs/sdk/src/core/errors/withApiError.cjs +1 -0
- package/dist/cjs/sdk/src/core/openfort.cjs +1 -0
- package/dist/cjs/sdk/src/core/openfortInternal.cjs +1 -0
- package/dist/cjs/sdk/src/index.cjs +1 -0
- package/dist/cjs/sdk/src/storage/{istorage.js → istorage.cjs} +1 -1
- package/dist/cjs/sdk/src/storage/lazyStorage.cjs +1 -0
- package/dist/cjs/sdk/src/storage/scopedStorage.cjs +1 -0
- package/dist/cjs/sdk/src/storage/storage.cjs +1 -0
- package/dist/cjs/sdk/src/types/types.cjs +1 -0
- package/dist/cjs/sdk/src/utils/debug.cjs +1 -0
- package/dist/cjs/sdk/src/{version.js → version.cjs} +1 -1
- package/dist/cjs/sdk/src/wallets/embedded.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/addEthereumChain.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/estimateGas.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/evmProvider.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/getAssets.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/getCallsStatus.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/personalSign.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/provider/{eip6963.js → eip6963.cjs} +1 -1
- package/dist/cjs/sdk/src/wallets/evm/registerSession.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/revokeSession.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/sendCallSync.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/sendCalls.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/signTypedDataV4.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/evm/walletHelpers.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/iframeManager.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/ReactNativeMessenger.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/backwardCompatibility.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/connect.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/connectCallHandler.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/connectRemoteProxy.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/errorSerialization.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/guards.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/messengers/WindowMessenger.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/methodSerialization.cjs +1 -0
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/shakeHands.cjs +1 -0
- package/dist/index.d.cts +13076 -0
- package/dist/index.d.ts +7591 -2795
- package/dist/packages/internal/openapi-clients/dist/index.js +1 -1
- package/dist/sdk/src/api/auth.js +1 -1
- package/dist/sdk/src/api/embeddedWallet.js +1 -1
- package/dist/sdk/src/api/proxy.js +1 -1
- package/dist/sdk/src/api/user.js +1 -1
- package/dist/sdk/src/auth/authManager.js +1 -1
- package/dist/sdk/src/core/configuration/authentication.js +1 -1
- package/dist/sdk/src/core/errors/authErrorCodes.js +1 -0
- package/dist/sdk/src/core/errors/internal/extractApiError.js +1 -0
- package/dist/sdk/src/core/errors/openfortError.js +1 -1
- package/dist/sdk/src/core/errors/sentry.js +1 -1
- package/dist/sdk/src/core/errors/withApiError.js +1 -0
- package/dist/sdk/src/core/openfort.js +1 -1
- package/dist/sdk/src/core/openfortInternal.js +1 -1
- package/dist/sdk/src/index.js +1 -1
- package/dist/sdk/src/storage/istorage.js +1 -1
- package/dist/sdk/src/storage/lazyStorage.js +1 -1
- package/dist/sdk/src/types/types.js +1 -1
- package/dist/sdk/src/version.js +1 -1
- package/dist/sdk/src/wallets/embedded.js +1 -1
- package/dist/sdk/src/wallets/evm/estimateGas.js +1 -1
- package/dist/sdk/src/wallets/evm/getAssets.js +1 -1
- package/dist/sdk/src/wallets/evm/getCallsStatus.js +1 -1
- package/dist/sdk/src/wallets/evm/registerSession.js +1 -1
- package/dist/sdk/src/wallets/evm/revokeSession.js +1 -1
- package/dist/sdk/src/wallets/evm/sendCallSync.js +1 -1
- package/dist/sdk/src/wallets/iframeManager.js +1 -1
- package/package.json +19 -10
- package/dist/cjs/packages/internal/openapi-clients/dist/index.js +0 -1
- package/dist/cjs/sdk/src/api/auth.js +0 -1
- package/dist/cjs/sdk/src/api/embeddedWallet.js +0 -1
- package/dist/cjs/sdk/src/api/proxy.js +0 -1
- package/dist/cjs/sdk/src/api/user.js +0 -1
- package/dist/cjs/sdk/src/auth/authManager.js +0 -1
- package/dist/cjs/sdk/src/core/config/config.js +0 -1
- package/dist/cjs/sdk/src/core/configuration/account.js +0 -1
- package/dist/cjs/sdk/src/core/configuration/authentication.js +0 -1
- package/dist/cjs/sdk/src/core/errors/openfortError.js +0 -1
- package/dist/cjs/sdk/src/core/errors/sentry.js +0 -1
- package/dist/cjs/sdk/src/core/openfort.js +0 -1
- package/dist/cjs/sdk/src/core/openfortInternal.js +0 -1
- package/dist/cjs/sdk/src/index.js +0 -1
- package/dist/cjs/sdk/src/storage/lazyStorage.js +0 -1
- package/dist/cjs/sdk/src/storage/scopedStorage.js +0 -1
- package/dist/cjs/sdk/src/storage/storage.js +0 -1
- package/dist/cjs/sdk/src/types/types.js +0 -1
- package/dist/cjs/sdk/src/utils/debug.js +0 -1
- package/dist/cjs/sdk/src/wallets/embedded.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/addEthereumChain.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/estimateGas.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/evmProvider.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/getAssets.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/getCallsStatus.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/personalSign.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/registerSession.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/revokeSession.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/sendCallSync.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/sendCalls.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/signTypedDataV4.js +0 -1
- package/dist/cjs/sdk/src/wallets/evm/walletHelpers.js +0 -1
- package/dist/cjs/sdk/src/wallets/iframeManager.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/ReactNativeMessenger.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/backwardCompatibility.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/connect.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/connectCallHandler.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/connectRemoteProxy.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/errorSerialization.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/guards.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/messengers/WindowMessenger.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/methodSerialization.js +0 -1
- package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/shakeHands.js +0 -1
- /package/dist/cjs/sdk/src/core/configuration/{passkey.js → passkey.cjs} +0 -0
- /package/dist/cjs/sdk/src/utils/{authorization.js → authorization.cjs} +0 -0
- /package/dist/cjs/sdk/src/utils/chains/{index.js → index.cjs} +0 -0
- /package/dist/cjs/sdk/src/utils/{crypto.js → crypto.cjs} +0 -0
- /package/dist/cjs/sdk/src/utils/{promiseUtils.js → promiseUtils.cjs} +0 -0
- /package/dist/cjs/sdk/src/utils/{typedEventEmitter.js → typedEventEmitter.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/evm/{JsonRpcError.js → JsonRpcError.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/evm/{types.js → types.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{CallOptions.js → CallOptions.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{PenpalBugError.js → PenpalBugError.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{PenpalError.js → PenpalError.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{Reply.js → Reply.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{getPromiseWithResolvers.js → getPromiseWithResolvers.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{namespace.js → namespace.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{once.js → once.cjs} +0 -0
- /package/dist/cjs/sdk/src/wallets/{types.js → types.cjs} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./istorage.js");exports.StorageImplementation=class{storage;constructor(e){this.storage=e}async get(e){return Promise.resolve(this.storage.getItem(e))}save(e,t){this.storage.setItem(e,t)}remove(e){this.storage.removeItem(e)}flush(){for(const t of Object.values(e.StorageKeys))this.storage.removeItem(t)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e,o,t,E,r,A,p,d,T,s,i,n;exports.EmbeddedState=void 0,(e=exports.EmbeddedState||(exports.EmbeddedState={}))[e.NONE=0]="NONE",e[e.UNAUTHENTICATED=1]="UNAUTHENTICATED",e[e.EMBEDDED_SIGNER_NOT_CONFIGURED=2]="EMBEDDED_SIGNER_NOT_CONFIGURED",e[e.CREATING_ACCOUNT=3]="CREATING_ACCOUNT",e[e.READY=4]="READY",exports.OpenfortEvents=void 0,(o=exports.OpenfortEvents||(exports.OpenfortEvents={})).ON_AUTH_INIT="onAuthInit",o.ON_AUTH_SUCCESS="onAuthSuccess",o.ON_AUTH_FAILURE="onAuthFailure",o.ON_LOGOUT="onLogout",o.ON_SWITCH_ACCOUNT="onSwitchAccount",o.ON_SIGNED_MESSAGE="onSignedMessage",o.ON_EMBEDDED_WALLET_CREATED="onEmbeddedWalletCreated",o.ON_EMBEDDED_WALLET_RECOVERED="onEmbeddedWalletRecovered",exports.RecoveryMethod=void 0,(t=exports.RecoveryMethod||(exports.RecoveryMethod={})).PASSWORD="password",t.AUTOMATIC="automatic",t.PASSKEY="passkey",exports.AccountType=void 0,(E=exports.AccountType||(exports.AccountType={})).ERC6551V1="ERC6551V1",E.UPGRADEABLE_V5="UpgradeableV5",E.UPGRADEABLE_V4="UpgradeableV4",E.UPGRADEABLE_V6="UpgradeableV6",E.ZKSYNC_UPGRADEABLE_V1="ZKSyncUpgradeableV1",E.ZKSYNC_UPGRADEABLE_V2="ZKSyncUpgradeableV2",E.SIMPLE="Simple",E.CALIBUR="Calibur",exports.AuthType=void 0,(r=exports.AuthType||(exports.AuthType={})).OPENFORT="openfort",r.THIRD_PARTY="thirdParty",exports.TokenType=void 0,(A=exports.TokenType||(exports.TokenType={})).ID_TOKEN="idToken",A.CUSTOM_TOKEN="customToken",exports.ThirdPartyAuthProvider=void 0,(p=exports.ThirdPartyAuthProvider||(exports.ThirdPartyAuthProvider={})).ACCELBYTE="accelbyte",p.FIREBASE="firebase",p.BETTER_AUTH="better-auth",p.LOOTLOCKER="lootlocker",p.PLAYFAB="playfab",p.SUPABASE="supabase",p.CUSTOM="custom",p.OIDC="oidc",exports.BasicAuthProvider=void 0,(d=exports.BasicAuthProvider||(exports.BasicAuthProvider={})).EMAIL="email",d.WALLET="wallet",exports.OAuthProvider=void 0,(T=exports.OAuthProvider||(exports.OAuthProvider={})).GOOGLE="google",T.TWITTER="twitter",T.APPLE="apple",T.FACEBOOK="facebook",T.DISCORD="discord",T.EPIC_GAMES="epic_games",T.LINE="line",exports.AuthActionRequiredActions=void 0,(exports.AuthActionRequiredActions||(exports.AuthActionRequiredActions={})).ACTION_VERIFY_EMAIL="verify_email",exports.CodeChallengeMethodEnum=void 0,(exports.CodeChallengeMethodEnum||(exports.CodeChallengeMethodEnum={})).S256="S256",exports.AccountTypeEnum=void 0,(s=exports.AccountTypeEnum||(exports.AccountTypeEnum={})).EOA="Externally Owned Account",s.SMART_ACCOUNT="Smart Account",s.DELEGATED_ACCOUNT="Delegated Account",exports.ChainTypeEnum=void 0,(i=exports.ChainTypeEnum||(exports.ChainTypeEnum={})).EVM="EVM",i.SVM="SVM",function(e){e.ASC="asc",e.DESC="desc"}(n||(n={}));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var o=require("../core/config/config.js");exports.debugLog=function(...e){const n=o.SDKConfiguration.getInstance();n?.debug&&console.log(`${(new Date).toISOString()} [SDK]`,...e)};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../core/configuration/authentication.js"),t=require("../core/configuration/passkey.js"),a=require("../core/errors/openfortError.js"),r=require("../core/config/config.js"),o=require("../core/configuration/account.js"),n=require("../storage/istorage.js"),s=require("../types/types.js");exports.EmbeddedSigner=class{iframeManager;storage;backendApiClients;passkeyHandler;eventEmitter;constructor(e,t,a,r,o){this.iframeManager=e,this.storage=t,this.backendApiClients=a,this.passkeyHandler=r,this.eventEmitter=o}async createPasskey(e){const a=await this.passkeyHandler.createPasskey({id:t.PasskeyHandler.randomPasskeyName(),displayName:"Openfort - Embedded Wallet",seed:e});return{id:a.id,key:a.key}}async configure(t){const n=await e.Authentication.fromStorage(this.storage);if(!n)throw new a.OpenfortError("No access token found",a.OpenfortErrorType.NOT_LOGGED_IN_ERROR);const i=r.SDKConfiguration.getInstance();if(!i)throw new a.OpenfortError("Configuration not found",a.OpenfortErrorType.INVALID_CONFIGURATION);const c=await o.Account.fromStorage(this.storage);let d;if(c){const e={account:c.id,...t.entropy&&{entropy:{...t.entropy.recoveryPassword&&{recoveryPassword:t.entropy.recoveryPassword},...t.entropy.encryptionSession&&{encryptionSession:t.entropy.encryptionSession},..."passkey"===c.recoveryMethod&&{passkey:{id:c.recoveryMethodDetails?.passkeyId,env:c.recoveryMethodDetails?.passkeyEnv,key:await t.getPasskeyKeyFn(c.recoveryMethodDetails?.passkeyId??"")}}}}},a=await this.iframeManager.recover(e);d=a.account}else{const e=await this.backendApiClients.accountsApi.getAccountsV2({user:n.player,accountType:t.accountType,chainType:t.chainType},{headers:{authorization:`Bearer ${i.baseConfiguration.publishableKey}`,"x-player-token":n.token,"x-auth-provider":n.thirdPartyProvider,"x-token-type":n.thirdPartyTokenType}});if(0===e.data.data.length){const e=t.entropy?.passkey?await this.createPasskey(n.player):void 0,a={accountType:t.accountType,chainType:t.chainType,chainId:t.chainId,...t.entropy&&{entropy:{...t.entropy.recoveryPassword&&{recoveryPassword:t.entropy.recoveryPassword},...t.entropy.encryptionSession&&{encryptionSession:t.entropy.encryptionSession},...t.entropy.passkey&&{passkey:e}}}},r=await this.iframeManager.create(a);d=r.account}else{const a=e.data.data,r=a.find(e=>e.chainId===t.chainId),o=r||a[0],n={account:o.id,...t.entropy&&{entropy:{...t.entropy.recoveryPassword&&{recoveryPassword:t.entropy.recoveryPassword},...t.entropy.encryptionSession&&{encryptionSession:t.entropy.encryptionSession},..."passkey"===o.recoveryMethod&&{passkey:{id:o.recoveryMethodDetails?.passkeyId,env:o.recoveryMethodDetails?.passkeyEnv,key:await t.getPasskeyKeyFn(o.recoveryMethodDetails?.passkeyId??"")}}}}},s=await this.iframeManager.recover(n);if(d=s.account,!r){const e=await this.iframeManager.switchChain(t.chainId);d=e.account}}}return a.withOpenfortError(async()=>{const e=await this.backendApiClients.accountsApi.getAccountV2({id:d},{headers:{authorization:`Bearer ${i.baseConfiguration.publishableKey}`,"x-player-token":n.token,"x-auth-provider":n.thirdPartyProvider,"x-token-type":n.thirdPartyTokenType}}),t=new o.Account({user:e.data.user,chainType:e.data.chainType,id:e.data.id,address:e.data.address,ownerAddress:e.data.ownerAddress,accountType:e.data.accountType,createdAt:e.data.createdAt,implementationAddress:e.data.smartAccount?.implementationAddress,implementationType:e.data.smartAccount?.implementationType,chainId:e.data.chainId,salt:e.data.smartAccount?.salt,factoryAddress:e.data.smartAccount?.factoryAddress,recoveryMethod:o.Account.parseRecoveryMethod(e.data.recoveryMethod),recoveryMethodDetails:e.data.recoveryMethodDetails});return t.save(this.storage),this.eventEmitter.emit(s.OpenfortEvents.ON_SWITCH_ACCOUNT,e.data.address),t},{default:a.OpenfortErrorType.AUTHENTICATION_ERROR})}async sign(e,t,a,r){const o=await this.iframeManager.sign(e,t,a,r);return this.eventEmitter.emit(s.OpenfortEvents.ON_SIGNED_MESSAGE,{message:e,signature:o}),o}async export(){return await this.iframeManager.export()}async switchChain({chainId:e}){const t=await o.Account.fromStorage(this.storage);if(t?.accountType===s.AccountTypeEnum.EOA)new o.Account({...t,chainId:e}).save(this.storage);else{const a=await this.iframeManager.switchChain(e);new o.Account({...t,id:a.account,chainId:e}).save(this.storage)}}async create(t){const n=await this.iframeManager.create(t),i=await e.Authentication.fromStorage(this.storage);if(!i)throw new a.OpenfortError("No access token found",a.OpenfortErrorType.NOT_LOGGED_IN_ERROR);const c=r.SDKConfiguration.getInstance();if(!c)throw new a.OpenfortError("Configuration not found",a.OpenfortErrorType.INVALID_CONFIGURATION);return a.withOpenfortError(async()=>{const e=await this.backendApiClients.accountsApi.getAccountV2({id:n.account},{headers:{authorization:`Bearer ${c.baseConfiguration.publishableKey}`,"x-player-token":i.token,"x-auth-provider":i.thirdPartyProvider,"x-token-type":i.thirdPartyTokenType}}),t=new o.Account({user:e.data.user,chainType:e.data.chainType,id:e.data.id,address:e.data.address,ownerAddress:e.data.ownerAddress,accountType:e.data.accountType,createdAt:e.data.createdAt,implementationType:e.data.smartAccount?.implementationType,chainId:e.data.chainId,implementationAddress:e.data.smartAccount?.implementationAddress,salt:e.data.smartAccount?.salt,factoryAddress:e.data.smartAccount?.factoryAddress,recoveryMethod:o.Account.parseRecoveryMethod(e.data.recoveryMethod),recoveryMethodDetails:e.data.recoveryMethodDetails});return t.save(this.storage),this.eventEmitter.emit(s.OpenfortEvents.ON_SWITCH_ACCOUNT,e.data.address),t},{default:a.OpenfortErrorType.AUTHENTICATION_ERROR})}async recover(t){const n=await this.iframeManager.recover(t),i=await e.Authentication.fromStorage(this.storage);if(!i)throw new a.OpenfortError("No access token found",a.OpenfortErrorType.NOT_LOGGED_IN_ERROR);const c=r.SDKConfiguration.getInstance();if(!c)throw new a.OpenfortError("Configuration not found",a.OpenfortErrorType.INVALID_CONFIGURATION);return a.withOpenfortError(async()=>{const e=await this.backendApiClients.accountsApi.getAccountV2({id:n.account},{headers:{authorization:`Bearer ${c.baseConfiguration.publishableKey}`,"x-player-token":i.token,"x-auth-provider":i.thirdPartyProvider,"x-token-type":i.thirdPartyTokenType}}),t=new o.Account({user:e.data.user,chainType:e.data.chainType,id:e.data.id,address:e.data.address,ownerAddress:e.data.ownerAddress,accountType:e.data.accountType,createdAt:e.data.createdAt,implementationAddress:e.data.smartAccount?.implementationAddress,implementationType:e.data.smartAccount?.implementationType,chainId:e.data.chainId,salt:e.data.smartAccount?.salt,factoryAddress:e.data.smartAccount?.factoryAddress,recoveryMethod:o.Account.parseRecoveryMethod(e.data.recoveryMethod),recoveryMethodDetails:e.data.recoveryMethodDetails});return t.save(this.storage),this.eventEmitter.emit(s.OpenfortEvents.ON_SWITCH_ACCOUNT,e.data.address),t},{default:a.OpenfortErrorType.AUTHENTICATION_ERROR})}async setRecoveryMethod({recoveryMethod:e,recoveryPassword:t,encryptionSession:a,passkeyInfo:r}){await this.iframeManager.setRecoveryMethod(e,t,a,r?.passkeyKey,r?.passkeyId)}async disconnect(){await this.iframeManager.disconnect(),this.storage.remove(n.StorageKeys.ACCOUNT)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var r=require("./JsonRpcError.js");const e=["chainId","chainName","nativeCurrency"],n=n=>{if(!n||"object"!=typeof n)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"Invalid chain parameter: expected an object");if(!(r=>e.every(e=>e in r))(n))throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,`Invalid chain parameter. The following properties are required: ${e.join(", ")}`);if(!n.chainName||""===n.chainName.trim())throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"chainName cannot be empty");if(!((o=n.nativeCurrency)&&"object"==typeof o&&"name"in o&&"symbol"in o&&"decimals"in o&&"string"==typeof o.name&&"string"==typeof o.symbol&&"number"==typeof o.decimals&&Number.isInteger(o.decimals)))throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"Invalid nativeCurrency object");var o;if(0===n.rpcUrls?.length)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"At least one RPC URL must be provided");if(!/^0x[0-9a-fA-F]+$/.test(n.chainId))throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"chainId must be a valid hex string");return{chainId:n.chainId,blockExplorerUrls:n.blockExplorerUrls||[],chainName:n.chainName,iconUrls:n.iconUrls||[],rpcUrls:n.rpcUrls||[],nativeCurrency:n.nativeCurrency}};exports.addEthereumChain=async({params:e,rpcProvider:o,storage:a})=>{if(!e||!Array.isArray(e)||0===e.length)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"Invalid parameters for wallet_addEthereumChain");const i=n(e[0]),c=parseInt(i.chainId,16),{chainId:t}=await o.detectNetwork();return c!==t&&null};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var r=require("../../core/errors/openfortError.js"),t=require("./JsonRpcError.js");exports.estimateGas=async({params:e,account:a,authentication:o,backendClient:n,policyId:i})=>{const s=await(async(e,a,o,n,i)=>{const s=e.map(r=>{if(!r.to)throw new t.JsonRpcError(t.RpcErrorCode.INVALID_PARAMS,'eth_estimateGas requires a "to" field');return{to:String(r.to),data:r.data?String(r.data):void 0,value:r.value?String(r.value):void 0}});return r.withOpenfortError(async()=>(await a.transactionIntentsApi.estimateTransactionIntentCost({createTransactionIntentRequest:{policy:i,chainId:o.chainId,interactions:s}},{headers:{authorization:`Bearer ${a.config.backend.accessToken}`,"x-player-token":n.token,"x-auth-provider":n.thirdPartyProvider,"x-token-type":n.thirdPartyTokenType}})).data,{default:r.OpenfortErrorType.AUTHENTICATION_ERROR})})(e,n,a,o,i).catch(r=>{throw new t.JsonRpcError(t.RpcErrorCode.TRANSACTION_REJECTED,r.message)});return s.estimatedTXGas};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/configuration/account.js"),t=require("../../core/configuration/authentication.js"),r=require("../../types/types.js"),a=require("../../utils/chains/index.js"),s=require("../../utils/crypto.js"),i=require("../../utils/typedEventEmitter.js"),o=require("./addEthereumChain.js"),n=require("./estimateGas.js"),c=require("./getAssets.js"),h=require("./getCallsStatus.js"),d=require("./JsonRpcError.js"),u=require("./personalSign.js"),p=require("./registerSession.js"),l=require("./revokeSession.js"),w=require("./sendCallSync.js"),g=require("./sendCalls.js"),m=require("./signTypedDataV4.js"),E=require("./types.js"),A=require("./walletHelpers.js");exports.EvmProvider=class{#e;#t;#r;#a;updatePolicy(e){this.#t=e}#s;#i;#o=null;#n;isOpenfort=!0;#c;constructor({storage:e,backendApiClients:t,openfortEventEmitter:a,policyId:s,ensureSigner:o,chains:n,validateAndRefreshSession:c}){this.#c=o,this.#e=e,this.#r=n,this.#t=s,this.#s=c,this.#n=t,this.#i=new i,a.on(r.OpenfortEvents.ON_LOGOUT,this.#h),a.on(r.OpenfortEvents.ON_SWITCH_ACCOUNT,this.#d)}#u=async()=>(this.#a||(this.#a=await this.#c()),this.#a);#h=async()=>{this.#a=void 0,this.#i.emit(E.ProviderEvent.ACCOUNTS_CHANGED,[])};#d=async e=>{this.#i.emit(E.ProviderEvent.ACCOUNTS_CHANGED,[e])};async getRpcProvider(){if(!this.#o){const t=await e.Account.fromStorage(this.#e),r=t?.chainId||8453;await import("@ethersproject/providers").then(e=>{const t=this.#r?this.#r[r]:void 0;this.#o=new e.StaticJsonRpcProvider(t??a.defaultChainRpcs[r])})}if(!this.#o)throw new Error("RPC provider not initialized");return this.#o}async#p(i){switch(i.method){case"eth_accounts":{const t=await e.Account.fromStorage(this.#e);return t?[t.address]:[]}case"eth_requestAccounts":{const t=await e.Account.fromStorage(this.#e);if(t)return this.#i.emit(E.ProviderEvent.ACCOUNTS_CONNECT,{chainId:String(t.chainId)}),[t.address];throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - must be authenticated and configured with a signer.")}case"eth_signTransaction":{const r=await e.Account.fromStorage(this.#e),a=await this.#u(),s=await t.Authentication.fromStorage(this.#e);if(!r||!s)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");const o=await this.getRpcProvider(),{chainId:n}=await o.detectNetwork(),[c]=i.params||[];c.chainId||(c.chainId=n.toString());const h=A.parseTransactionRequest(c),{serialize:u}=await import("@ethersproject/transactions"),p=e=>({legacy:0,eip2930:1,eip1559:2}[e]),{gas:l,...w}=h,g={...w,gasLimit:l,to:h.to??void 0,type:p(h.type)},m=u(g),{keccak256:E}=await import("@ethersproject/keccak256"),R=E(m);await this.#s();const f=await a.sign(R,!1,!1),{splitSignature:v}=await import("@ethersproject/bytes");return u(g,v(f))}case"eth_sendTransaction":{const[a,s,o]=await Promise.all([e.Account.fromStorage(this.#e),this.#u(),t.Authentication.fromStorage(this.#e)]);if(!a||!o)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");if(await this.#s(),a?.accountType===r.AccountTypeEnum.EOA){const[e]=i.params||[],t=await this.getRpcProvider(),r=await A.prepareEOATransaction(e,t,a.address),s=await this.#p({method:"eth_signTransaction",params:[r]});return this.#p({method:"eth_sendRawTransaction",params:[s]})}return(await w.sendCallsSync({params:i.params||[],signer:s,account:a,authentication:o,backendClient:this.#n,rpcProvider:await this.getRpcProvider(),policyId:this.#t})).receipt.transactionHash}case"eth_sendRawTransactionSync":{const[a,s,o]=await Promise.all([e.Account.fromStorage(this.#e),this.#u(),t.Authentication.fromStorage(this.#e)]);if(!a||!o)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");if(a?.accountType===r.AccountTypeEnum.EOA)throw new d.JsonRpcError(d.ProviderErrorCode.UNSUPPORTED_METHOD,`${i.method}: Method not supported`);return await this.#s(),await w.sendCallsSync({params:i.params||[],signer:s,account:a,authentication:o,backendClient:this.#n,rpcProvider:await this.getRpcProvider(),policyId:this.#t})}case"eth_estimateGas":{const r=await e.Account.fromStorage(this.#e),a=await t.Authentication.fromStorage(this.#e);if(!r||!a)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");return await this.#s(),await n.estimateGas({params:i.params||[],account:r,authentication:a,backendClient:this.#n,policyId:this.#t})}case"eth_signTypedData":case"eth_signTypedData_v4":{const t=await e.Account.fromStorage(this.#e),r=await this.#u();if(!t)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");await this.#s();const a=await this.getRpcProvider();return await m.signTypedDataV4({method:i.method,params:i.params||[],signer:r,implementationType:t.implementationType||t.type,rpcProvider:a,account:t})}case"personal_sign":{const t=await e.Account.fromStorage(this.#e);if(!t)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");const r=await this.#u();return await this.#s(),await u.personalSign({params:i.params||[],signer:r,account:t})}case"eth_chainId":{const e=await this.getRpcProvider(),{chainId:t}=await e.detectNetwork();return s.numberToHex(t)}case"wallet_switchEthereumChain":{const e=await this.#u();if(!i.params||!Array.isArray(i.params)||0===i.params.length)throw new d.JsonRpcError(d.RpcErrorCode.INVALID_PARAMS,"Invalid parameters for wallet_switchEthereumChain");await this.#s();try{const t=parseInt(i.params[0].chainId,16);await e.switchChain({chainId:t}),await import("@ethersproject/providers").then(e=>{const r=this.#r?this.#r[t]:void 0;this.#o=new e.StaticJsonRpcProvider(r??a.defaultChainRpcs[t])})}catch(e){const t=e;throw new d.JsonRpcError(d.RpcErrorCode.INTERNAL_ERROR,`Failed to switch chain: ${t.message}`)}return null}case"wallet_addEthereumChain":{await this.#u();const e=await this.getRpcProvider();return await o.addEthereumChain({params:i.params||[],rpcProvider:e,storage:this.#e})}case"wallet_showCallsStatus":return null;case"wallet_getCallsStatus":{const a=await e.Account.fromStorage(this.#e);if(a?.accountType===r.AccountTypeEnum.EOA)throw new d.JsonRpcError(d.ProviderErrorCode.UNSUPPORTED_METHOD,`${i.method}: Method not supported`);const s=await t.Authentication.fromStorage(this.#e);if(!a||!s)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");return await this.#s(),await h.getCallStatus({params:i.params||{},authentication:s,backendClient:this.#n})}case"wallet_sendCalls":{const[a,s,o]=await Promise.all([e.Account.fromStorage(this.#e),this.#u(),t.Authentication.fromStorage(this.#e)]);if(a?.accountType===r.AccountTypeEnum.EOA)throw new d.JsonRpcError(d.ProviderErrorCode.UNSUPPORTED_METHOD,`${i.method}: Method not supported`);if(!a||!o)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");await this.#s();return await g.sendCalls({params:i.params?i.params[0].calls:[],signer:s,account:a,authentication:o,backendClient:this.#n,rpcProvider:await this.getRpcProvider(),policyId:this.#t})}case"wallet_grantPermissions":{const a=await e.Account.fromStorage(this.#e);if(a?.accountType===r.AccountTypeEnum.EOA)throw new d.JsonRpcError(d.ProviderErrorCode.UNSUPPORTED_METHOD,`${i.method}: Method not supported`);const s=await this.#u(),o=await t.Authentication.fromStorage(this.#e);if(!a||!o)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");return await this.#s(),await p.registerSession({params:i.params||[],signer:s,account:a,authentication:o,backendClient:this.#n,policyId:this.#t})}case"wallet_revokePermissions":{const r=await e.Account.fromStorage(this.#e),a=await this.#u(),s=await t.Authentication.fromStorage(this.#e);if(!r||!s)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");return await this.#s(),await l.revokeSession({params:i.params||[],signer:a,account:r,authentication:s,backendClient:this.#n,policyId:this.#t})}case"wallet_getCapabilities":{const t=await e.Account.fromStorage(this.#e);if(t?.accountType===r.AccountTypeEnum.EOA)throw new d.JsonRpcError(d.ProviderErrorCode.UNSUPPORTED_METHOD,`${i.method}: Method not supported`);const a=await this.getRpcProvider(),{chainId:o}=await a.detectNetwork();return{[s.numberToHex(o)]:{permissions:{supported:!0,signerTypes:["account","key"],keyTypes:["secp256k1"],permissionTypes:["contract-calls"]},paymasterService:{supported:!0},atomicBatch:{supported:!0}}}}case"wallet_getAssets":{const r=await e.Account.fromStorage(this.#e),a=await t.Authentication.fromStorage(this.#e);if(!r||!a)throw new d.JsonRpcError(d.ProviderErrorCode.UNAUTHORIZED,"Unauthorized - call eth_requestAccounts first");return await this.#s(),await c.getAssets({params:i.params?.[0],account:r,authentication:a,backendClient:this.#n})}case"eth_gasPrice":case"eth_getBalance":case"eth_sendRawTransaction":case"eth_getCode":case"eth_getStorageAt":case"eth_call":case"eth_blockNumber":case"eth_getBlockByHash":case"eth_getBlockByNumber":case"eth_getTransactionByHash":case"eth_getTransactionReceipt":case"eth_getTransactionCount":return(await this.getRpcProvider()).send(i.method,i.params||[]);default:throw new d.JsonRpcError(d.ProviderErrorCode.UNSUPPORTED_METHOD,`${i.method}: Method not supported`)}}async request(e){try{return this.#p(e)}catch(e){if(e instanceof d.JsonRpcError)throw e;if(e instanceof Error)throw new d.JsonRpcError(d.RpcErrorCode.INTERNAL_ERROR,e.message);throw new d.JsonRpcError(d.RpcErrorCode.INTERNAL_ERROR,"Internal error")}}on(e,t){this.#i.on(e,t)}removeListener(e,t){this.#i.off(e,t)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/openfortError.js"),r=require("./JsonRpcError.js");exports.getAssets=async({params:t,account:a,authentication:s,backendClient:o})=>{const n=await(async(r,t,a,s)=>e.withOpenfortError(async()=>(await r.rpcApi.handleRpcRequest({jsonRpcRequest:{method:"wallet_getAssets",params:{account:t.address,chainFilter:s?.chainFilter,assetFilter:s?.assetFilter,assetTypeFilter:s?.assetTypeFilter},id:1,jsonrpc:"2.0"}},{headers:{authorization:`Bearer ${r.config.backend.accessToken}`,"x-player-token":a.token,"x-auth-provider":a.thirdPartyProvider,"x-token-type":a.thirdPartyTokenType}})).data,{default:e.OpenfortErrorType.AUTHENTICATION_ERROR}))(o,a,s,t).catch(e=>{throw new r.JsonRpcError(r.RpcErrorCode.INTERNAL_ERROR,e.message)});return n.result};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/openfortError.js"),r=require("./JsonRpcError.js");exports.getCallStatus=async({params:s,authentication:t,backendClient:a})=>{const o=await(async(r,s,t)=>e.withOpenfortError(async()=>(await s.transactionIntentsApi.getTransactionIntent({id:r},{headers:{authorization:`Bearer ${s.config.backend.accessToken}`,"x-player-token":t.token,"x-auth-provider":t.thirdPartyProvider,"x-token-type":t.thirdPartyTokenType}})).data,{default:e.OpenfortErrorType.AUTHENTICATION_ERROR}))(s[0],a,t).catch(e=>{throw new r.JsonRpcError(r.RpcErrorCode.TRANSACTION_REJECTED,e.message)});return{status:o.response?"CONFIRMED":"PENDING",receipts:o.response?[{status:0===o.response.status?"reverted":"success",logs:o.response.logs?.map(e=>({address:e.address,data:e.data,topics:e.topics}))||[],blockHash:o.response.transactionHash||"",blockNumber:BigInt(o.response.blockNumber||0),gasUsed:BigInt(o.response.gasUsed||0),transactionHash:o.response.transactionHash||""}]:void 0}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../utils/crypto.js"),r=require("./JsonRpcError.js"),s=require("./walletHelpers.js");exports.personalSign=async({params:a,signer:o,account:t})=>{const n=a[0],i=a[1];if(!i||!n)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"personal_sign requires an address and a message");if(i.toLowerCase()!==t.address.toLowerCase())throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"personal_sign requires the signer to be the from address");const{hashMessage:d}=await import("@ethersproject/hash");return await s.signMessage({hash:d(e.hexToString(n)),implementationType:t.implementationType||t.type,chainId:Number(t.chainId),signer:o,address:i,salt:t.salt,factoryAddress:t.factoryAddress,ownerAddress:t.ownerAddress})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/openfortError.js"),t=require("../../types/types.js"),r=require("./JsonRpcError.js");function i(e){return{data:(()=>{if("token-allowance"===e.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"token-allowance policy is not supported with this account implementation.");if("gas-limit"===e.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"gas-limit policy is not supported with this account implementation.");if("rate-limit"===e.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"rate-limit policy is not supported with this account implementation.");return e.data})(),type:e.type.custom}}function o(e){if("native-token-transfer"===e.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"native-token-transfer permission is not supported with this account implementation.");if("rate-limit"===e.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"rate-limit permission is not supported with this account implementation.");if("gas-limit"===e.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"gas-limit permission is not supported with this account implementation.");return{...e,policies:e?.policies?.map(i),required:e.required??!1,type:"string"==typeof e.type?e.type:e.type.custom}}function n(e){return{expiry:e.validUntil?Number(e.validUntil):0,grantedPermissions:e.whitelist?e.whitelist.map(t=>({type:"contract-call",data:{address:t,calls:[]},policies:[{data:{limit:e.limit},type:{custom:"usage-limit"}}]})):[],permissionsContext:e.id}}exports.registerSession=async({params:i,signer:s,account:a,authentication:p,backendClient:c,policyId:l})=>{const d=await(async(t,i,n,s,a)=>{const p=t[0],c=Math.floor(Date.now()/1e3),l=Math.floor(new Date(Date.now()+1e3*p.expiry).getTime()/1e3),d=p.permissions.map(o),u=d.filter(e=>"contract-call"===e.type||"erc20-token-transfer"===e.type||"erc721-token-transfer"===e.type||"erc1155-token-transfer"===e.type).map(e=>e.data.address);let y,m=d.find(e=>"call-limit"===e.type)?.data;if(m=d[0]?.policies?.find(e=>"call-limit"===e.type)?.data?.limit,"signer"in p&&p.signer){if("keys"===p.signer.type)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"Multi-key signers are not supported for session creation");"key"!==p.signer.type&&"account"!==p.signer.type||(y=p.signer.data.id)}else"account"in p&&p.account&&(y=p.account);if(!y)throw new r.JsonRpcError(r.RpcErrorCode.INVALID_PARAMS,"Failed to request permissions - missing session address");const R=((e,t,r,i,o,n=!1,s,a,p,c)=>{const l={address:e,chainId:t,validAfter:r,validUntil:i,optimistic:n,whitelist:s,player:a,account:c};return o&&(l.policy=o),p&&(l.limit=p),l})(y,n.chainId,c,l,a,!1,u,s.player,m,n.id);return e.withOpenfortError(async()=>(await i.sessionsApi.createSession({createSessionRequest:R},{headers:{authorization:`Bearer ${i.config.backend.accessToken}`,"x-player-token":s.token,"x-auth-provider":s.thirdPartyProvider,"x-token-type":s.thirdPartyTokenType}})).data,{default:e.OpenfortErrorType.AUTHENTICATION_ERROR})})(i,c,a,p,l).catch(e=>{throw new r.JsonRpcError(r.RpcErrorCode.TRANSACTION_REJECTED,e.message)});if(d?.nextAction?.payload?.signableHash){let i;i=[300,324].includes(a.chainId)||a.implementationType&&[t.AccountType.CALIBUR].includes(a.implementationType)?await s.sign(d.nextAction.payload.signableHash,!1,!1):await s.sign(d.nextAction.payload.signableHash);return n(await e.withOpenfortError(async()=>(await c.sessionsApi.signatureSession({id:d.id,signatureRequest:{signature:i}})).data,{default:e.OpenfortErrorType.AUTHENTICATION_ERROR}).catch(e=>{throw new r.JsonRpcError(r.RpcErrorCode.TRANSACTION_REJECTED,e.message)}))}if(!1===d.isActive)throw new r.JsonRpcError(r.RpcErrorCode.TRANSACTION_REJECTED,"Failed to grant permissions");return n(d)};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/openfortError.js"),r=require("../../types/types.js"),n=require("./JsonRpcError.js");exports.revokeSession=async({params:t,signer:s,account:a,authentication:o,backendClient:i,policyId:c})=>{const p=t[0];if(!p.permissionContext)return await s.disconnect(),{};const d=await(async(r,n,t,s,a)=>{const o=((e,r,n,t,s)=>{const a={address:e,chainId:r,player:n,account:s};return t&&(a.policy=t),a})(r.permissionContext,t.chainId,s.player,a,t.id);return e.withOpenfortError(async()=>(await n.sessionsApi.revokeSession({revokeSessionRequest:o},{headers:{authorization:`Bearer ${n.config.backend.accessToken}`,"x-player-token":s.token,"x-auth-provider":s.thirdPartyProvider,"x-token-type":s.thirdPartyTokenType}})).data,{default:e.OpenfortErrorType.AUTHENTICATION_ERROR})})(p,i,a,o,c).catch(e=>{throw new n.JsonRpcError(n.RpcErrorCode.TRANSACTION_REJECTED,e.message)});if(d?.nextAction?.payload?.signableHash){let e;e=[300,324].includes(a.chainId)||a.implementationType&&[r.AccountType.CALIBUR].includes(a.implementationType)?await s.sign(d.nextAction.payload.signableHash,!1,!1):await s.sign(d.nextAction.payload.signableHash);return(await i.sessionsApi.signatureSession({id:d.id,signatureRequest:{signature:e}}).catch(e=>{throw new n.JsonRpcError(n.RpcErrorCode.TRANSACTION_REJECTED,e.message)})).data}return d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/openfortError.js"),r=require("../../types/types.js"),t=require("../../utils/authorization.js"),o=require("./JsonRpcError.js");const a=e=>{const r=e?.logs?.[0];return{blockHash:r?.blockHash,blockNumber:e?.blockNumber?.toString(),contractAddress:void 0,cumulativeGasUsed:e?.gasUsed,effectiveGasPrice:e?.gasFee,from:void 0,gasUsed:e?.gasUsed,logs:e?.logs||[],logsBloom:void 0,status:1===e?.status?"success":0===e?.status?"reverted":void 0,to:e?.to,transactionHash:e?.transactionHash,transactionIndex:r?.transactionIndex,type:"eip1559",blobGasPrice:void 0,blobGasUsed:void 0,root:void 0}};async function n(e,r){try{const t=await e.getCode(r);return"0x"!==t&&t.length>2}catch{return!1}}exports.sendCallsSync=async({params:s,signer:i,account:c,authentication:d,backendClient:p,rpcProvider:u,policyId:l})=>{const E=s[0]?.capabilities?.paymasterService?.policy??l;let T;if(c.accountType===r.AccountTypeEnum.DELEGATED_ACCOUNT){const[e,r]=await Promise.all([n(u,c.address),u.getTransactionCount(c.address)]);if(!e){const e=await t.prepareAndSignAuthorization({signer:i,accountAddress:c.address,contractAddress:c.implementationAddress,chainId:c.chainId,nonce:r});T=t.serializeSignedAuthorization(e)}}const A=await(async(r,t,a,n,s,i)=>{const c=r.map(e=>{if(!e.to)throw new o.JsonRpcError(o.RpcErrorCode.INVALID_PARAMS,'wallet_sendCalls requires a "to" field');return{to:String(e.to),data:e.data?String(e.data):void 0,value:e.value?String(e.value):void 0}});return e.withOpenfortError(async()=>(await t.transactionIntentsApi.createTransactionIntent({createTransactionIntentRequest:{account:a.id,policy:s,signedAuthorization:i,chainId:a.chainId,interactions:c}},{headers:{authorization:`Bearer ${t.config.backend.accessToken}`,"x-player-token":n.token,"x-auth-provider":n.thirdPartyProvider,"x-token-type":n.thirdPartyTokenType}})).data,{default:e.OpenfortErrorType.AUTHENTICATION_ERROR})})(s,p,c,d,E,T).catch(e=>{throw new o.JsonRpcError(o.RpcErrorCode.TRANSACTION_REJECTED,e.message)});if(A.response?.error.reason)throw new o.JsonRpcError(o.RpcErrorCode.TRANSACTION_REJECTED,A.response?.error.reason);if(A?.nextAction?.payload?.signableHash){let t;t=[300,324].includes(c.chainId)||c.implementationType&&[r.AccountType.CALIBUR].includes(c.implementationType)?await i.sign(A.nextAction.payload.signableHash,!1,!1):await i.sign(A.nextAction.payload.signableHash);const n=await e.withOpenfortError(async()=>await p.transactionIntentsApi.signature({id:A.id,signatureRequest:{signature:t}}),{default:e.OpenfortErrorType.AUTHENTICATION_ERROR}).catch(e=>{throw new o.JsonRpcError(o.RpcErrorCode.TRANSACTION_REJECTED,e.message)});if(0===n.data.response?.status)throw new o.JsonRpcError(o.RpcErrorCode.TRANSACTION_REJECTED,n.data.response?.error.reason);if(!n.data.response)throw new o.JsonRpcError(o.RpcErrorCode.TRANSACTION_REJECTED,"No transaction response received");return{id:A.id,receipt:a(n.data.response)}}if(!A.response)throw new o.JsonRpcError(o.RpcErrorCode.TRANSACTION_REJECTED,"No transaction response received");return{id:A.id,receipt:a(A.response)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var a=require("./sendCallSync.js");exports.sendCalls=async({params:n,signer:e,account:c,authentication:i,backendClient:r,rpcProvider:s,policyId:t})=>(await a.sendCallsSync({params:n,signer:e,account:c,authentication:i,backendClient:r,rpcProvider:s,policyId:t})).id;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./JsonRpcError.js"),r=require("./walletHelpers.js");const a=["types","domain","primaryType","message"],t=(r,t)=>{let o;if("string"==typeof r)try{o=JSON.parse(r)}catch(r){throw new e.JsonRpcError(e.RpcErrorCode.INVALID_PARAMS,`Failed to parse typed data JSON: ${r}`)}else{if("object"!=typeof r)throw new e.JsonRpcError(e.RpcErrorCode.INVALID_PARAMS,`Invalid typed data argument: ${r}`);o=r}if(!(e=>a.every(r=>r in e))(o))throw new e.JsonRpcError(e.RpcErrorCode.INVALID_PARAMS,`Invalid typed data argument. The following properties are required: \n ${a.join(", ")}`);const n=o.domain?.chainId;if(n&&("string"==typeof n&&(n.startsWith("0x")?o.domain.chainId=parseInt(n,16):o.domain.chainId=parseInt(n,10)),o.domain.chainId!==t))throw new e.JsonRpcError(e.RpcErrorCode.INVALID_PARAMS,`Invalid chainId, expected ${t}`);return o};exports.signTypedDataV4=async({params:a,method:o,signer:n,implementationType:s,rpcProvider:d,account:i})=>{const p=a[0],c=a[1];if(!p||!c)throw new e.JsonRpcError(e.RpcErrorCode.INVALID_PARAMS,`${o} requires an address and a typed data JSON`);const{chainId:h}=await d.detectNetwork(),I=t(c,h),y={...I.types};delete y.EIP712Domain;const{_TypedDataEncoder:m}=await import("@ethersproject/hash"),A=m.hash(I.domain,y,I.message);return await r.signMessage({hash:A,implementationType:s,chainId:h,signer:n,address:p,ownerAddress:i.ownerAddress,factoryAddress:i.factoryAddress,salt:i.salt})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../types/types.js");exports.parseTransactionRequest=function({from:e,...t}){return{to:t.to,data:t.data,accessList:t.accessList,chainId:(i=t.chainId,i.startsWith("0x")?parseInt(i,16):parseInt(i,10)),type:t.type&&{"0x0":"legacy","0x1":"eip2930","0x2":"eip1559"}[t.type]||"eip1559",maxPriorityFeePerGas:t.maxPriorityFeePerGas?BigInt(t.maxPriorityFeePerGas):void 0,maxFeePerGas:t.maxFeePerGas?BigInt(t.maxFeePerGas):void 0,gasPrice:t.gasPrice?BigInt(t.gasPrice):void 0,value:(a=t.value,s=BigInt,r=0n,void 0!==a?s(a):r),nonce:t.nonce?parseInt(t.nonce.toString(),16):void 0,gas:t.gas?BigInt(t.gas):void 0};var a,s,r,i},exports.prepareEOATransaction=async function(e,t,a){const s={...e};if(!s.nonce){const e=await t.getTransactionCount(a,"pending");s.nonce=`0x${e.toString(16)}`}if(!s.gas)try{const e=await t.estimateGas({from:a,to:s.to,data:s.data,value:s.value});s.gas=e.toHexString()}catch{s.gas="0x5208"}const r=s.maxFeePerGas&&s.maxPriorityFeePerGas,i=s.gasPrice;if(!r&&!i){const e=await t.getBlock("latest");if(null!==e.baseFeePerGas&&void 0!==e.baseFeePerGas){const a=e.baseFeePerGas,r=a.mul(12).div(10),i=await t.getGasPrice();let n=i.sub(a);n.lt(0)&&(n=i.mul(0));const o=r.add(n);s.maxFeePerGas=o.toHexString(),s.maxPriorityFeePerGas=n.toHexString(),s.type="0x2",delete s.gasPrice}else{const e=(await t.getGasPrice()).mul(12).div(10);s.gasPrice=e.toHexString(),s.type="0x0",delete s.maxFeePerGas,delete s.maxPriorityFeePerGas}}return s},exports.signMessage=async t=>{const{hash:a,signer:s,ownerAddress:r,factoryAddress:i,salt:n,chainId:o,address:c,implementationType:d}=t;let p=a;if([e.AccountType.UPGRADEABLE_V5,e.AccountType.UPGRADEABLE_V6,e.AccountType.ZKSYNC_UPGRADEABLE_V1,e.AccountType.ZKSYNC_UPGRADEABLE_V2].includes(d)){const e={name:"Openfort",version:"0.5",chainId:Number(o),verifyingContract:c},t={OpenfortMessage:[{name:"hashedMessage",type:"bytes32"}]},a={hashedMessage:p},{_TypedDataEncoder:s}=await import("@ethersproject/hash");p=s.hash(e,t,a)}const g=await s.sign(p,!1,!1);if(i&&n&&[e.AccountType.UPGRADEABLE_V5,e.AccountType.UPGRADEABLE_V6].includes(d)){const{id:e}=await import("@ethersproject/hash"),{defaultAbiCoder:t}=await import("@ethersproject/abi"),{hexConcat:a}=await import("@ethersproject/bytes"),s=a([e("createAccountWithNonce(address,bytes32,bool)").slice(0,10),t.encode(["address","bytes32","bool"],[r,n,!1])]);return a([t.encode(["address","bytes","bytes"],[i,s,g]),"0x6492649264926492649264926492649264926492649264926492649264926492"])}return g};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../core/configuration/account.js"),r=require("../core/configuration/authentication.js"),i=require("../core/errors/openfortError.js"),t=require("../core/errors/sentry.js"),n=require("../storage/istorage.js"),o=require("../utils/crypto.js"),s=require("../utils/debug.js"),a=require("./messaging/ReactNativeMessenger.js"),d=require("./messaging/browserMessenger/connect.js");require("./messaging/browserMessenger/backwardCompatibility.js");var c=require("./types.js");class u extends Error{constructor(){super("This embedded signer requires a password to be recovered")}}class h extends Error{constructor(){super("Wrong recovery passkey for this embedded signer")}}class g extends Error{constructor(){super("MissingProjectEntropyError")}}class l extends Error{constructor(){super("Wrong recovery password for this embedded signer")}}class y extends Error{constructor(){super("Not configured")}}class p extends Error{constructor(){super("OTP required")}}exports.IframeManager=class{messenger;connection;remote;storage;sdkConfiguration;isInitialized=!1;initializationPromise=null;hasFailed=!1;constructor(e,r,t){if(!e)throw new i.OpenfortError("Configuration is required for IframeManager",i.OpenfortErrorType.INVALID_CONFIGURATION);if(!r)throw new i.OpenfortError("Storage is required for IframeManager",i.OpenfortErrorType.INVALID_CONFIGURATION);if(!t)throw new i.OpenfortError("Messenger is required for IframeManager",i.OpenfortErrorType.INVALID_CONFIGURATION);this.sdkConfiguration=e,this.storage=r,this.messenger=t}async initialize(){if(!this.isInitialized){if(this.hasFailed)throw new i.OpenfortError("Failed to establish iFrame connection: Previous connection attempt failed",i.OpenfortErrorType.INTERNAL_ERROR);if(this.initializationPromise)await this.initializationPromise;else{this.initializationPromise=this.doInitialize();try{await this.initializationPromise,this.isInitialized=!0}catch(e){throw this.hasFailed=!0,this.initializationPromise=null,e}}}}async doInitialize(){s.debugLog("Initializing IframeManager connection..."),this.messenger.initialize({validateReceivedMessage:e=>!(!e||"object"!=typeof e),log:s.debugLog}),this.connection=d({messenger:this.messenger,timeout:1e4,log:s.debugLog});try{this.remote=await this.connection.promise,s.debugLog("IframeManager connection established")}catch(e){const r=e;throw t.sentry.captureException(r),this.destroy(),s.debugLog("Failed to establish connection:",r),new i.OpenfortError(`Failed to establish iFrame connection: ${r.cause||r.message}`,i.OpenfortErrorType.INTERNAL_ERROR,e)}}async ensureConnection(){if(this.isInitialized&&this.remote||await this.initialize(),!this.remote)throw new i.OpenfortError("Failed to establish connection",i.OpenfortErrorType.INTERNAL_ERROR);return this.remote}handleError(e){if(c.isErrorResponse(e)){if(e.error===c.NOT_CONFIGURED_ERROR)throw this.storage.remove(n.StorageKeys.ACCOUNT),new y;if(e.error===c.MISSING_USER_ENTROPY_ERROR)throw this.storage.remove(n.StorageKeys.ACCOUNT),new u;if(e.error===c.MISSING_PROJECT_ENTROPY_ERROR)throw this.storage.remove(n.StorageKeys.ACCOUNT),new g;if(e.error===c.INCORRECT_USER_ENTROPY_ERROR)throw new l;if(e.error===c.MISSING_PASSKEY_ERROR)throw this.storage.remove(n.StorageKeys.ACCOUNT),new u;if(e.error===c.INCORRECT_PASSKEY_ERROR)throw new h;if(e.error===c.OTP_REQUIRED_ERROR)throw new p;throw this.storage.remove(n.StorageKeys.ACCOUNT),new i.OpenfortError(`Unknown error: ${e.error}`,i.OpenfortErrorType.INTERNAL_ERROR)}throw e}async buildRequestConfiguration(){const e=await r.Authentication.fromStorage(this.storage);if(!e)throw new i.OpenfortError("Must be authenticated to create a signer",i.OpenfortErrorType.NOT_LOGGED_IN_ERROR);const t={auth:c.ShieldAuthType.OPENFORT,authProvider:e.thirdPartyProvider,token:e.token,tokenType:e.thirdPartyTokenType};return{thirdPartyProvider:e.thirdPartyProvider,thirdPartyTokenType:e.thirdPartyTokenType,token:e.token,publishableKey:this.sdkConfiguration.baseConfiguration.publishableKey,openfortURL:this.sdkConfiguration.backendUrl,shieldAuthentication:t,shieldAPIKey:this.sdkConfiguration.shieldConfiguration?.shieldPublishableKey||"",shieldURL:this.sdkConfiguration.shieldUrl,encryptionKey:this.sdkConfiguration?.shieldConfiguration?.shieldEncryptionKey??void 0,appNativeIdentifier:this.sdkConfiguration?.nativeAppIdentifier??void 0}}async buildIFrameRequestConfiguration(){const e=await r.Authentication.fromStorage(this.storage);if(!e)throw new i.OpenfortError("Must be authenticated to create a signer",i.OpenfortErrorType.NOT_LOGGED_IN_ERROR);const t={auth:c.ShieldAuthType.OPENFORT,authProvider:e.thirdPartyProvider,token:e.token,tokenType:e.thirdPartyTokenType};return{thirdPartyTokenType:e.thirdPartyTokenType??null,thirdPartyProvider:e.thirdPartyProvider??null,accessToken:e.token,playerID:e.player,recovery:t,chainId:null,password:null,passkey:null}}async create(e){if(!this.sdkConfiguration.shieldConfiguration)throw new Error("shieldConfiguration is required");const r=await this.ensureConnection(),i=await this.buildIFrameRequestConfiguration();i.chainId=e.chainId??null,i.password=e?.entropy?.recoveryPassword??null,i.recovery={...i.recovery,encryptionSession:e?.entropy?.encryptionSession},i.passkey=e?.entropy?.passkey??null;const t={uuid:o.randomUUID(),action:c.Event.CREATE,recovery:i.recovery,publishableKey:this.sdkConfiguration.baseConfiguration.publishableKey,shieldAPIKey:this.sdkConfiguration.shieldConfiguration?.shieldPublishableKey||"",accessToken:i.accessToken,playerID:i.playerID,thirdPartyProvider:i.thirdPartyProvider,thirdPartyTokenType:i.thirdPartyTokenType,encryptionKey:i.password,encryptionSession:i.recovery?.encryptionSession??null,passkey:i.passkey??null,openfortURL:this.sdkConfiguration.backendUrl,shieldURL:this.sdkConfiguration.shieldUrl,chainId:e.chainId??null,accountType:e.accountType,chainType:e.chainType,nativeAppIdentifier:this.sdkConfiguration?.nativeAppIdentifier??null},n=await r.create(t);return c.isErrorResponse(n)&&this.handleError(n),"undefined"!=typeof sessionStorage&&sessionStorage.setItem("iframe-version",n.version??"undefined"),n}async recover(r){if(!this.sdkConfiguration.shieldConfiguration)throw new Error("shieldConfiguration is required");const i=await e.Account.fromStorage(this.storage),t=await this.ensureConnection(),n=await this.buildIFrameRequestConfiguration();n.chainId=i?.chainId??null,n.password=r?.entropy?.recoveryPassword??null,n.recovery={...n.recovery,encryptionSession:r?.entropy?.encryptionSession},n.passkey=r?.entropy?.passkey??null;const s={uuid:o.randomUUID(),action:c.Event.RECOVER,recovery:n.recovery,publishableKey:this.sdkConfiguration.baseConfiguration.publishableKey,shieldAPIKey:this.sdkConfiguration.shieldConfiguration?.shieldPublishableKey||"",accessToken:n.accessToken,playerID:n.playerID,thirdPartyProvider:n.thirdPartyProvider,thirdPartyTokenType:n.thirdPartyTokenType,encryptionKey:n.password,encryptionSession:n.recovery?.encryptionSession??null,passkey:n.passkey??null,openfortURL:this.sdkConfiguration.backendUrl,shieldURL:this.sdkConfiguration.shieldUrl,account:r.account,nativeAppIdentifier:this.sdkConfiguration?.nativeAppIdentifier??null},a=await t.recover(s);return c.isErrorResponse(a)&&this.handleError(a),"undefined"!=typeof sessionStorage&&sessionStorage.setItem("iframe-version",a.version??"undefined"),a}async sign(e,r,i,t){s.debugLog("[iframe] ensureConnection");const n=await this.ensureConnection(),a=new c.SignRequest(o.randomUUID(),e,await this.buildRequestConfiguration(),r,i,t);s.debugLog("[iframe] done ensureConnection");const d=await n.sign(a);return s.debugLog("[iframe] response",d),c.isErrorResponse(d)&&this.handleError(d),"undefined"!=typeof sessionStorage&&sessionStorage.setItem("iframe-version",d.version??"undefined"),d.signature}async switchChain(e){const r=await this.ensureConnection(),i=new c.SwitchChainRequest(o.randomUUID(),e,await this.buildRequestConfiguration()),t=await r.switchChain(i);return c.isErrorResponse(t)&&this.handleError(t),t}async export(){const e=await this.ensureConnection(),r=new c.ExportPrivateKeyRequest(o.randomUUID(),await this.buildRequestConfiguration()),i=await e.export(r);return c.isErrorResponse(i)&&this.handleError(i),"undefined"!=typeof sessionStorage&&sessionStorage.setItem("iframe-version",i.version??"undefined"),i.key}async setRecoveryMethod(e,r,i,t,n){const s=await this.ensureConnection(),a=new c.SetRecoveryMethodRequest(o.randomUUID(),e,await this.buildRequestConfiguration(),r,i,t,n),d=await s.setRecoveryMethod(a);c.isErrorResponse(d)&&this.handleError(d),"undefined"!=typeof sessionStorage&&sessionStorage.setItem("iframe-version",d.version??"undefined")}async getCurrentDevice(e){const r=await this.ensureConnection(),i=new c.GetCurrentDeviceRequest(o.randomUUID(),e);try{const e=await r.getCurrentDevice(i);return c.isErrorResponse(e)&&this.handleError(e),"undefined"!=typeof sessionStorage&&sessionStorage.setItem("iframe-version",e.version??"undefined"),e}catch(e){if(e instanceof y)return null;throw e}}async updateAuthentication(){if(!this.isLoaded()||!this.remote)return void s.debugLog("IframeManager not loaded, skipping authentication update");const e=await r.Authentication.fromStorage(this.storage);if(!e)return void s.debugLog("No authentication found, skipping update");const i=new c.UpdateAuthenticationRequest(o.randomUUID(),e.token);s.debugLog("Updating authentication in iframe with token");const t=await this.remote.updateAuthentication(i);c.isErrorResponse(t)&&this.handleError(t)}async disconnect(){const e=await this.ensureConnection(),r={uuid:o.randomUUID()};await e.logout(r)}async onMessage(e){s.debugLog("[HANDSHAKE DEBUG] IframeManager.onMessage called with:",e),this.messenger instanceof a.ReactNativeMessenger?(this.isInitialized||this.connection?s.debugLog(`[HANDSHAKE DEBUG] Connection already initialized (isInitialized: ${this.isInitialized}, hasConnection: ${!!this.connection})`):(s.debugLog("[HANDSHAKE DEBUG] First message received, initializing connection..."),this.initialize().catch(e=>{s.debugLog("[HANDSHAKE DEBUG] Failed to initialize connection:",e)})),s.debugLog("[HANDSHAKE DEBUG] Passing message to ReactNativeMessenger"),this.messenger.handleMessage(e)):s.debugLog("[HANDSHAKE DEBUG] Not a ReactNativeMessenger, ignoring message")}isLoaded(){return this.isInitialized&&void 0!==this.remote}destroy(){this.connection&&this.connection.destroy(),this.remote=void 0,this.isInitialized=!1,this.connection=void 0,this.initializationPromise=null}},exports.MissingProjectEntropyError=g,exports.MissingRecoveryPasswordError=u,exports.NotConfiguredError=y,exports.OTPRequiredError=p,exports.WrongRecoveryPasswordError=l;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../utils/debug.js"),t=require("./browserMessenger/PenpalError.js");require("./browserMessenger/backwardCompatibility.js");exports.ReactNativeMessenger=class{messagePoster;handlers=new Set;isInitialized=!1;hasBeenUsed=!1;validateMessage;messageBuffer=[];nextNumericId=1;stringToNumericId=new Map;numericToStringId=new Map;constructor(s){if(this.messagePoster=s,!s||"function"!=typeof s.postMessage)throw new t("CONNECTION_DESTROYED","Invalid message poster provided");e.debugLog("ReactNativeMessenger created")}initialize(s){if(this.isInitialized)return void e.debugLog("ReactNativeMessenger already initialized");if(this.hasBeenUsed)throw new t("CONNECTION_DESTROYED","A messenger can only be used for a single connection");this.validateMessage=s?.validateReceivedMessage,this.isInitialized=!0,this.hasBeenUsed=!0,e.debugLog(`ReactNativeMessenger initialized, processing ${this.messageBuffer.length} buffered messages`);const a=[...this.messageBuffer];this.messageBuffer=[],a.forEach(e=>{this.processMessage(e)})}sendMessage(s,a){if(!this.isInitialized)throw new t("CONNECTION_DESTROYED","ReactNativeMessenger not initialized");a&&a.length>0&&e.debugLog("React Native: Ignoring transferables (not supported)"),e.debugLog("ReactNativeMessenger sending message:",s);try{let t=s;"penpal"===s?.namespace&&(t=this.convertToDeprecatedFormat(s),e.debugLog("React Native: Converted message:",t));const a=JSON.stringify(t);this.messagePoster.postMessage(a)}catch(e){throw new t("TRANSMISSION_FAILED",`Failed to send message through React Native WebView: ${e instanceof Error?e.message:String(e)}`)}}addMessageHandler(t){this.handlers.add(t),e.debugLog(`Message handler added, total handlers: ${this.handlers.size}`)}removeMessageHandler(t){this.handlers.delete(t),e.debugLog(`Message handler removed, total handlers: ${this.handlers.size}`)}handleMessage(t){if(e.debugLog("[HANDSHAKE DEBUG] ReactNativeMessenger.handleMessage called with:",t),!this.isInitialized){const s=this.messageBuffer.length+1;return e.debugLog(`[HANDSHAKE DEBUG] ReactNativeMessenger: Message received but not initialized, buffering message (${s} total)`),void this.messageBuffer.push(t)}e.debugLog("[HANDSHAKE DEBUG] ReactNativeMessenger is initialized, processing message"),this.processMessage(t)}processMessage(t){e.debugLog("[HANDSHAKE DEBUG] ReactNativeMessenger processing message:",t);const s=this.convertFromDeprecatedFormat(t);if(e.debugLog("[HANDSHAKE DEBUG] Message after conversion:",s),this.validateMessage&&!this.validateMessage(s))return void e.debugLog("[HANDSHAKE DEBUG] Message validation failed:",s);e.debugLog(`[HANDSHAKE DEBUG] Routing message to ${this.handlers.size} handlers`);let a=0;this.handlers.forEach(t=>{a++;try{e.debugLog(`[HANDSHAKE DEBUG] Calling handler ${a}/${this.handlers.size}`),t(s),e.debugLog(`[HANDSHAKE DEBUG] Handler ${a} completed successfully`)}catch(t){e.debugLog(`[HANDSHAKE DEBUG] Error in handler ${a}:`,t)}})}convertToDeprecatedFormat(t){if("penpal"!==t?.namespace)return t;switch(t.type){case"SYN":{const s={originalMessage:t};return e.debugLog("React Native: Converting SYN to deprecated format to avoid MessagePorts",s),{penpal:"syn",participantId:t.participantId}}case"ACK1":return e.debugLog("React Native: Converting ACK1 to deprecated format",{originalMessage:t}),{penpal:"synAck",methodNames:t.methodPaths||[]};case"ACK2":return e.debugLog("React Native: Converting ACK2 to deprecated format",{originalMessage:t}),{penpal:"ack"};case"REPLY":{e.debugLog("React Native: Converting REPLY to deprecated format",{originalMessage:t});const s=this.getNumericId(t.callId);return t.isError?{penpal:"reply",id:s,resolution:"rejected",returnValue:t.value,returnValueIsError:t.isSerializedErrorInstance||!1}:{penpal:"reply",id:s,resolution:"fulfilled",returnValue:t.value}}case"CALL":e.debugLog("React Native: Converting CALL to deprecated format",{originalMessage:t});return{penpal:"call",id:this.getNumericId(t.id),methodName:t.methodPath.join("."),args:t.args};case"DESTROY":return{namespace:"penpal",type:"DESTROY"};default:return t}}convertFromDeprecatedFormat(t){if(t?.penpal)switch(t.penpal){case"syn":{e.debugLog("[HANDSHAKE DEBUG] React Native: Converting deprecated SYN to modern format",{originalMessage:t});const s={namespace:"penpal",type:"SYN",participantId:t.participantId};return e.debugLog("[HANDSHAKE DEBUG] Converted SYN:",s),s}case"synAck":{e.debugLog("[HANDSHAKE DEBUG] React Native: Converting deprecated synAck to modern ACK1 format",{originalMessage:t});const s={namespace:"penpal",type:"ACK1",methodPaths:t.methodNames?.map(e=>e.split("."))||[],channel:void 0};return e.debugLog("[HANDSHAKE DEBUG] Converted ACK1:",s),s}case"ack":{e.debugLog("[HANDSHAKE DEBUG] React Native: Converting deprecated ack to modern ACK2 format",{originalMessage:t});const s={namespace:"penpal",type:"ACK2",channel:void 0};return e.debugLog("[HANDSHAKE DEBUG] Converted ACK2:",s),s}case"reply":{e.debugLog("React Native: Converting deprecated reply to modern REPLY format",{originalMessage:t});const s=this.getStringId(t.id);s||e.debugLog(`Warning: No string ID mapping found for numeric ID ${t.id}, using as-is`);const a=s||String(t.id);return"fulfilled"===t.resolution?{namespace:"penpal",type:"REPLY",callId:a,value:t.returnValue}:{namespace:"penpal",type:"REPLY",callId:a,isError:!0,value:t.returnValue,isSerializedErrorInstance:t.returnValueIsError||!1}}case"call":{e.debugLog("React Native: Converting deprecated call to modern CALL format",{originalMessage:t});const s=this.getStringId(t.id);return s||e.debugLog(`Warning: No string ID mapping found for numeric ID ${t.id}, using as-is`),{namespace:"penpal",type:"CALL",id:s||String(t.id),methodPath:t.methodName.split("."),args:t.args}}default:return e.debugLog("React Native: Unknown deprecated penpal message type:",t.penpal),t}return t}setupMessagePort(t){e.debugLog("React Native: setupMessagePort called but ignored (MessagePort not supported)")}destroy(){this.isInitialized&&(this.handlers.clear(),this.messageBuffer=[],this.stringToNumericId.clear(),this.numericToStringId.clear(),this.nextNumericId=1,this.isInitialized=!1,this.hasBeenUsed=!1,e.debugLog("ReactNativeMessenger destroyed and ready for reuse"))}reset(){e.debugLog("ReactNativeMessenger reset for reuse"),this.handlers.clear(),this.messageBuffer=[],this.isInitialized=!1,this.hasBeenUsed=!1,this.nextNumericId=1,this.stringToNumericId.clear(),this.numericToStringId.clear()}getNumericId(t){let s=this.stringToNumericId.get(t);return s||(s=this.nextNumericId++,this.stringToNumericId.set(t,s),this.numericToStringId.set(s,t),e.debugLog(`ID mapping created: "${t}" -> ${s}`)),s}getStringId(e){return this.numericToStringId.get(e)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./guards.js"),a=require("./namespace.js"),r=require("./PenpalBugError.js");const l="deprecated-penpal";var n,t;!function(e){e.Call="call",e.Reply="reply",e.Syn="syn",e.SynAck="synAck",e.Ack="ack"}(n||(n={})),function(e){e.Fulfilled="fulfilled",e.Rejected="rejected"}(t||(t={}));const s=e=>e.split("."),i=e=>e.join("."),p=e=>new r(`Unexpected message to translate: ${JSON.stringify(e)}`);exports.DEPRECATED_PENPAL_PARTICIPANT_ID=l,exports.downgradeMessage=a=>{if(e.isAck1Message(a))return{penpal:n.SynAck,methodNames:a.methodPaths.map(i)};if(e.isCallMessage(a))return{penpal:n.Call,id:a.id,methodName:i(a.methodPath),args:a.args};if(e.isReplyMessage(a))return a.isError?{penpal:n.Reply,id:a.callId,resolution:t.Rejected,...a.isSerializedErrorInstance?{returnValue:a.value,returnValueIsError:!0}:{returnValue:a.value}}:{penpal:n.Reply,id:a.callId,resolution:t.Fulfilled,returnValue:a.value};throw p(a)},exports.isDeprecatedMessage=a=>e.isObject(a)&&"penpal"in a,exports.upgradeMessage=e=>{if(e.penpal===n.Syn)return{namespace:a,channel:void 0,type:"SYN",participantId:l};if(e.penpal===n.SynAck)return{namespace:a,channel:void 0,type:"ACK1",methodPaths:e.methodNames.map(s)};if(e.penpal===n.Ack)return{namespace:a,channel:void 0,type:"ACK2"};if(e.penpal===n.Call)return{namespace:a,channel:void 0,type:"CALL",id:e.id,methodPath:s(e.methodName),args:e.args};if(e.penpal===n.Reply)return e.resolution===t.Fulfilled?{namespace:a,channel:void 0,type:"REPLY",callId:e.id,value:e.returnValue}:{namespace:a,channel:void 0,type:"REPLY",callId:e.id,isError:!0,...e.returnValueIsError?{value:e.returnValue,isSerializedErrorInstance:!0}:{value:e.returnValue}};throw p(e)};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./guards.js"),s=require("./namespace.js"),n=require("./once.js"),r=require("./PenpalError.js"),t=require("./shakeHands.js");const o=new WeakSet;module.exports=({messenger:a,methods:i={},timeout:c,channel:d,log:u})=>{if(!a)throw new r("INVALID_ARGUMENT","messenger must be defined");if(o.has(a))throw new r("INVALID_ARGUMENT","A messenger can only be used for a single connection");o.add(a);const g=[a.destroy],h=n(e=>{if(e){const e={namespace:s,channel:d,type:"DESTROY"};try{a.sendMessage(e)}catch(e){}}for(const e of g)e();u?.("Connection destroyed")}),l=s=>e.isMessage(s)&&s.channel===d;return{promise:(async()=>{try{a.initialize({log:u,validateReceivedMessage:l}),a.addMessageHandler(s=>{e.isDestroyMessage(s)&&h(!1)});const{remoteProxy:s,destroy:n}=await t({messenger:a,methods:i,timeout:c,channel:d,log:u});return g.push(n),s}catch(e){throw h(!0),e}})(),destroy:()=>{h(!0)}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./errorSerialization.js"),r=require("./guards.js"),a=require("./methodSerialization.js"),t=require("./namespace.js"),s=require("./PenpalError.js"),n=require("./Reply.js");const o=(r,a,s)=>({namespace:t,channel:r,type:"REPLY",callId:a,isError:!0,...s instanceof Error?{value:e.serializeError(s),isSerializedErrorInstance:!0}:{value:s}});module.exports=(e,i,l,d)=>{let h=!1;const c=async c=>{if(h)return;if(!r.isCallMessage(c))return;d?.(`Received ${a.formatMethodPath(c.methodPath)}() call`,c);const{methodPath:u,args:m,id:M}=c;let f,g;try{const e=a.getMethodAtMethodPath(u,i);if(!e)throw new s("METHOD_NOT_FOUND",`Method \`${a.formatMethodPath(u)}\` is not found.`);let r=await e(...m);r instanceof n&&(g=r.transferables,r=await r.value),f={namespace:t,channel:l,type:"REPLY",callId:M,value:r}}catch(e){f=o(l,M,e)}if(!h)try{d?.(`Sending ${a.formatMethodPath(u)}() reply`,f),e.sendMessage(f,g)}catch(r){throw"DataCloneError"===r.name&&(f=o(l,M,r),d?.(`Sending ${a.formatMethodPath(u)}() reply`,f),e.sendMessage(f)),r}};return e.addMessageHandler(c),()=>{h=!0,e.removeMessageHandler(c)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../../utils/crypto.js"),t=require("./CallOptions.js"),r=require("./errorSerialization.js"),a=require("./guards.js"),o=require("./methodSerialization.js"),s=require("./namespace.js"),n=require("./PenpalError.js");const l=new Set(["apply","call","bind"]),i=(e,t,r=[])=>new Proxy(r.length?()=>{}:Object.create(null),{get(a,o){if("then"!==o)return r.length&&l.has(o)?Reflect.get(a,o):i(e,t,[...r,o])},apply:(t,a,o)=>e(r,o)}),d=e=>new n("CONNECTION_DESTROYED",`Method call ${o.formatMethodPath(e)}() failed due to destroyed connection`);module.exports=(l,c,h)=>{let u=!1;const m=new Map,f=e=>{if(!a.isReplyMessage(e))return;const{callId:t,value:s,isError:n,isSerializedErrorInstance:l}=e,i=m.get(t);i&&(m.delete(t),h?.(`Received ${o.formatMethodPath(i.methodPath)}() call`,e),n?i.reject(l?r.deserializeError(s):s):i.resolve(s))};l.addMessageHandler(f);return{remoteProxy:i((r,a)=>{if(u)throw d(r);const i=e.randomUUID(),f=a[a.length-1],g=f instanceof t,{timeout:M,transferables:p}=g?f:{},P=g?a.slice(0,-1):a;return new Promise((e,t)=>{const a=void 0!==M?window.setTimeout(()=>{m.delete(i),t(new n("METHOD_CALL_TIMEOUT",`Method call ${o.formatMethodPath(r)}() timed out after ${M}ms`))},M):void 0;m.set(i,{methodPath:r,resolve:e,reject:t,timeoutId:a});try{const e={namespace:s,channel:c,type:"CALL",id:i,methodPath:r,args:P};h?.(`Sending ${o.formatMethodPath(r)}() call`,e),l.sendMessage(e,p)}catch(e){t(new n("TRANSMISSION_FAILED",e.message))}})},h),destroy:()=>{u=!0,l.removeMessageHandler(f);for(const{methodPath:e,reject:t,timeoutId:r}of m.values())clearTimeout(r),t(d(e));m.clear()}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./PenpalError.js");exports.deserializeError=({name:r,message:s,stack:a,penpalCode:n})=>{const o=n?new e(n,s):new Error(s);return o.name=r,o.stack=a,o},exports.serializeError=r=>({name:r.name,message:r.message,stack:r.stack,penpalCode:r instanceof e?r.code:void 0});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./namespace.js");const s=e=>"object"==typeof e&&null!==e;exports.isAck1Message=e=>"ACK1"===e.type,exports.isAck2Message=e=>"ACK2"===e.type,exports.isCallMessage=e=>"CALL"===e.type,exports.isDestroyMessage=e=>"DESTROY"===e.type,exports.isFunction=e=>"function"==typeof e,exports.isMessage=t=>s(t)&&t.namespace===e,exports.isObject=s,exports.isReplyMessage=e=>"REPLY"===e.type,exports.isSynMessage=e=>"SYN"===e.type;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../backwardCompatibility.js"),s=require("../guards.js"),i=require("../PenpalBugError.js"),t=require("../PenpalError.js");module.exports=class{#e;#s;#i;#t;#r;#o=new Set;#a;#n=!1;constructor({remoteWindow:e,allowedOrigins:s}){if(!e)throw new t("INVALID_ARGUMENT","remoteWindow must be defined");this.#e=e,this.#s=s?.length?s:[window.origin]}initialize=({log:e,validateReceivedMessage:s})=>{this.#i=e,this.#t=s,window.addEventListener("message",this.#g)};sendMessage=(t,r)=>{if(s.isSynMessage(t)){const e=this.#d(t);return void this.#e.postMessage(t,{targetOrigin:e,transfer:r})}if(s.isAck1Message(t)||this.#n){const s=this.#n?e.downgradeMessage(t):t,i=this.#d(t);return void this.#e.postMessage(s,{targetOrigin:i,transfer:r})}if(s.isAck2Message(t)){const{port1:e,port2:s}=new MessageChannel;this.#a=e,e.addEventListener("message",this.#l),e.start();const i=[s,...r||[]],o=this.#d(t);return void this.#e.postMessage(t,{targetOrigin:o,transfer:i})}if(!this.#a)throw new i("Port is undefined");this.#a.postMessage(t,{transfer:r})};addMessageHandler=e=>{this.#o.add(e)};removeMessageHandler=e=>{this.#o.delete(e)};destroy=()=>{window.removeEventListener("message",this.#g),this.#h(),this.#o.clear()};#c=e=>this.#s.some(s=>s instanceof RegExp?s.test(e):s===e||"*"===s);#d=e=>{if(s.isSynMessage(e))return"*";if(!this.#r)throw new i("Concrete remote origin not set");return"null"===this.#r&&this.#s.includes("*")?"*":this.#r};#h=()=>{this.#a?.removeEventListener("message",this.#l),this.#a?.close(),this.#a=void 0};#g=({source:t,origin:r,ports:o,data:a})=>{if(t===this.#e&&(e.isDeprecatedMessage(a)&&(this.#i?.("Please upgrade the child window to the latest version of Penpal."),this.#n=!0,a=e.upgradeMessage(a)),this.#t?.(a)))if(this.#c(r)){if(s.isSynMessage(a)&&(this.#h(),this.#r=r),s.isAck2Message(a)&&!this.#n){if([this.#a]=o,!this.#a)throw new i("No port received on ACK2");this.#a.addEventListener("message",this.#l),this.#a.start()}for(const e of this.#o)e(a)}else this.#i?.(`Received a message from origin \`${r}\` which did not match allowed origins \`[${this.#s.join(", ")}]\``)};#l=({data:e})=>{if(this.#t?.(e))for(const s of this.#o)s(e)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var t=require("./guards.js");const o=(e,s=[])=>{const r=[];for(const c of Object.keys(e)){const n=e[c];t.isFunction(n)?r.push([...s,c]):t.isObject(n)&&r.push(...o(n,[...s,c]))}return r};exports.extractMethodPathsFromMethods=o,exports.formatMethodPath=t=>t.join("."),exports.getMethodAtMethodPath=(o,e)=>{const s=o.reduce((o,e)=>t.isObject(o)?o[e]:void 0,e);return t.isFunction(s)?s:void 0};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("../../../utils/crypto.js"),s=require("./backwardCompatibility.js"),r=require("./connectCallHandler.js"),t=require("./connectRemoteProxy.js"),a=require("./getPromiseWithResolvers.js"),n=require("./guards.js"),o=require("./methodSerialization.js"),i=require("./namespace.js"),c=require("./PenpalError.js");module.exports=({messenger:d,methods:h,timeout:m,channel:u,log:A})=>{const p=e.randomUUID();let I;const l=[];let g=!1;const P=o.extractMethodPathsFromMethods(h),{promise:S,resolve:N,reject:C}=a(),y=setTimeout(()=>{C(new c("CONNECTION_TIMEOUT",`Connection timed out after ${m}ms`))},m),E=()=>{for(const e of l)e()},M=()=>{if(g)return;l.push(r(d,h,u,A));const{remoteProxy:e,destroy:s}=t(d,u,A);l.push(s),clearTimeout(y),g=!0,N({remoteProxy:e,destroy:E})},T=()=>{const e={namespace:i,type:"SYN",channel:u,participantId:p};A?.("Sending handshake SYN",e);try{d.sendMessage(e)}catch(e){C(new c("TRANSMISSION_FAILED",e.message))}},R=e=>{n.isSynMessage(e)&&(e=>{if(A?.("Received handshake SYN",e),e.participantId===I&&I!==s.DEPRECATED_PENPAL_PARTICIPANT_ID)return;if(I=e.participantId,T(),!(p>I||I===s.DEPRECATED_PENPAL_PARTICIPANT_ID))return;const r={namespace:i,channel:u,type:"ACK1",methodPaths:P};A?.("Sending handshake ACK1",r);try{d.sendMessage(r)}catch(e){C(new c("TRANSMISSION_FAILED",e.message))}})(e),n.isAck1Message(e)&&(e=>{A?.("Received handshake ACK1",e);const s={namespace:i,channel:u,type:"ACK2"};A?.("Sending handshake ACK2",s);try{d.sendMessage(s)}catch(e){return void C(new c("TRANSMISSION_FAILED",e.message))}M()})(e),n.isAck2Message(e)&&(e=>{A?.("Received handshake ACK2",e),M()})(e)};return d.addMessageHandler(R),l.push(()=>d.removeMessageHandler(R)),T(),S};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{CallOptions.js → CallOptions.cjs}
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/cjs/sdk/src/wallets/messaging/browserMessenger/{PenpalError.js → PenpalError.cjs}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|