UNPKG

fastintear

Version:

Interact with FAST-INT-NEAR Protocol blockchain including transaction signing, utilities, and more.

1 lines 13 kB
{"version":3,"sources":["../../src/client.ts"],"names":["DEFAULT_NETWORK_ID","NETWORKS","ExternalStateManagerWrapper","MemoryStateManager","LocalStorageStateManager","TxHistoryManager","WalletAdapter","publicKeyFromPrivate","WIDGET_URL","near"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BO,SAAS,gBAAA,CAAiB,MAAA,GAAuB,EAAC,EAAG;AAC1D,EAAA,MAAM,SAAA,GAAY,OAAO,SAAA,IAAaA,2BAAA;AACtC,EAAA,MAAM,aAAA,GAA+B;AAAA,IACnC,GAAGC,kBAAS,SAAS,CAAA;AAAA,IACrB;AAAA,GACF;AAGA,EAAA,IAAI,YAAA;AACJ,EAAA,IAAI,OAAO,YAAA,EAAc;AAEvB,IAAA,IAAI,WAAA,IAAe,OAAO,YAAA,EAAc;AACtC,MAAA,YAAA,GAAe,MAAA,CAAO,YAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,YAAA,GAAe,IAAIC,oCAAA,CAA4B,MAAA,CAAO,YAAoC,CAAA;AAAA,IAC5F;AAAA,EACF,CAAA,MAAA,IAAW,OAAO,YAAA,EAAc;AAC9B,IAAA,YAAA,GAAe,IAAIC,4BAAmB,SAAS,CAAA;AAAA,EACjD,CAAA,MAAO;AACL,IAAA,YAAA,GAAe,IAAIC,kCAAyB,SAAS,CAAA;AAAA,EACvD;AAGA,EAAA,MAAM,gBAAA,GAAmB,IAAIC,yBAAA,EAAiB;AAG9C,EAAA,IAAI,YAAA,GAAmC,IAAA;AAGvC,EAAA,YAAA,CAAa,QAAA,EAAS,CAAE,IAAA,CAAK,CAAA,KAAA,KAAS;AACpC,IAAA,YAAA,GAAe,KAAA;AACf,IAAA,IAAI,KAAA,IAAS,MAAA,CAAO,SAAA,EAAW,aAAA,EAAe;AAC5C,MAAA,MAAA,CAAO,SAAA,CAAU,cAAc,KAAK,CAAA;AAAA,IACtC;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,MAAM,gBAAA,GAAmB,YAAA,CAAa,SAAA,CAAU,CAAC,KAAA,KAAU;AACzD,IAAA,MAAM,aAAA,GAAgB,YAAA;AACtB,IAAA,YAAA,GAAe,KAAA;AAGf,IAAA,IAAI,MAAA,CAAO,WAAW,aAAA,EAAe;AACnC,MAAA,MAAA,CAAO,SAAA,CAAU,cAAc,KAAK,CAAA;AAAA,IACtC;AAGA,IAAA,IAAI,CAAC,aAAA,EAAe,SAAA,IAAa,KAAA,CAAM,SAAA,EAAW;AAChD,MAAA,MAAA,CAAO,WAAW,SAAA,GAAY;AAAA,QAC5B,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,SAAA,EAAW,MAAM,SAAA,IAAa;AAAA,OAC/B,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,aAAA,EAAe,SAAA,IAAa,CAAC,MAAM,SAAA,EAAW;AACvD,MAAA,MAAA,CAAO,WAAW,YAAA,IAAe;AAAA,IACnC;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,MAAM,aAAA,GAAgB,IAAIC,uBAAA,CAAc;AAAA,IACtC,aAAA,gCAAsB,YAAA,KAAsB;AAC1C,MAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,UAAA,EAAW,GAAI,YAAA;AAEhD,MAAA,IAAI,SAAA,KAAc,cAAc,SAAA,EAAW;AACzC,QAAA,MAAM,QAAA,GAAwB;AAAA,UAC5B,WAAW,SAAA,IAAa,IAAA;AAAA,UACxB,SAAA,EAAW,UAAA,GAAaC,0BAAA,CAAqB,UAAU,CAAA,GAAI,IAAA;AAAA,UAC3D,YAAY,UAAA,IAAc,IAAA;AAAA,UAC1B,SAAA;AAAA,UACA,cAAc,YAAA,IAAgB,IAAA;AAAA,UAC9B,mBAAA,EAAqB,cAAc,mBAAA,IAAuB;AAAA,SAC5D;AAEA,QAAA,MAAM,YAAA,CAAa,SAAS,QAAQ,CAAA;AAAA,MACtC;AAAA,IACF,CAAA,EAfe,eAAA,CAAA;AAAA,IAgBf,SAAA,EAAWC;AAAA,GACZ,CAAA;AAID,EAAA,OAAO;AAAA;AAAA,IAEL,SAAA,kBAAW,MAAA,CAAA,MAAqB,YAAA,EAAc,SAAA,IAAa,IAAA,EAAhD,WAAA,CAAA;AAAA,IACX,SAAA,kBAAW,MAAA,CAAA,MAAqB,YAAA,EAAc,SAAA,IAAa,IAAA,EAAhD,WAAA,CAAA;AAAA,IACX,UAAA,kBAAY,MAAA,CAAA,MAAgC,YAAA,EAAc,SAAA,GAAY,aAAa,WAAA,EAAvE,YAAA,CAAA;AAAA;AAAA,IAGZ,QAAA,kBAAU,MAAA,CAAA,MAAmC,YAAA,CAAa,QAAA,EAAS,EAAzD,UAAA,CAAA;AAAA,IACV,0BAAU,MAAA,CAAA,CAAC,KAAA,KAAsC,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA,EAAlE,UAAA,CAAA;AAAA,IACV,UAAA,kBAAY,MAAA,CAAA,MAAqB,YAAA,CAAa,UAAA,EAAW,EAA7C,YAAA,CAAA;AAAA;AAAA,IAGZ,wBAAA,gCAAiC,KAAA,KAKZ;AACnB,MAAA,MAAM,WAAA,GAA2B;AAAA,QAC/B,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,UAAA,EAAY,MAAM,UAAA,IAAc,IAAA;AAAA,QAChC,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,YAAA,EAAc,IAAA;AAAA,QACd,mBAAA,EAAqB;AAAA,OACvB;AACA,MAAA,MAAM,YAAA,CAAa,SAAS,WAAW,CAAA;AAAA,IACzC,CAAA,EAf0B,0BAAA,CAAA;AAAA;AAAA,IAkB1B,qCAAqB,MAAA,CAAA,MAAe;AAClC,MAAA,OAAO,YAAA,YAAwBN,oCAAA;AAAA,IACjC,CAAA,EAFqB,qBAAA,CAAA;AAAA;AAAA,IAKrB,MAAA,0BAAS,SAAA,KAAsD;AAC7D,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,MAAA,CAAO,MAAA,CAAO,eAAe,SAAS,CAAA;AAGtC,QAAA,IAAI,SAAA,CAAU,SAAA,IAAa,aAAA,CAAc,SAAA,KAAc,UAAU,SAAA,EAAW;AAC1E,UAAA,YAAA,CAAa,UAAA,EAAW;AACxB,UAAA,gBAAA,CAAiB,YAAA,EAAa;AAAA,QAChC;AAAA,MACF;AACA,MAAA,OAAO,aAAA;AAAA,IACT,CAAA,EAXQ,QAAA,CAAA;AAAA;AAAA,IAcR,0BAAU,MAAA,CAAA,MAAM;AACd,MAAA,MAAM,UAAU,aAAA,CAAc,SAAA;AAC9B,MAAA,MAAM,UAAU,aAAA,CAAc,OAAA;AAC9B,MAAA,MAAM,YAAY,aAAA,CAAc,SAAA;AAChC,MAAA,MAAM,YAAY,aAAA,CAAc,SAAA;AAChC,MAAA,MAAM,cAAc,aAAA,CAAc,WAAA;AAClC,MAAA,MAAM,UAAU,YAAA,EAAc,SAAA;AAC9B,MAAA,MAAM,WAAW,YAAA,EAAc,mBAAA;AAC/B,MAAA,MAAM,YAAY,YAAA,EAAc,SAAA;AAEhC,MAAA,OAAO;AAAA,QACL,OAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA,EApBU,UAAA,CAAA;AAAA;AAAA,IAuBV,+BAAe,MAAA,CAAA,OACb,MAAA,GAAmD,EAAC,EACpD,SAAA,GAAsD,EAAC,KACJ;AACnD,MAAA,MAAM,MAAA,GAAS,MAAMO,eAAA,CAAK,aAAA,CAAc,QAAQ,SAAS,CAAA;AAGzD,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,MAAM,QAAA,GAAwB;AAAA,UAC5B,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,UAAA,EAAY,IAAA;AAAA;AAAA,UACZ,SAAA;AAAA,UACA,YAAA,EAAc,IAAA;AAAA,UACd,mBAAA,EAAqB,OAAO,UAAA,IAAc;AAAA,SAC5C;AACA,QAAA,MAAM,YAAA,CAAa,SAAS,QAAQ,CAAA;AAAA,MACtC;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EApBe,eAAA,CAAA;AAAA,IAsBf,yBAAS,MAAA,CAAA,YAAY;AACnB,MAAA,MAAM,cAAc,OAAA,EAAQ;AAC5B,MAAA,MAAM,aAAa,UAAA,EAAW;AAAA,IAChC,CAAA,EAHS,SAAA,CAAA;AAAA;AAAA,IAMT,SAASA,eAAA,CAAK,OAAA;AAAA;AAAA,IAGd,MAAMA,eAAA,CAAK,IAAA;AAAA,IACX,cAAcA,eAAA,CAAK,YAAA;AAAA,IACnB,YAAYA,eAAA,CAAK,UAAA;AAAA,IACjB,gBAAgBA,eAAA,CAAK,cAAA;AAAA,IACrB,SAASA,eAAA,CAAK,OAAA;AAAA;AAAA,IAGd,QAAQA,eAAA,CAAK,MAAA;AAAA,IACb,aAAaA,eAAA,CAAK,WAAA;AAAA;AAAA,IAGlB,cAAA,kBAAgB,MAAA,CAAA,MAAM,gBAAA,CAAiB,UAAA,EAAW,EAAlC,gBAAA,CAAA;AAAA;AAAA,IAGhB,SAAA,0BAAY,QAAA,KAAyD;AACnE,MAAA,OAAO,YAAA,CAAa,UAAU,QAAQ,CAAA;AAAA,IACxC,CAAA,EAFW,WAAA,CAAA;AAAA;AAAA,IAKX,IAAA,0BAAO,QAAA,KAAmD;AACxD,MAAA,OAAO,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AAAA,IAC5C,CAAA,EAFM,MAAA,CAAA;AAAA;AAAA,IAKN,SAASA,eAAA,CAAK,OAAA;AAAA;AAAA,IAGd,OAAOA,eAAA,CAAK,KAAA;AAAA,IACZ,KAAKA,eAAA,CAAK,GAAA;AAAA;AAAA,IAGV,yBAAS,MAAA,CAAA,MAAM;AACb,MAAA,gBAAA,EAAiB;AAAA,IACnB,CAAA,EAFS,SAAA;AAAA,GAGX;AACF;AA1NgB,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA","file":"client.cjs","sourcesContent":["import * as near from \"./near.js\";\nimport { \n type NetworkConfig,\n type WalletState,\n type TxStatus,\n type StateManager,\n type ExternalStateManager,\n type StateChangeCallbacks,\n NETWORKS,\n DEFAULT_NETWORK_ID,\n WIDGET_URL,\n LocalStorageStateManager,\n MemoryStateManager,\n ExternalStateManagerWrapper,\n TxHistoryManager\n} from \"./state.js\";\nimport { WalletAdapter } from \"./intear.js\";\nimport { publicKeyFromPrivate } from \"./utils\";\n\nexport interface ClientConfig {\n networkId?: string;\n stateManager?: StateManager | ExternalStateManager;\n callbacks?: StateChangeCallbacks;\n isolateState?: boolean; // Use memory state manager for complete isolation\n}\n\n/**\n * Creates a NEAR client instance with modern state management\n */\nexport function createNearClient(config: ClientConfig = {}) {\n const networkId = config.networkId || DEFAULT_NETWORK_ID;\n const networkConfig: NetworkConfig = {\n ...NETWORKS[networkId],\n networkId,\n };\n\n // Determine state manager\n let stateManager: StateManager;\n if (config.stateManager) {\n // If it's an ExternalStateManager, wrap it\n if ('subscribe' in config.stateManager) {\n stateManager = config.stateManager as StateManager;\n } else {\n stateManager = new ExternalStateManagerWrapper(config.stateManager as ExternalStateManager);\n }\n } else if (config.isolateState) {\n stateManager = new MemoryStateManager(networkId);\n } else {\n stateManager = new LocalStorageStateManager(networkId);\n }\n\n // Transaction history manager\n const txHistoryManager = new TxHistoryManager();\n\n // Current state cache\n let currentState: WalletState | null = null;\n\n // Initialize state\n stateManager.getState().then(state => {\n currentState = state;\n if (state && config.callbacks?.onStateChange) {\n config.callbacks.onStateChange(state);\n }\n });\n\n // Subscribe to state changes\n const unsubscribeState = stateManager.subscribe((state) => {\n const previousState = currentState;\n currentState = state;\n\n // Trigger callbacks\n if (config.callbacks?.onStateChange) {\n config.callbacks.onStateChange(state);\n }\n\n // Check for connect/disconnect events\n if (!previousState?.accountId && state.accountId) {\n config.callbacks?.onConnect?.({\n accountId: state.accountId,\n publicKey: state.publicKey || '',\n });\n } else if (previousState?.accountId && !state.accountId) {\n config.callbacks?.onDisconnect?.();\n }\n });\n\n // Create isolated adapter for this client\n const clientAdapter = new WalletAdapter({\n onStateUpdate: async (adapterState: any) => {\n const { accountId, lastWalletId, privateKey } = adapterState;\n \n if (accountId !== currentState?.accountId) {\n const newState: WalletState = {\n accountId: accountId || null,\n publicKey: privateKey ? publicKeyFromPrivate(privateKey) : null,\n privateKey: privateKey || null,\n networkId,\n lastWalletId: lastWalletId || null,\n accessKeyContractId: currentState?.accessKeyContractId || null,\n };\n \n await stateManager.setState(newState);\n }\n },\n walletUrl: WIDGET_URL,\n });\n\n\n // Return client API\n return {\n // State accessors\n accountId: (): string | null => currentState?.accountId || null,\n publicKey: (): string | null => currentState?.publicKey || null,\n authStatus: (): \"SignedIn\" | \"SignedOut\" => currentState?.accountId ? \"SignedIn\" : \"SignedOut\",\n \n // State management\n getState: (): Promise<WalletState | null> => stateManager.getState(),\n setState: (state: WalletState): Promise<void> => stateManager.setState(state),\n clearState: (): Promise<void> => stateManager.clearState(),\n \n // State restoration for external management\n restoreFromExternalState: async (state: {\n accountId: string;\n publicKey: string;\n privateKey?: string;\n networkId: string;\n }): Promise<void> => {\n const walletState: WalletState = {\n accountId: state.accountId,\n publicKey: state.publicKey,\n privateKey: state.privateKey || null,\n networkId: state.networkId,\n lastWalletId: null,\n accessKeyContractId: null,\n };\n await stateManager.setState(walletState);\n },\n\n // Check if externally managed\n isExternallyManaged: (): boolean => {\n return stateManager instanceof ExternalStateManagerWrapper;\n },\n\n // Config management\n config: (newConfig?: Partial<NetworkConfig>): NetworkConfig => {\n if (newConfig) {\n Object.assign(networkConfig, newConfig);\n \n // If network changed, clear state\n if (newConfig.networkId && networkConfig.networkId !== newConfig.networkId) {\n stateManager.clearState();\n txHistoryManager.clearHistory();\n }\n }\n return networkConfig;\n },\n\n // Selection info\n selected: () => {\n const network = networkConfig.networkId;\n const nodeUrl = networkConfig.nodeUrl;\n const walletUrl = networkConfig.walletUrl;\n const helperUrl = networkConfig.helperUrl;\n const explorerUrl = networkConfig.explorerUrl;\n const account = currentState?.accountId;\n const contract = currentState?.accessKeyContractId;\n const publicKey = currentState?.publicKey;\n\n return {\n network,\n nodeUrl,\n walletUrl,\n helperUrl,\n explorerUrl,\n account,\n contract,\n publicKey\n };\n },\n\n // Authentication methods\n requestSignIn: async (\n params: Parameters<typeof near.requestSignIn>[0] = {},\n callbacks: Parameters<typeof near.requestSignIn>[1] = {}\n ): Promise<ReturnType<typeof near.requestSignIn>> => {\n const result = await near.requestSignIn(params, callbacks);\n \n // Update state with results\n if (result.accountId) {\n const newState: WalletState = {\n accountId: result.accountId,\n publicKey: result.publicKey,\n privateKey: null, // Will be set by adapter\n networkId,\n lastWalletId: null,\n accessKeyContractId: params.contractId || null,\n };\n await stateManager.setState(newState);\n }\n \n return result;\n },\n\n signOut: async () => {\n await clientAdapter.signOut();\n await stateManager.clearState();\n },\n\n // RPC methods\n sendRpc: near.sendRpc,\n \n // Query methods\n view: near.view,\n queryAccount: near.queryAccount,\n queryBlock: near.queryBlock,\n queryAccessKey: near.queryAccessKey,\n queryTx: near.queryTx,\n\n // Transaction methods\n sendTx: near.sendTx,\n signMessage: near.signMessage,\n\n // Transaction history\n localTxHistory: () => txHistoryManager.getHistory(),\n\n // State subscription\n subscribe: (callback: (state: WalletState) => void): (() => void) => {\n return stateManager.subscribe(callback);\n },\n\n // Transaction subscription\n onTx: (callback: (tx: TxStatus) => void): (() => void) => {\n return txHistoryManager.subscribe(callback);\n },\n\n // Action helpers\n actions: near.actions,\n\n // Utils and exports\n utils: near.utils,\n exp: near.exp,\n\n // Cleanup\n destroy: () => {\n unsubscribeState();\n },\n };\n}\n"]}