@openfort/openfort-js 0.10.36-beta.2 → 0.10.36-beta.3
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.js +1 -1
- package/dist/cjs/sdk/src/api/auth.js +1 -1
- package/dist/cjs/sdk/src/api/embeddedWallet.js +1 -1
- package/dist/cjs/sdk/src/auth/authManager.js +1 -1
- package/dist/cjs/sdk/src/core/configuration/account.js +1 -1
- package/dist/cjs/sdk/src/core/errors/sentry.js +1 -1
- package/dist/cjs/sdk/src/core/openfort.js +1 -1
- package/dist/cjs/sdk/src/core/openfortInternal.js +1 -1
- package/dist/cjs/sdk/src/storage/lazyStorage.js +1 -1
- package/dist/cjs/sdk/src/storage/scopedStorage.js +1 -0
- package/dist/cjs/sdk/src/utils/chains/index.js +1 -1
- package/dist/cjs/sdk/src/version.js +1 -1
- package/dist/cjs/sdk/src/wallets/embedded.js +1 -1
- package/dist/cjs/sdk/src/wallets/evm/getAssets.js +1 -1
- package/dist/cjs/sdk/src/wallets/evm/registerSession.js +1 -1
- package/dist/cjs/sdk/src/wallets/evm/revokeSession.js +1 -1
- package/dist/cjs/sdk/src/wallets/evm/sendCallSync.js +1 -1
- package/dist/index.d.ts +299 -56
- 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/auth/authManager.js +1 -1
- package/dist/sdk/src/core/configuration/account.js +1 -1
- package/dist/sdk/src/core/errors/sentry.js +1 -1
- package/dist/sdk/src/core/openfort.js +1 -1
- package/dist/sdk/src/core/openfortInternal.js +1 -1
- package/dist/sdk/src/storage/lazyStorage.js +1 -1
- package/dist/sdk/src/storage/scopedStorage.js +1 -0
- package/dist/sdk/src/utils/chains/index.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/getAssets.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/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var t=require("../utils/debug.js"),e=require("../utils/promiseUtils.js"),r=require("../types/types.js"),i=require("./config/config.js"),n=require("./configuration/authentication.js"),o=require("./errors/authErrorCodes.js"),a=require("./errors/openfortError.js");exports.OpenfortInternal=class{storage;authManager;eventEmitter;constructor(t,e,r){this.storage=t,this.authManager=e,this.eventEmitter=r}async getThirdPartyAuthToken(){const t=i.SDKConfiguration.getInstance();if(!t?.thirdPartyAuth)throw new a.RequestError("No third party configuration found");const{getAccessToken:e,provider:r}=t.thirdPartyAuth;if(!e||!r)throw new a.ConfigurationError("Third party is not configured. Please configure getAccessToken and thirdPartyAuthProvider in your Openfort instance");const s=await e();if(!s)throw new a.AuthenticationError(o.OPENFORT_AUTH_ERROR_CODES.INVALID_TOKEN,"Could not get access token");let u=(await n.Authentication.fromStorage(this.storage))?.userId;if(!u){u=(await this.authManager.authenticateThirdParty(r,s)).userId}return new n.Authentication("third_party",s,u,r).save(this.storage),s}async getAccessToken(){if(i.SDKConfiguration.getInstance()?.thirdPartyAuth)return this.getThirdPartyAuthToken();return(await n.Authentication.fromStorage(this.storage))?.token??null}async validateAndRefreshToken(s){return e.singlePromise(async()=>{if(i.SDKConfiguration.getInstance()?.thirdPartyAuth)return void await this.getThirdPartyAuthToken();const e=await n.Authentication.fromStorage(this.storage);if(!e)throw new a.SessionError(o.OPENFORT_AUTH_ERROR_CODES.NOT_LOGGED_IN,"Must be logged in to validate and refresh token");let u;t.debugLog("validating credentials...");try{u=await this.authManager.validateCredentials(e,s)}catch(t){throw n.Authentication.clear(this.storage),this.eventEmitter.emit(r.OpenfortEvents.ON_LOGOUT),t}if(!u.user?.id)throw new a.RequestError("No user found in credentials");u.token!==e.token&&(t.debugLog("tokens refreshed"),new n.Authentication("session",u.token,u.user.id).save(this.storage))},"openfort.validateAndRefreshToken")}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("../core/errors/openfortError.js"),t=require("./storage.js");exports.LazyStorage=class{realStorage=null;customStorage;constructor(e){this.customStorage=
|
|
1
|
+
"use strict";var e=require("../core/errors/openfortError.js"),t=require("./scopedStorage.js"),r=require("./storage.js");exports.LazyStorage=class{realStorage=null;customStorage;publishableKey;constructor(e,t){this.publishableKey=e,this.customStorage=t}getRealStorage(){if(!this.realStorage){let o;if(this.customStorage)o=this.customStorage;else{if("undefined"==typeof window||"undefined"==typeof localStorage)throw new e.ConfigurationError("Storage not available. Please provide custom storage or use in browser environment.");o=new r.StorageImplementation(localStorage)}this.realStorage=new t.ScopedStorage(o,this.publishableKey)}return this.realStorage}async get(e){return this.getRealStorage().get(e)}save(e,t){this.getRealStorage().save(e,t)}remove(e){this.getRealStorage().remove(e)}flush(){this.getRealStorage().flush()}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("./istorage.js");exports.ScopedStorage=class{storage;scope;constructor(e,s){this.storage=e,this.scope=this.createScope(s)}createScope(e){return e.substring(8).substring(0,8)}scopeKey(e){return`${this.scope}.${e}`}async get(e){return this.storage.get(this.scopeKey(e))}save(e,s){this.storage.save(this.scopeKey(e),s)}remove(e){this.storage.remove(this.scopeKey(e))}flush(){for(const s of Object.values(e.StorageKeys))this.storage.remove(this.scopeKey(s))}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.defaultChainRpcs={1:"https://cloudflare-eth.com",10:"https://optimism-rpc.publicnode.com",56:"https://bsc.publicnode.com",97:"https://bsc-testnet.publicnode.com",137:"https://polygon-rpc.com",
|
|
1
|
+
"use strict";exports.defaultChainRpcs={1:"https://cloudflare-eth.com",10:"https://optimism-rpc.publicnode.com",56:"https://bsc.publicnode.com",97:"https://bsc-testnet.publicnode.com",137:"https://polygon-rpc.com",1946:"https://rpc.minato.soneium.org",3008:"https://kl1-testnet.kiooverse.xyz/rpc",4337:"https://build.onbeam.com/rpc",5611:"https://opbnb-testnet-rpc.bnbchain.org",8453:"https://mainnet.base.org",10143:"https://testnet-rpc.monad.xyz",13337:"https://build.onbeam.com/rpc/testnet",42161:"https://arb1.arbitrum.io/rpc",42170:"https://nova.arbitrum.io/rpc",43113:"https://api.avax-test.network/ext/bc/C/rpc",43114:"https://api.avax.network/ext/bc/C/rpc",80002:"https://polygon-amoy-bor-rpc.publicnode.com",84358:"https://subnets.avax.network/titan/mainnet/rpc",84532:"https://sepolia.base.org",421614:"https://sepolia-rollup.arbitrum.io/rpc",510525:"https://rpc.clankermon.com",510530:"https://open-loot.rpc.syndicate.io",510531:"https://open-loot.rpc.testnet.syndicate.io",7225878:"https://rpc.saakuru.network",7777777:"https://rpc.zora.energy",11155111:"https://ethereum-sepolia-rpc.publicnode.com",11155420:"https://optimism-sepolia-rpc.publicnode.com",28122024:"https://rpcv2-testnet.ancient8.gg",666666666:"https://rpc.degen.tips",888888888:"https://rpc.ancient8.gg",999999999:"https://sepolia.rpc.zora.energy"};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.PACKAGE="@openfort/openfort-js",exports.VERSION="0.10.36-beta.
|
|
1
|
+
"use strict";exports.PACKAGE="@openfort/openfort-js",exports.VERSION="0.10.36-beta.3";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("../core/configuration/authentication.js"),t=require("../core/configuration/passkey.js"),a=require("../core/errors/authErrorCodes.js"),r=require("../core/errors/openfortError.js"),o=require("../core/errors/withApiError.js"),n=require("../
|
|
1
|
+
"use strict";var e=require("../core/configuration/authentication.js"),t=require("../core/configuration/passkey.js"),a=require("../core/errors/authErrorCodes.js"),r=require("../core/errors/openfortError.js"),o=require("../core/errors/withApiError.js"),n=require("../core/config/config.js"),s=require("../core/configuration/account.js"),i=require("../storage/istorage.js"),c=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 i=await e.Authentication.fromStorage(this.storage);if(!i)throw new r.SessionError(a.OPENFORT_AUTH_ERROR_CODES.NOT_LOGGED_IN,"No access token found");const d=n.SDKConfiguration.getInstance();if(!d)throw new r.ConfigurationError("Configuration not found");const y=await s.Account.fromStorage(this.storage);let p;if(y){const e={account:y.id,...t.entropy&&{entropy:{...t.entropy.recoveryPassword&&{recoveryPassword:t.entropy.recoveryPassword},...t.entropy.encryptionSession&&{encryptionSession:t.entropy.encryptionSession},..."passkey"===y.recoveryMethod&&{passkey:{id:y.recoveryMethodDetails?.passkeyId,env:y.recoveryMethodDetails?.passkeyEnv,key:await t.getPasskeyKeyFn(y.recoveryMethodDetails?.passkeyId??"")}}}}},a=await this.iframeManager.recover(e);p=a.account}else{const e=await this.backendApiClients.accountsApi.getAccountsV2({user:i.userId,accountType:t.accountType,chainType:t.chainType},{headers:i.thirdPartyProvider?{authorization:`Bearer ${d.baseConfiguration.publishableKey}`,"x-player-token":i.token,"x-auth-provider":i.thirdPartyProvider,"x-token-type":i.thirdPartyTokenType}:{authorization:`Bearer ${i.token}`,"x-project-key":d.baseConfiguration.publishableKey}});if(0===e.data.data.length){const e=t.entropy?.passkey?await this.createPasskey(i.userId):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);p=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(p=s.account,!r){const e=await this.iframeManager.switchChain(t.chainId);p=e.account}}}return o.withApiError(async()=>{const e=await this.backendApiClients.accountsApi.getAccountV2({id:p},{headers:i.thirdPartyProvider?{authorization:`Bearer ${d.baseConfiguration.publishableKey}`,"x-player-token":i.token,"x-auth-provider":i.thirdPartyProvider,"x-token-type":i.thirdPartyTokenType}:{authorization:`Bearer ${i.token}`,"x-project-key":d.baseConfiguration.publishableKey}}),t=new s.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:s.Account.parseRecoveryMethod(e.data.recoveryMethod),recoveryMethodDetails:e.data.recoveryMethodDetails});return t.save(this.storage),this.eventEmitter.emit(c.OpenfortEvents.ON_SWITCH_ACCOUNT,e.data.address),t},{context:"configure"})}async sign(e,t,a,r){const o=await this.iframeManager.sign(e,t,a,r);return this.eventEmitter.emit(c.OpenfortEvents.ON_SIGNED_MESSAGE,{message:e,signature:o}),o}async export(){return await this.iframeManager.export()}async switchChain({chainId:e}){const t=await s.Account.fromStorage(this.storage);if(t?.accountType===c.AccountTypeEnum.EOA)new s.Account({...t,chainId:e}).save(this.storage);else{const a=await this.iframeManager.switchChain(e);new s.Account({...t,id:a.account,chainId:e}).save(this.storage)}}async create(t){const i=await this.iframeManager.create(t),d=await e.Authentication.fromStorage(this.storage);if(!d)throw new r.SessionError(a.OPENFORT_AUTH_ERROR_CODES.NOT_LOGGED_IN,"No access token found");const y=n.SDKConfiguration.getInstance();if(!y)throw new r.ConfigurationError("Configuration not found");return o.withApiError(async()=>{const e=await this.backendApiClients.accountsApi.getAccountV2({id:i.account},{headers:d.thirdPartyProvider?{authorization:`Bearer ${y.baseConfiguration.publishableKey}`,"x-player-token":d.token,"x-auth-provider":d.thirdPartyProvider,"x-token-type":d.thirdPartyTokenType}:{authorization:`Bearer ${d.token}`,"x-project-key":y.baseConfiguration.publishableKey}}),t=new s.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:s.Account.parseRecoveryMethod(e.data.recoveryMethod),recoveryMethodDetails:e.data.recoveryMethodDetails});return t.save(this.storage),this.eventEmitter.emit(c.OpenfortEvents.ON_SWITCH_ACCOUNT,e.data.address),t},{context:"create"})}async recover(t){const i=await this.iframeManager.recover(t),d=await e.Authentication.fromStorage(this.storage);if(!d)throw new r.SessionError(a.OPENFORT_AUTH_ERROR_CODES.NOT_LOGGED_IN,"No access token found");const y=n.SDKConfiguration.getInstance();if(!y)throw new r.ConfigurationError("Configuration not found");return o.withApiError(async()=>{const e=await this.backendApiClients.accountsApi.getAccountV2({id:i.account},{headers:d.thirdPartyProvider?{authorization:`Bearer ${y.baseConfiguration.publishableKey}`,"x-player-token":d.token,"x-auth-provider":d.thirdPartyProvider,"x-token-type":d.thirdPartyTokenType}:{authorization:`Bearer ${d.token}`,"x-project-key":y.baseConfiguration.publishableKey}}),t=new s.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:s.Account.parseRecoveryMethod(e.data.recoveryMethod),recoveryMethodDetails:e.data.recoveryMethodDetails});return t.save(this.storage),this.eventEmitter.emit(c.OpenfortEvents.ON_SWITCH_ACCOUNT,e.data.address),t},{context:"recover"})}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(i.StorageKeys.ACCOUNT)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/withApiError.js"),r=require("./JsonRpcError.js");exports.getAssets=async({params:t,account:a,authentication:s,backendClient:o})=>{const i=await(async(r,t,a,s)=>
|
|
1
|
+
"use strict";var e=require("../../core/errors/withApiError.js"),r=require("./JsonRpcError.js");exports.getAssets=async({params:t,account:a,authentication:s,backendClient:o})=>{const i=await(async(r,t,a,s)=>e.withApiError(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:a.thirdPartyProvider?{authorization:`Bearer ${r.config.backend.accessToken}`,"x-auth-provider":a.thirdPartyProvider,"x-token-type":a.thirdPartyTokenType}:{authorization:`Bearer ${a.token}`,"x-project-key":String(r.config.backend.accessToken)}})).data,{context:"operation"}))(o,a,s,t).catch(e=>{throw new r.JsonRpcError(r.RpcErrorCode.INTERNAL_ERROR,e.message)});return i.result};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t=require("../../core/errors/withApiError.js"),e=require("../../types/types.js"),i=require("./JsonRpcError.js");function r(t){return{data:(()=>{if("token-allowance"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"token-allowance policy is not supported with this account implementation.");if("gas-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"gas-limit policy is not supported with this account implementation.");if("rate-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"rate-limit policy is not supported with this account implementation.");return t.data})(),type:t.type.custom}}function o(t){if("native-token-transfer"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"native-token-transfer permission is not supported with this account implementation.");if("rate-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"rate-limit permission is not supported with this account implementation.");if("gas-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"gas-limit permission is not supported with this account implementation.");return{...t,policies:t?.policies?.map(r),required:t.required??!1,type:"string"==typeof t.type?t.type:t.type.custom}}function n(t){return{expiry:t.validUntil?Number(t.validUntil):0,grantedPermissions:t.whitelist?t.whitelist.map(e=>({type:"contract-call",data:{address:e,calls:[]},policies:[{data:{limit:t.limit},type:{custom:"usage-limit"}}]})):[],permissionsContext:t.id}}exports.registerSession=async({params:r,signer:s,account:a,authentication:c,backendClient:p,policyId:l})=>{const d=await(async(e,r,n,s,a)=>{const c=e[0],p=Math.floor(Date.now()/1e3),l=Math.floor(new Date(Date.now()+1e3*c.expiry).getTime()/1e3),d=c.permissions.map(o),u=d.filter(t=>"contract-call"===t.type||"erc20-token-transfer"===t.type||"erc721-token-transfer"===t.type||"erc1155-token-transfer"===t.type).map(t=>t.data.address);let m,y=d.find(t=>"call-limit"===t.type)?.data;if(y=d[0]?.policies?.find(t=>"call-limit"===t.type)?.data?.limit,"signer"in c&&c.signer){if("keys"===c.signer.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"Multi-key signers are not supported for session creation");"key"!==c.signer.type&&"account"!==c.signer.type||(m=c.signer.data.id)}else"account"in c&&c.account&&(m=c.account);if(!m)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"Failed to request permissions - missing session address");const h=((t,e,i,r,o,n=!1,s,a,c,p)=>{const l={address:t,chainId:e,validAfter:i,validUntil:r,optimistic:n,whitelist:s,player:a,account:p};return o&&(l.policy=o),c&&(l.limit=c),l})(m,n.chainId,p,l,a,!1,u,s.userId,y,n.id);return t.withApiError(async()=>(await r.sessionsApi.createSession({createSessionRequest:h},{headers:s.thirdPartyProvider?{authorization:`Bearer ${r.config.backend.accessToken}`,"x-auth-provider":s.thirdPartyProvider,"x-token-type":s.thirdPartyTokenType}:{authorization:`Bearer ${s.token}`,"x-project-key":String(r.config.backend.accessToken)}})).data,{context:"operation"})})(r,p,a,c,l).catch(t=>{throw new i.JsonRpcError(i.RpcErrorCode.TRANSACTION_REJECTED,t.message)});if(d?.nextAction?.payload?.signableHash){let r;r=[300,
|
|
1
|
+
"use strict";var t=require("../../core/errors/withApiError.js"),e=require("../../types/types.js"),i=require("./JsonRpcError.js");function r(t){return{data:(()=>{if("token-allowance"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"token-allowance policy is not supported with this account implementation.");if("gas-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"gas-limit policy is not supported with this account implementation.");if("rate-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"rate-limit policy is not supported with this account implementation.");return t.data})(),type:t.type.custom}}function o(t){if("native-token-transfer"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"native-token-transfer permission is not supported with this account implementation.");if("rate-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"rate-limit permission is not supported with this account implementation.");if("gas-limit"===t.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"gas-limit permission is not supported with this account implementation.");return{...t,policies:t?.policies?.map(r),required:t.required??!1,type:"string"==typeof t.type?t.type:t.type.custom}}function n(t){return{expiry:t.validUntil?Number(t.validUntil):0,grantedPermissions:t.whitelist?t.whitelist.map(e=>({type:"contract-call",data:{address:e,calls:[]},policies:[{data:{limit:t.limit},type:{custom:"usage-limit"}}]})):[],permissionsContext:t.id}}exports.registerSession=async({params:r,signer:s,account:a,authentication:c,backendClient:p,policyId:l})=>{const d=await(async(e,r,n,s,a)=>{const c=e[0],p=Math.floor(Date.now()/1e3),l=Math.floor(new Date(Date.now()+1e3*c.expiry).getTime()/1e3),d=c.permissions.map(o),u=d.filter(t=>"contract-call"===t.type||"erc20-token-transfer"===t.type||"erc721-token-transfer"===t.type||"erc1155-token-transfer"===t.type).map(t=>t.data.address);let m,y=d.find(t=>"call-limit"===t.type)?.data;if(y=d[0]?.policies?.find(t=>"call-limit"===t.type)?.data?.limit,"signer"in c&&c.signer){if("keys"===c.signer.type)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"Multi-key signers are not supported for session creation");"key"!==c.signer.type&&"account"!==c.signer.type||(m=c.signer.data.id)}else"account"in c&&c.account&&(m=c.account);if(!m)throw new i.JsonRpcError(i.RpcErrorCode.INVALID_PARAMS,"Failed to request permissions - missing session address");const h=((t,e,i,r,o,n=!1,s,a,c,p)=>{const l={address:t,chainId:e,validAfter:i,validUntil:r,optimistic:n,whitelist:s,player:a,account:p};return o&&(l.policy=o),c&&(l.limit=c),l})(m,n.chainId,p,l,a,!1,u,s.userId,y,n.id);return t.withApiError(async()=>(await r.sessionsApi.createSession({createSessionRequest:h},{headers:s.thirdPartyProvider?{authorization:`Bearer ${r.config.backend.accessToken}`,"x-auth-provider":s.thirdPartyProvider,"x-token-type":s.thirdPartyTokenType}:{authorization:`Bearer ${s.token}`,"x-project-key":String(r.config.backend.accessToken)}})).data,{context:"operation"})})(r,p,a,c,l).catch(t=>{throw new i.JsonRpcError(i.RpcErrorCode.TRANSACTION_REJECTED,t.message)});if(d?.nextAction?.payload?.signableHash){let r;r=[300,324].includes(a.chainId)||a.implementationType&&[e.AccountType.CALIBUR].includes(a.implementationType)?await s.sign(d.nextAction.payload.signableHash,!1,!1):await s.sign(d.nextAction.payload.signableHash);return n(await t.withApiError(async()=>(await p.sessionsApi.signatureSession({id:d.id,signatureRequest:{signature:r}})).data,{context:"operation"}).catch(t=>{throw new i.JsonRpcError(i.RpcErrorCode.TRANSACTION_REJECTED,t.message)}))}if(!1===d.isActive)throw new i.JsonRpcError(i.RpcErrorCode.TRANSACTION_REJECTED,"Failed to grant permissions");return n(d)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/withApiError.js"),r=require("../../types/types.js"),t=require("./JsonRpcError.js");exports.revokeSession=async({params:n,signer:i,account:a,authentication:s,backendClient:o,policyId:c})=>{const p=n[0];if(!p.permissionContext)return await i.disconnect(),{};const d=await(async(r,t,n,i,a)=>{const s=((e,r,t,n,i)=>{const a={address:e,chainId:r,player:t,account:i};return n&&(a.policy=n),a})(r.permissionContext,n.chainId,i.userId,a,n.id);return e.withApiError(async()=>(await t.sessionsApi.revokeSession({revokeSessionRequest:s},{headers:i.thirdPartyProvider?{authorization:`Bearer ${t.config.backend.accessToken}`,"x-auth-provider":i.thirdPartyProvider,"x-token-type":i.thirdPartyTokenType}:{authorization:`Bearer ${i.token}`,"x-project-key":String(t.config.backend.accessToken)}})).data,{context:"operation"})})(p,o,a,s,c).catch(e=>{throw new t.JsonRpcError(t.RpcErrorCode.TRANSACTION_REJECTED,e.message)});if(d?.nextAction?.payload?.signableHash){let e;e=[300,
|
|
1
|
+
"use strict";var e=require("../../core/errors/withApiError.js"),r=require("../../types/types.js"),t=require("./JsonRpcError.js");exports.revokeSession=async({params:n,signer:i,account:a,authentication:s,backendClient:o,policyId:c})=>{const p=n[0];if(!p.permissionContext)return await i.disconnect(),{};const d=await(async(r,t,n,i,a)=>{const s=((e,r,t,n,i)=>{const a={address:e,chainId:r,player:t,account:i};return n&&(a.policy=n),a})(r.permissionContext,n.chainId,i.userId,a,n.id);return e.withApiError(async()=>(await t.sessionsApi.revokeSession({revokeSessionRequest:s},{headers:i.thirdPartyProvider?{authorization:`Bearer ${t.config.backend.accessToken}`,"x-auth-provider":i.thirdPartyProvider,"x-token-type":i.thirdPartyTokenType}:{authorization:`Bearer ${i.token}`,"x-project-key":String(t.config.backend.accessToken)}})).data,{context:"operation"})})(p,o,a,s,c).catch(e=>{throw new t.JsonRpcError(t.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 i.sign(d.nextAction.payload.signableHash,!1,!1):await i.sign(d.nextAction.payload.signableHash);return(await o.sessionsApi.signatureSession({id:d.id,signatureRequest:{signature:e}}).catch(e=>{throw new t.JsonRpcError(t.RpcErrorCode.TRANSACTION_REJECTED,e.message)})).data}return d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("../../core/errors/withApiError.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 h;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});h=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.withApiError(async()=>(await t.transactionIntentsApi.createTransactionIntent({createTransactionIntentRequest:{account:a.id,policy:s,signedAuthorization:i,chainId:a.chainId,interactions:c}},{headers:n.thirdPartyProvider?{authorization:`Bearer ${t.config.backend.accessToken}`,"x-auth-provider":n.thirdPartyProvider,"x-token-type":n.thirdPartyTokenType}:{authorization:`Bearer ${n.token}`,"x-project-key":String(t.config.backend.accessToken)}})).data,{context:"operation"})})(s,p,c,d,E,h).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,
|
|
1
|
+
"use strict";var e=require("../../core/errors/withApiError.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 h;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});h=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.withApiError(async()=>(await t.transactionIntentsApi.createTransactionIntent({createTransactionIntentRequest:{account:a.id,policy:s,signedAuthorization:i,chainId:a.chainId,interactions:c}},{headers:n.thirdPartyProvider?{authorization:`Bearer ${t.config.backend.accessToken}`,"x-auth-provider":n.thirdPartyProvider,"x-token-type":n.thirdPartyTokenType}:{authorization:`Bearer ${n.token}`,"x-project-key":String(t.config.backend.accessToken)}})).data,{context:"operation"})})(s,p,c,d,E,h).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.withApiError(async()=>await p.transactionIntentsApi.signature({id:A.id,signatureRequest:{signature:t}}),{context:"operation"}).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)}};
|