@gala-chain/launchpad-sdk 7.0.0-beta.3 → 7.0.0-beta.5
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/README.md +2 -0
- package/dist/LaunchpadSDK.d.ts +10 -8
- package/dist/LaunchpadSDK.d.ts.map +1 -1
- package/dist/api/dto/BondingCurveDTOs.d.ts +2 -2
- package/dist/api/dto/BondingCurveDTOs.d.ts.map +1 -1
- package/dist/api/dto/BurnTokensDto.d.ts +1 -1
- package/dist/api/dto/BurnTokensDto.d.ts.map +1 -1
- package/dist/api/dto/LockTokenDto.d.ts +1 -1
- package/dist/api/dto/LockTokenDto.d.ts.map +1 -1
- package/dist/api/dto/TransferTokenDto.d.ts +1 -1
- package/dist/api/dto/TransferTokenDto.d.ts.map +1 -1
- package/dist/api/dto/UnlockTokenDto.d.ts +1 -1
- package/dist/api/dto/UnlockTokenDto.d.ts.map +1 -1
- package/dist/bridge/strategies/EthereumBridgeStrategy.d.ts.map +1 -1
- package/dist/constants/version.generated.d.ts +1 -1
- package/dist/helpers/sdk.d.ts.map +1 -1
- package/dist/index.browser.esm.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/launchpad/writes.d.ts.map +1 -1
- package/dist/native.cjs +1 -1
- package/dist/native.esm.js +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.esm.js +1 -1
- package/dist/schemas/user.d.ts +6 -6
- package/dist/schemas/user.d.ts.map +1 -1
- package/dist/schemas/validators.d.ts +1 -1
- package/dist/services/ContentReactionService.d.ts.map +1 -1
- package/dist/services/LaunchpadService.d.ts +1 -6
- package/dist/services/LaunchpadService.d.ts.map +1 -1
- package/dist/services/ModeratorService.d.ts.map +1 -1
- package/dist/services/NftCollectionService.d.ts.map +1 -1
- package/dist/services/UserService.d.ts +3 -10
- package/dist/services/UserService.d.ts.map +1 -1
- package/dist/signing/signers.d.ts +4 -2
- package/dist/signing/signers.d.ts.map +1 -1
- package/dist/types/backend-responses.d.ts +1 -1
- package/dist/types/backend-responses.d.ts.map +1 -1
- package/dist/types/dto.d.ts +2 -2
- package/dist/types/dto.d.ts.map +1 -1
- package/dist/types/options.dto.d.ts +10 -10
- package/dist/types/user.dto.d.ts +13 -5
- package/dist/types/user.dto.d.ts.map +1 -1
- package/dist/wallet/GalaChainConnectProvider.d.ts.map +1 -1
- package/dist/wallet.cjs +1 -1
- package/dist/wallet.esm.js +1 -1
- package/package.json +32 -27
package/dist/wallet.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getAddress as e,Wallet as n}from"ethers";class t extends Error{constructor(e,n,t){super(e),this.code=n,this.originalError=t,this.name="WalletProviderError"}}var r;function s(e,n,t){return{types:{EIP712Domain:i(e),...n},primaryType:Object.keys(n)[0],domain:o(e),message:t}}function i(e){const n=[];return void 0!==e.name&&n.push({name:"name",type:"string"}),void 0!==e.version&&n.push({name:"version",type:"string"}),void 0!==e.chainId&&n.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&n.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&n.push({name:"salt",type:"bytes32"}),n}function o(e){const n={};return void 0!==e.name&&(n.name=e.name),void 0!==e.version&&(n.version=e.version),void 0!==e.chainId&&(n.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(n.verifyingContract=e.verifyingContract),void 0!==e.salt&&(n.salt=e.salt),n}function a(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function c(e,n,t){return e.request({method:"personal_sign",params:[a(t),n]})}async function d(e,n,t,r,i){return e.request({method:"eth_signTypedData_v4",params:[n,JSON.stringify(s(t,r,i))]})}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(r||(r={}));class l{constructor(n){this.connectedAddress=null,this.provider=n,this.eventHandlers=function(n,t,r){if(null==n||"function"!=typeof n.on)return{accountsChanged:null,disconnect:null};const s=n=>{const r=n[0];t(void 0===r?null:e(r))},i=()=>r();return n.on("accountsChanged",s),n.on("disconnect",i),{accountsChanged:s,disconnect:i}}(n,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,n){if("function"!=typeof e.removeListener)return;null!==n.accountsChanged&&e.removeListener("accountsChanged",n.accountsChanged);null!==n.disconnect&&e.removeListener("disconnect",n.disconnect)}(this.provider,this.eventHandlers)}}async function u(e,n,r){try{return await e()}catch(e){if(e instanceof t)throw e;return n(e,r)}}const h=4001,A=4100,w=4900,v=4901;class g extends l{constructor(e){if(super(e),this.providerType="external",null==e)throw new t("EIP-1193 provider is required",r.INVALID_CONFIG)}handleProviderError(e,n){const s=e;if(s.code===h)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(s.code===A)throw new t("Wallet is not authorized",r.NOT_CONNECTED,e instanceof Error?e:void 0);if(s.code===w||s.code===v)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);throw new t(s.message??`${n} failed`,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);return this.connectedAddress=e(s),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(()=>c(this.provider,this.connectedAddress,e),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(()=>d(this.provider,this.connectedAddress,e,n,t),(e,n)=>this.handleProviderError(e,n),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new t("Wallet is not connected",r.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new t("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}let E=null;async function f(){if(!1===E)return null;try{const e=await import("@gala-chain/connect");return E=!0,e}catch{return E=!1,null}}class y{constructor(e){if(this.providerType="external",this.connectedAddress=null,!e)throw new t("@gala-chain/connect client is required",r.INVALID_CONFIG);if("function"!=typeof e.signMessage)throw new t("Invalid @gala-chain/connect client: signMessage method is required",r.INVALID_CONFIG);this.client=e}static async createBrowserClient(e){const n=await f();if(null==n)throw new t("Failed to create BrowserConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{BrowserConnectClient:s}=n,i=s,o=e?new i(e):new i;return new y(o)}static async createTrustWalletClient(){const e=await f();if(null==e)throw new t("Failed to create TrustWalletConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{TrustWalletConnectClient:n}=e,s=new n;return new y(s)}static async isAvailable(){return null!==await f()}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED);return this.connectedAddress}async connect(){try{if("function"==typeof this.client.connect){const n=await this.client.connect();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}if("function"==typeof this.client.getAccount){const n=await this.client.getAccount();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}throw new t("Failed to connect: no account returned",r.CONNECTION_FAILED)}catch(e){if(e instanceof t)throw e;const n=e instanceof Error?e.message:String(e);if(n.length>0&&(n.includes("rejected")||n.includes("denied")))throw new t("User rejected connection",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to connect to wallet",r.CONNECTION_FAILED,e instanceof Error?e:void 0)}}async disconnect(){"function"==typeof this.client.disconnect&&await this.client.disconnect(),this.connectedAddress=null}isConnected(){return null!==this.connectedAddress}async signMessage(e){this.ensureConnected();try{return await this.client.signMessage(e)}catch(e){const n=e instanceof Error?e.message:String(e);if(n.includes("rejected")||n.includes("denied"))throw new t("User rejected signing",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}signTypedData(e,n,s){return Promise.reject(new t("signTypedData is not supported by GalaChainConnectProvider. Use ExternalWalletProvider with the underlying EIP-1193 provider instead.",r.SIGNING_FAILED))}async getAddress(){return await Promise.resolve(),this.ensureConnected()}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){return Promise.reject(new t("Private key is not accessible with @gala-chain/connect. Use PrivateKeyProvider if you need private key access.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getClient(){return this.client}}class p extends l{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new t("Gala Wallet provider is required",r.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const n=JSON.parse(e.message);if("object"==typeof n&&null!==n){const t=n,r={message:"string"==typeof t.message?t.message:e.message};return"number"==typeof t.code&&(r.code=t.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,n){const s=this.parseGalaError(e);if(4001===s.code)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(4900===s.code)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);const i=s.message?s.message:`${n} failed`;throw new t(i,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);this.galaRawAddress=s;let i=s;return i.startsWith("eth|")?i=`0x${i.slice(4)}`:i.startsWith("0x")||(i=`0x${i}`),this.connectedAddress=e(i),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),c(this.provider,this.connectedAddress,e)),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),d(this.provider,this.connectedAddress,e,n,t)),(e,n)=>this.handleProviderError(e,n),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new t("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}class I{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new n(e)}catch(e){throw new t("Invalid private key provided",r.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new I(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,n,s){try{return await this.wallet.signTypedData(e,n,s)}catch(e){throw new t("Failed to sign typed data",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(e(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}const N={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},m={[N.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[N.GALA]:"data:image/png;base64,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"};function C(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function L(){if(!C())return null;return window.ethereum??null}async function O(e=500){const n=[],t=new Map;return C()?new Promise(r=>{const s=new Set,i=e=>{const r=e,{info:i,provider:o}=r.detail;if(s.has(i.uuid))return;s.add(i.uuid);const a={id:i.rdns||i.uuid,name:i.name,rdns:i.rdns||i.uuid,icon:i.icon??m[i.rdns||""]??"",provider:o,isInjected:!1};n.push(a),t.set(a.id,a)};window.addEventListener("eip6963:announceProvider",i),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",i),0===n.length){const e=L();if(e){const r=window;let s="Browser Wallet",i="injected";r.ethereum?.isMetaMask?(s="MetaMask",i=N.METAMASK):r.ethereum?.isCoinbaseWallet?(s="Coinbase Wallet",i=N.COINBASE):r.ethereum?.isTrust&&(s="Trust Wallet",i=N.TRUST_WALLET);const o={id:i,name:s,rdns:i,icon:m[i]??"",provider:e,isInjected:!0};n.push(o),t.set(o.id,o)}}const e=window;if(e.gala?.request&&!t.has(N.GALA)){const r={id:N.GALA,name:"Gala Wallet",rdns:N.GALA,icon:m[N.GALA]??"",provider:e.gala,isInjected:!0};n.push(r),t.set(r.id,r)}r({wallets:n,byId:t,hasWallets:n.length>0,...void 0===n[0]?{}:{primary:n[0]}})},e)}):{wallets:n,byId:t,hasWallets:!1}}function T(e){if(!C())return()=>{};let n=!0,t={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!n)return;const s=r,{info:i,provider:o}=s.detail,a=i.rdns||i.uuid;if(t.byId.has(a))return;const c={id:a,name:i.name,rdns:a,icon:i.icon??"",provider:o,isInjected:!1},d=[...t.wallets,c],l=new Map(t.byId);l.set(c.id,c),t={wallets:d,byId:l,hasWallets:!0,...void 0===d[0]?{}:{primary:d[0]}},e(t)};return window.addEventListener("eip6963:announceProvider",r),O().then(r=>{n&&(t=r,e(r))}),()=>{n=!1,window.removeEventListener("eip6963:announceProvider",r)}}async function D(e,n){return(await O(n)).byId.get(e)??null}async function P(e,n){return null!==await D(e,n)}function S(){return null!==L()}function M(e){if(null!==e.privateKey&&void 0!==e.privateKey&&e.privateKey.length>0)return new I(e.privateKey);if(null!==e.eip1193Provider&&void 0!==e.eip1193Provider)return new g(e.eip1193Provider);throw new t("Invalid wallet provider config: must provide either privateKey or eip1193Provider",r.INVALID_CONFIG)}function F(e){return I.fromWallet(e)}function G(e){return new g(e)}function R(e){return"privateKey"===e.providerType}function V(e){return"external"===e.providerType}async function W(e){if(R(e))try{return await e.getPrivateKey()}catch{return}}function B(e){if(e)return I.fromWallet(e)}function U(e){if(e&&R(e))return e.getWallet()}async function K(e){return e.isConnected()?e.getAddress():e.connect()}function b(e){return"object"==typeof e&&null!==e&&"request"in e&&"function"==typeof e.request}function _(){if("undefined"==typeof window)return null;const e=window.ethereum;return b(e)?e:null}export{g as ExternalWalletProvider,y as GalaChainConnectProvider,p as GalaWalletProvider,N as KNOWN_WALLET_RDNS,I as PrivateKeyProvider,t as WalletProviderError,r as WalletProviderErrorCode,G as createProviderFromEip1193,F as createProviderFromWallet,M as createWalletProvider,O as detectWallets,K as ensureConnected,_ as getInjectedEip1193Provider,W as getPrivateKeyIfAvailable,D as getWalletByRdns,S as hasAnyWallet,b as isEip1193Provider,V as isExternalProvider,R as isPrivateKeyProvider,P as isWalletAvailable,U as providerToWallet,T as subscribeToWalletChanges,B as walletToProvider};
|
|
1
|
+
import{getAddress as e,Wallet as n}from"ethers";class t extends Error{constructor(e,n,t){super(e),this.code=n,this.originalError=t,this.name="WalletProviderError"}}var r;function s(e,n,t){return{types:{EIP712Domain:i(e),...n},primaryType:Object.keys(n)[0],domain:o(e),message:t}}function i(e){const n=[];return void 0!==e.name&&n.push({name:"name",type:"string"}),void 0!==e.version&&n.push({name:"version",type:"string"}),void 0!==e.chainId&&n.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&n.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&n.push({name:"salt",type:"bytes32"}),n}function o(e){const n={};return void 0!==e.name&&(n.name=e.name),void 0!==e.version&&(n.version=e.version),void 0!==e.chainId&&(n.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(n.verifyingContract=e.verifyingContract),void 0!==e.salt&&(n.salt=e.salt),n}function a(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function c(e,n,t){return e.request({method:"personal_sign",params:[a(t),n]})}async function d(e,n,t,r,i){return e.request({method:"eth_signTypedData_v4",params:[n,JSON.stringify(s(t,r,i))]})}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(r||(r={}));class l{constructor(n){this.connectedAddress=null,this.provider=n,this.eventHandlers=function(n,t,r){if(null==n||"function"!=typeof n.on)return{accountsChanged:null,disconnect:null};const s=n=>{const r=n[0];t(void 0===r?null:e(r))},i=()=>r();return n.on("accountsChanged",s),n.on("disconnect",i),{accountsChanged:s,disconnect:i}}(n,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,n){if("function"!=typeof e.removeListener)return;null!==n.accountsChanged&&e.removeListener("accountsChanged",n.accountsChanged);null!==n.disconnect&&e.removeListener("disconnect",n.disconnect)}(this.provider,this.eventHandlers)}}async function u(e,n,r){try{return await e()}catch(e){if(e instanceof t)throw e;return n(e,r)}}const h=4001,A=4100,w=4900,v=4901;class g extends l{constructor(e){if(super(e),this.providerType="external",null==e)throw new t("EIP-1193 provider is required",r.INVALID_CONFIG)}handleProviderError(e,n){const s=e;if(s.code===h)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(s.code===A)throw new t("Wallet is not authorized",r.NOT_CONNECTED,e instanceof Error?e:void 0);if(s.code===w||s.code===v)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);throw new t(s.message??`${n} failed`,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from wallet",r.CONNECTION_FAILED);return this.connectedAddress=e(s),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(()=>c(this.provider,this.connectedAddress,e),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(()=>d(this.provider,this.connectedAddress,e,n,t),(e,n)=>this.handleProviderError(e,n),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new t("Wallet is not connected",r.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new t("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}let E=null;async function f(){if(!1===E)return null;try{const e=["@gala-chain","connect"].join("/"),n=await import(e);return E=!0,n}catch{return E=!1,null}}class y{constructor(e){if(this.providerType="external",this.connectedAddress=null,!e)throw new t("@gala-chain/connect client is required",r.INVALID_CONFIG);if("function"!=typeof e.signMessage)throw new t("Invalid @gala-chain/connect client: signMessage method is required",r.INVALID_CONFIG);this.client=e}static async createBrowserClient(e){const n=await f();if(null==n)throw new t("Failed to create BrowserConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{BrowserConnectClient:s}=n,i=s,o=e?new i(e):new i;return new y(o)}static async createTrustWalletClient(){const e=await f();if(null==e)throw new t("Failed to create TrustWalletConnectClient: @gala-chain/connect is not installed. Install it with: npm install @gala-chain/connect",r.PROVIDER_NOT_AVAILABLE);const{TrustWalletConnectClient:n}=e,s=new n;return new y(s)}static async isAvailable(){return null!==await f()}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED);return this.connectedAddress}async connect(){try{if("function"==typeof this.client.connect){const n=await this.client.connect();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}if("function"==typeof this.client.getAccount){const n=await this.client.getAccount();if(null!=n&&n.length>0)return this.connectedAddress=e(n),this.connectedAddress}throw new t("Failed to connect: no account returned",r.CONNECTION_FAILED)}catch(e){if(e instanceof t)throw e;const n=e instanceof Error?e.message:String(e);if(n.length>0&&(n.includes("rejected")||n.includes("denied")))throw new t("User rejected connection",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to connect to wallet",r.CONNECTION_FAILED,e instanceof Error?e:void 0)}}async disconnect(){"function"==typeof this.client.disconnect&&await this.client.disconnect(),this.connectedAddress=null}isConnected(){return null!==this.connectedAddress}async signMessage(e){this.ensureConnected();try{return await this.client.signMessage(e)}catch(e){const n=e instanceof Error?e.message:String(e);if(n.includes("rejected")||n.includes("denied"))throw new t("User rejected signing",r.USER_REJECTED,e instanceof Error?e:void 0);throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}signTypedData(e,n,s){return Promise.reject(new t("signTypedData is not supported by GalaChainConnectProvider. Use ExternalWalletProvider with the underlying EIP-1193 provider instead.",r.SIGNING_FAILED))}async getAddress(){return await Promise.resolve(),this.ensureConnected()}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){return Promise.reject(new t("Private key is not accessible with @gala-chain/connect. Use PrivateKeyProvider if you need private key access.",r.PRIVATE_KEY_NOT_ACCESSIBLE))}getClient(){return this.client}}class p extends l{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new t("Gala Wallet provider is required",r.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const n=JSON.parse(e.message);if("object"==typeof n&&null!==n){const t=n,r={message:"string"==typeof t.message?t.message:e.message};return"number"==typeof t.code&&(r.code=t.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,n){const s=this.parseGalaError(e);if(4001===s.code)throw new t(`User rejected ${n}`,r.USER_REJECTED,e instanceof Error?e:void 0);if(4900===s.code)throw this.connectedAddress=null,new t("Wallet disconnected",r.NOT_CONNECTED,e instanceof Error?e:void 0);const i=s.message?s.message:`${n} failed`;throw new t(i,n.includes("sign")?r.SIGNING_FAILED:r.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new t("Wallet is not connected. Call connect() first.",r.NOT_CONNECTED)}async connect(){try{const n=await this.provider.request({method:"eth_requestAccounts"});if(null==n||0===n.length)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);const s=n[0];if(void 0===s)throw new t("No accounts returned from Gala Wallet",r.CONNECTION_FAILED);this.galaRawAddress=s;let i=s;return i.startsWith("eth|")?i=`0x${i.slice(4)}`:i.startsWith("0x")||(i=`0x${i}`),this.connectedAddress=e(i),this.connectedAddress}catch(e){if(e instanceof t)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),c(this.provider,this.connectedAddress,e)),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),u(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),d(this.provider,this.connectedAddress,e,n,t)),(e,n)=>this.handleProviderError(e,n),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new t("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",r.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}class I{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new n(e)}catch(e){throw new t("Invalid private key provided",r.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new I(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new t("Failed to sign message",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,n,s){try{return await this.wallet.signTypedData(e,n,s)}catch(e){throw new t("Failed to sign typed data",r.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(e(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}const N={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},m={[N.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[N.GALA]:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAjWSURBVHgBzZkLVI1ZG8f/pZKjq0uK0LglIiMKU5EuBkMxUgmjL6GFSZJ7QpJx+Ujpk1Eat3KJySXjTnIpVJRPhnTSxWVaSveL1Zlnv3WshnM67wlrzX+t3T5nv3vv99d+9/O8z36OAj5DIpGoM1W2VPSp6FJp03ipmkoRlVwq9xUUFDLwGVKCnCKwAVRNqa2rc8vOLeiRkpqpcO/hY7woeI3yikrUva9DG1VV6HXqiJHDv0Uvg66oqa0VqigrX6dxUQScCDmlwLcjwfWjKuhJdq5jVMwpxMRfQP7LN7zGttPWxARbC3i4OsDCzOQuNQUS7GnwlExIgmtH1ea0zCfugdsjFeMvJLI2tFSmA/sieMV82Fqa/UFfvQhWKGuMggzAYfX19dHBYdGGm8MPoKy8El9Knm4OWO83L6+DtmaAkpLSPrQEkgDH5eQVnnTxWqVyN/3/+Brqrq+H+H1bMdCo13pa0QDIA0mAM4R5hbu/d/MW/Pn8Bb6mdHXa42hEMCyGmqwh0EDwgSRAq5wXBZfsXBcqP88tAF+1VlGBj6crvunWGf5bIvCm6C3vsZoaarh6NByDjA0XEWgImoMkwG7FpWXJ5uPddZ/l5IGPVJSV4OJgj83+P0OnvTbXVkp7d2NIFGJPXSTX9IrXPHqdOiDp5J66b7p1sSDQlKbXFD/qG7g1/ABvQAd7K9w6HYXoHQHQUBNg0679WBTwXzKwcmxatQDX4nbT6k4D3VTmXC9fF2G230Zl+niEFksgsRNdmJKS9kik0MVMZrGY5Cm6k5ohEiv8t+MiA3OHD9cFPa1EO6OOiIpLSrnrtH1EP3mvFSnqm8ucOzg0mg1Z15RNoQlkhtXkucZJKelS/1vTAQ0+zsZyKPf9wvVk+ARsR1a2UGJ/Zr0L3Z3gPdsVrVopIutZLhas3oIrSXel3oM99swrMSXamhp96An8xdoUGwFtL95Ilgqor6eDvVtWIyUhGrZWZriZ8gAWjp4YO91bKiBTbv5LLAnciX6jpuJg3Dn07dUdl2LDcO5gCHM7Esewx74r+rgWffxJ3Cbekx6795+QejMbSzOMthzC7a3id6XYfzwBd1IzwVdPaY/P9F6LQXZuSLhyC+aD+2PqBFu0UlSU2P8AzV9ZWe0j/q5Aq6hWU1NbqNnXWr227v0nA9b4eNBq5eL2vQz8/B9nLJ7bYAhXb9/H4rXb8eDRU8irbl100ZE8wQLaCu4+6yX2uUIuadQIU0u6VxL7V4bEJVyWCMjE/F5seBBUVVvDb8NO9Bw+CcfOXIb1cFOknT+IqG3+0OnQDnxl0LUzAhbPRsrZfRg5bLDUfldu3WPVGPaHQdqkZjyRNfcHCxPSPnOetxL2rgvwPDcfs5x/QOr5/dyKqwkawkmHMSNxM34vlnrN+OB+BAJVrg/r6+48QaZbOnnuGqsMxZCmj58KIa8u3biL/tYumLN0I9oS3FrfOXhw6RAST+zBycjN5AmM0Fm3A1RUlOHqaM+tOutTXV0Lv8AQFL76q9n5CxquW4gh2wnz+b0VPlZ48DKU09vFmGBD9saiE72HKV7kjMPQ6kfEJVzlgA+FBaJrZx3s+DUG/aydsS3isMy5S96VoaysQo9sRoNF5uqv3hShJWL79XD4BpwjqMXrdmDPod+51bv/IAthQX5wHDsKAtrL56/dwdKgUGQ8fibX/BVV1VBXbytgK6laVlGFlmj2kiCcuZSEsaNH4PH1o7SKg5jrQPatE5g2aQz+JK8wxXMZ50/lBWSqe88ZszKDrNGiKKQlYlHSxFm+8F3XELj062NAlq4NbS0NRB89A8tJc3CiwQBapDb0FEhVDLLYQF8Xn6N7Dz8Nip8J81FR2bInxMSsX0NdjS1lKYMU9unRDf82ddHtyMLADIKtZZDJvb8wZDFZJjOWz5FJv96s4hw4g7xm/d1QmYO6UpDBR4l30tBjmCPu01lcmvR0OkBdrW2z84y35Vxkihgyy9LMJL9jey2JndneYjofE4oNy7zQjoyiObFVfFdWLvFaa3Lsc6Y74tG1WIIUUOAh+fzE9uOIISwHgSMcJHvmVI54uEyUOCAoZB/3GnxR+BorF85C+oWDcJ5oB3ll0r83kn7/Fbs3rUB9vQgrN4WDDnoS+7LMx0Cj3snEVchBNraHzXT6oUbaI2ABhdFIJ2ym4wGLXmKYA6eYsGd3fciSloY6Qjcswd2z0RhMQfOZi0noNWIyNoX9JjXJ4DXjR1ZtFX/nIFkWgQLS05PpDSFNNTV1WB68C8Y2rkhMTsOYUcOQTJFMgK+n1MP7NMcxeJoUh/mznOj0WAwb5/mY6O6LktIyqfcZYNQTThNs2YaOF7c1PT50p/2Ubmg5RavobQlkaabTODpKLCAjaM/dlK1YSGQsd5wYQFH39oBFGG0xFNU1NVj1y/8QceAkKquqZc57+3QkzL81HksL94e47UNoTI252praa3fSo+Gj/ccSYD5+FrbuPsgBimU9whQ3KBJigJeTUtDXaiq274nhBei/yIMBHm4K+A/IRoW6TLQ7tWTedPARy6ot3RAKE9tpeNj4btZQb8tZ92SPpbBzWcj73M0C4DU+s4X08RNrkpTBYA7xhrf/tj6h+45CHhn27M7lKCsoyGhu332sQcZ9kBgXUazWVmBKq5gDWZCNoAaUTUugk54RiwG/puzo9Bm5zb+MTqRsH96U1Ke5rBrzL/E7I48MXkFWXVVdgy+txXPdsHG5F8sC2xOg1BOdrPwke734ZQvzV09fuAbJaY/wJdRFVwcRvyzHOJvvLtPXaQTYbMqYVzqaYCdQ2UFZ3h6U7QVlfdESMec/d8Yk+M51e01gLCcZzmcc75x5I+wMquanZz4xjz52FiyhzwIJ5uglSYlSKz0IzMJ8ENwoUrccNjhLSVHxAF0KI8BS8JRckE1gzamyp/J94auiITl5BSpvS0rJsqu4Xx8E9OsDi9D19TrVUyovh+KFOOp7nsptgpM7Em4R5EfArdDwOw5L7rAsATvcFVMRskJQsr24DP0NVvGaoREi2pYAAAAASUVORK5CYII="};function C(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function L(){if(!C())return null;return window.ethereum??null}async function O(e=500){const n=[],t=new Map;return C()?new Promise(r=>{const s=new Set,i=e=>{const r=e,{info:i,provider:o}=r.detail;if(s.has(i.uuid))return;s.add(i.uuid);const a={id:i.rdns||i.uuid,name:i.name,rdns:i.rdns||i.uuid,icon:i.icon??m[i.rdns||""]??"",provider:o,isInjected:!1};n.push(a),t.set(a.id,a)};window.addEventListener("eip6963:announceProvider",i),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",i),0===n.length){const e=L();if(e){const r=window;let s="Browser Wallet",i="injected";r.ethereum?.isMetaMask?(s="MetaMask",i=N.METAMASK):r.ethereum?.isCoinbaseWallet?(s="Coinbase Wallet",i=N.COINBASE):r.ethereum?.isTrust&&(s="Trust Wallet",i=N.TRUST_WALLET);const o={id:i,name:s,rdns:i,icon:m[i]??"",provider:e,isInjected:!0};n.push(o),t.set(o.id,o)}}const e=window;if(e.gala?.request&&!t.has(N.GALA)){const r={id:N.GALA,name:"Gala Wallet",rdns:N.GALA,icon:m[N.GALA]??"",provider:e.gala,isInjected:!0};n.push(r),t.set(r.id,r)}r({wallets:n,byId:t,hasWallets:n.length>0,...void 0===n[0]?{}:{primary:n[0]}})},e)}):{wallets:n,byId:t,hasWallets:!1}}function T(e){if(!C())return()=>{};let n=!0,t={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!n)return;const s=r,{info:i,provider:o}=s.detail,a=i.rdns||i.uuid;if(t.byId.has(a))return;const c={id:a,name:i.name,rdns:a,icon:i.icon??"",provider:o,isInjected:!1},d=[...t.wallets,c],l=new Map(t.byId);l.set(c.id,c),t={wallets:d,byId:l,hasWallets:!0,...void 0===d[0]?{}:{primary:d[0]}},e(t)};return window.addEventListener("eip6963:announceProvider",r),O().then(r=>{n&&(t=r,e(r))}),()=>{n=!1,window.removeEventListener("eip6963:announceProvider",r)}}async function D(e,n){return(await O(n)).byId.get(e)??null}async function P(e,n){return null!==await D(e,n)}function S(){return null!==L()}function M(e){if(null!==e.privateKey&&void 0!==e.privateKey&&e.privateKey.length>0)return new I(e.privateKey);if(null!==e.eip1193Provider&&void 0!==e.eip1193Provider)return new g(e.eip1193Provider);throw new t("Invalid wallet provider config: must provide either privateKey or eip1193Provider",r.INVALID_CONFIG)}function F(e){return I.fromWallet(e)}function G(e){return new g(e)}function R(e){return"privateKey"===e.providerType}function V(e){return"external"===e.providerType}async function W(e){if(R(e))try{return await e.getPrivateKey()}catch{return}}function B(e){if(e)return I.fromWallet(e)}function U(e){if(e&&R(e))return e.getWallet()}async function K(e){return e.isConnected()?e.getAddress():e.connect()}function b(e){return"object"==typeof e&&null!==e&&"request"in e&&"function"==typeof e.request}function _(){if("undefined"==typeof window)return null;const e=window.ethereum;return b(e)?e:null}export{g as ExternalWalletProvider,y as GalaChainConnectProvider,p as GalaWalletProvider,N as KNOWN_WALLET_RDNS,I as PrivateKeyProvider,t as WalletProviderError,r as WalletProviderErrorCode,G as createProviderFromEip1193,F as createProviderFromWallet,M as createWalletProvider,O as detectWallets,K as ensureConnected,_ as getInjectedEip1193Provider,W as getPrivateKeyIfAvailable,D as getWalletByRdns,S as hasAnyWallet,b as isEip1193Provider,V as isExternalProvider,R as isPrivateKeyProvider,P as isWalletAvailable,U as providerToWallet,T as subscribeToWalletChanges,B as walletToProvider};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@gala-chain/launchpad-sdk",
|
|
4
|
-
"version": "7.0.0-beta.
|
|
4
|
+
"version": "7.0.0-beta.5",
|
|
5
5
|
"description": "TypeScript SDK for Gala Launchpad Backend API - 273 public methods supporting optional wallet (read-only and full-access modes). Production-ready DeFi token launchpad integration with AgentConfig setup, GalaChain trading, GSwap DEX integration, price history, token creation, DEX pool discovery, WebSocket event watchers, streaming, chat, bans, moderator invites, and comprehensive user operations. Multi-format output (ESM, CJS, UMD).",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.esm.js",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
},
|
|
101
101
|
"homepage": "https://gitlab.com/gala-games/defi/launchpad/sdk#readme",
|
|
102
102
|
"engines": {
|
|
103
|
-
"node": ">=
|
|
103
|
+
"node": ">=20.0.0",
|
|
104
104
|
"npm": ">=10.0.0"
|
|
105
105
|
},
|
|
106
106
|
"publishConfig": {
|
|
@@ -108,10 +108,10 @@
|
|
|
108
108
|
"registry": "https://registry.npmjs.org/"
|
|
109
109
|
},
|
|
110
110
|
"peerDependencies": {
|
|
111
|
-
"@gala-chain/api": "^
|
|
112
|
-
"@gala-chain/connect": "^
|
|
111
|
+
"@gala-chain/api": "^3.3.0",
|
|
112
|
+
"@gala-chain/connect": "^3.3.0",
|
|
113
113
|
"axios": "^1.20.0",
|
|
114
|
-
"bignumber.js": "^
|
|
114
|
+
"bignumber.js": "^11.1.5",
|
|
115
115
|
"ethers": "^6.16.0",
|
|
116
116
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
117
117
|
"socket.io-client": "^4.8.3",
|
|
@@ -132,20 +132,19 @@
|
|
|
132
132
|
"not ie 11"
|
|
133
133
|
],
|
|
134
134
|
"dependencies": {
|
|
135
|
-
"@gala-chain/api": "^
|
|
136
|
-
"@gala-chain/connect": "^2.7.1",
|
|
135
|
+
"@gala-chain/api": "^3.3.0",
|
|
137
136
|
"@gala-chain/gswap-sdk": "^1.0.0-rc.3",
|
|
138
137
|
"@modelcontextprotocol/sdk": "^1.30.1",
|
|
139
|
-
"@solana/spl-token": "^0.4.
|
|
138
|
+
"@solana/spl-token": "^0.4.15",
|
|
140
139
|
"@solana/web3.js": "^1.99.0",
|
|
141
140
|
"axios": "^1.20.0",
|
|
142
|
-
"bignumber.js": "^
|
|
141
|
+
"bignumber.js": "^11.1.5",
|
|
143
142
|
"bs58": "^6.0.0",
|
|
144
|
-
"dotenv": "^
|
|
143
|
+
"dotenv": "^18.0.3",
|
|
145
144
|
"ethers": "^6.16.0",
|
|
146
145
|
"json-stringify-deterministic": "^1.0.16",
|
|
147
146
|
"socket.io-client": "^4.8.3",
|
|
148
|
-
"uuid": "^
|
|
147
|
+
"uuid": "^14.0.2",
|
|
149
148
|
"web-file-polyfill": "^1.0.4",
|
|
150
149
|
"zod": "^4.3.6"
|
|
151
150
|
},
|
|
@@ -162,8 +161,9 @@
|
|
|
162
161
|
"zod",
|
|
163
162
|
"dotenv",
|
|
164
163
|
"events",
|
|
165
|
-
"
|
|
166
|
-
"
|
|
164
|
+
"crypto",
|
|
165
|
+
"node:crypto",
|
|
166
|
+
"@gala-chain/api"
|
|
167
167
|
]
|
|
168
168
|
},
|
|
169
169
|
{
|
|
@@ -179,10 +179,10 @@
|
|
|
179
179
|
"dotenv",
|
|
180
180
|
"events",
|
|
181
181
|
"@gala-chain/api",
|
|
182
|
-
"@gala-chain/connect",
|
|
183
182
|
"fs",
|
|
184
183
|
"path",
|
|
185
184
|
"crypto",
|
|
185
|
+
"node:crypto",
|
|
186
186
|
"os",
|
|
187
187
|
"util",
|
|
188
188
|
"stream",
|
|
@@ -196,20 +196,25 @@
|
|
|
196
196
|
}
|
|
197
197
|
],
|
|
198
198
|
"devDependencies": {
|
|
199
|
-
"@
|
|
200
|
-
"@
|
|
201
|
-
"@testing-library/
|
|
202
|
-
"@
|
|
203
|
-
"@
|
|
204
|
-
"@
|
|
205
|
-
"
|
|
199
|
+
"@gala-chain/connect-2-reference": "npm:@gala-chain/connect@2.7.1",
|
|
200
|
+
"@testing-library/dom": "^10.4.2",
|
|
201
|
+
"@testing-library/react": "^16.3.3",
|
|
202
|
+
"@types/react": "^19.3.0",
|
|
203
|
+
"@typescript-eslint/eslint-plugin": "^8.70.1",
|
|
204
|
+
"@typescript-eslint/parser": "^8.70.1",
|
|
205
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
206
|
+
"@vitest/coverage-v8": "^5.0.1",
|
|
207
|
+
"eslint": "^10.11.0",
|
|
206
208
|
"eslint-config-prettier": "^10.1.8",
|
|
207
|
-
"eslint-plugin-prettier": "^5.5.
|
|
209
|
+
"eslint-plugin-prettier": "^5.5.6",
|
|
208
210
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
209
211
|
"jscpd": "^5.1.2",
|
|
210
|
-
"react": "^19.
|
|
211
|
-
"react-dom": "^19.
|
|
212
|
-
"tsx": "^4.21.0"
|
|
212
|
+
"react": "^19.3.0",
|
|
213
|
+
"react-dom": "^19.3.0",
|
|
214
|
+
"tsx": "^4.21.0",
|
|
215
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
216
|
+
"vite": "^8.3.0",
|
|
217
|
+
"vitest": "^5.0.1"
|
|
213
218
|
},
|
|
214
219
|
"scripts": {
|
|
215
220
|
"build": "pnpm run build:version && pnpm run clean && pnpm run build:types && pnpm run build:bundle",
|
|
@@ -223,8 +228,8 @@
|
|
|
223
228
|
"test:live": "vitest run tests/live/stage.live.ts --config tests/live/vitest.live.config.ts --testTimeout 300000",
|
|
224
229
|
"test:watch": "vitest",
|
|
225
230
|
"test:coverage": "pnpm run test:cov",
|
|
226
|
-
"test:cov": "vitest run --coverage",
|
|
227
|
-
"test:ci": "vitest run --coverage --reporter=verbose",
|
|
231
|
+
"test:cov": "vitest run --coverage --maxWorkers=6",
|
|
232
|
+
"test:ci": "vitest run --coverage --reporter=verbose --maxWorkers=6",
|
|
228
233
|
"coverage:goal": "tsx scripts/check-coverage-threshold.ts",
|
|
229
234
|
"check:coverage:goal": "pnpm run test:cov && pnpm run coverage:goal",
|
|
230
235
|
"check:clones": "jscpd --min-lines 12 --min-tokens 70 --threshold 0 src tests",
|