@fastnear/api 0.9.6 → 0.9.8

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state.ts"],"sourcesContent":["import {\n lsSet,\n lsGet,\n publicKeyFromPrivate,\n} from \"@fastnear/utils\";\nimport {WalletAdapter} from \"@fastnear/wallet-adapter\";\n\nexport const WIDGET_URL = \"https://js.cdn.fastnear.com\";\n\nexport const DEFAULT_NETWORK_ID = \"mainnet\";\nexport const NETWORKS = {\n testnet: {\n networkId: \"testnet\",\n nodeUrl: \"https://rpc.testnet.fastnear.com/\",\n },\n mainnet: {\n networkId: \"mainnet\",\n nodeUrl: \"https://rpc.mainnet.fastnear.com/\",\n },\n};\n\nexport interface NetworkConfig {\n networkId: string;\n nodeUrl?: string;\n walletUrl?: string;\n helperUrl?: string;\n explorerUrl?: string;\n\n [key: string]: any;\n}\n\nexport interface AppState {\n accountId?: string | null;\n privateKey?: string | null;\n lastWalletId?: string | null;\n publicKey?: string | null;\n accessKeyContractId?: string | null;\n\n [key: string]: any;\n}\n\nexport interface TxStatus {\n txId: string;\n updateTimestamp?: number;\n\n [key: string]: any;\n}\n\nexport type TxHistory = Record<string, TxStatus>;\n\nexport interface EventListeners {\n account: Set<(accountId: string) => void>;\n tx: Set<(tx: TxStatus) => void>;\n}\n\nexport interface UnbroadcastedEvents {\n account: string[];\n tx: TxStatus[];\n}\n\nexport interface WalletAdapterState {\n publicKey?: string | null;\n privateKey?: string | null;\n accountId?: string | null;\n lastWalletId?: string | null;\n networkId: string;\n}\n\n\n// Load config from localStorage or default to the network's config\nexport let _config: NetworkConfig = lsGet(\"config\") || {\n ...NETWORKS[DEFAULT_NETWORK_ID]\n};\n\n// Load application state from localStorage\nexport let _state: AppState = lsGet(\"state\") || {};\n\n// Triggered by the wallet adapter\nexport const onAdapterStateUpdate = (state: WalletAdapterState) => {\n console.log(\"Adapter state update:\", state);\n const { accountId, lastWalletId, privateKey } = state;\n update({\n accountId: accountId || undefined,\n lastWalletId: lastWalletId || undefined,\n ...(privateKey ? { privateKey } : {}),\n });\n}\n\nexport const getWalletAdapterState = (): WalletAdapterState => {\n return {\n publicKey: _state.publicKey,\n accountId: _state.accountId,\n lastWalletId: _state.lastWalletId,\n networkId: _config.networkId,\n };\n}\n\n// We can create an adapter instance here\nexport let _adapter = new WalletAdapter({\n onStateUpdate: onAdapterStateUpdate,\n lastState: getWalletAdapterState(),\n widgetUrl: WIDGET_URL,\n});\n\n// Attempt to set publicKey if we have a privateKey\ntry {\n _state.publicKey = _state.privateKey\n ? publicKeyFromPrivate(_state.privateKey)\n : null;\n} catch (e) {\n console.error(\"Error parsing private key:\", e);\n _state.privateKey = null;\n lsSet(\"nonce\", null);\n}\n\n// Transaction history\nexport let _txHistory: TxHistory = lsGet(\"txHistory\") || {};\n\n\nexport const _unbroadcastedEvents: UnbroadcastedEvents = {\n account: [],\n tx: [],\n};\n\n// events / listeners\nexport const events = {\n _eventListeners: {\n account: new Set(),\n tx: new Set(),\n },\n\n notifyAccountListeners: (accountId: string) => {\n if (events._eventListeners.account.size === 0) {\n _unbroadcastedEvents.account.push(accountId);\n return;\n }\n events._eventListeners.account.forEach((callback: any) => {\n try {\n callback(accountId);\n } catch (e) {\n console.error(e);\n }\n });\n },\n\n notifyTxListeners: (tx: TxStatus) => {\n if (events._eventListeners.tx.size === 0) {\n _unbroadcastedEvents.tx.push(tx);\n return;\n }\n events._eventListeners.tx.forEach((callback: any) => {\n try {\n callback(tx);\n } catch (e) {\n console.error(e);\n }\n });\n },\n\n onAccount: (callback: (accountId: string) => void) => {\n events._eventListeners.account.add(callback);\n if (_unbroadcastedEvents.account.length > 0) {\n const accountEvent = _unbroadcastedEvents.account;\n _unbroadcastedEvents.account = [];\n accountEvent.forEach(events.notifyAccountListeners);\n }\n },\n\n onTx: (callback: (tx: TxStatus) => void): void => {\n events._eventListeners.tx.add(callback);\n if (_unbroadcastedEvents.tx.length > 0) {\n const txEvent = _unbroadcastedEvents.tx;\n _unbroadcastedEvents.tx = [];\n txEvent.forEach(events.notifyTxListeners);\n }\n }\n}\n\n// Mutators\n// @todo: in favor of limiting when out of alpha\n// but haven't given it enough thought ~ mike\nexport const update = (newState: Partial<AppState>) => {\n const oldState = _state;\n _state = {..._state, ...newState};\n\n lsSet(\"state\", {\n accountId: _state.accountId,\n privateKey: _state.privateKey,\n lastWalletId: _state.lastWalletId,\n accessKeyContractId: _state.accessKeyContractId,\n });\n\n if (\n newState.hasOwnProperty(\"privateKey\") &&\n newState.privateKey !== oldState.privateKey\n ) {\n _state.publicKey = newState.privateKey\n ? publicKeyFromPrivate(newState.privateKey as string)\n : null;\n lsSet(\"nonce\", null);\n }\n\n if (newState.accountId !== oldState.accountId) {\n events.notifyAccountListeners(newState.accountId as string);\n }\n\n if (\n (newState.hasOwnProperty(\"lastWalletId\") &&\n newState.lastWalletId !== oldState.lastWalletId) ||\n (newState.hasOwnProperty(\"accountId\") &&\n newState.accountId !== oldState.accountId) ||\n (newState.hasOwnProperty(\"privateKey\") &&\n newState.privateKey !== oldState.privateKey)\n ) {\n _adapter.setState(getWalletAdapterState());\n }\n}\n\nexport const updateTxHistory = (txStatus: TxStatus) => {\n const txId = txStatus.txId;\n _txHistory[txId] = {\n ...(_txHistory[txId] || {}),\n ...txStatus,\n updateTimestamp: Date.now(),\n };\n lsSet(\"txHistory\", _txHistory);\n events.notifyTxListeners(_txHistory[txId]);\n}\n\nexport const getConfig = (): NetworkConfig => {\n return _config;\n}\n\nexport const getTxHistory = (): TxHistory => {\n return _txHistory;\n}\n\n// Exposed \"write\" functions\nexport const setConfig = (newConf: NetworkConfig): void => {\n _config = { ...NETWORKS[newConf.networkId], ...newConf };\n lsSet(\"config\", _config);\n}\n\nexport const resetTxHistory = (): void => {\n _txHistory = {};\n lsSet(\"txHistory\", _txHistory);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/state.ts"],"sourcesContent":["import {\n lsSet,\n lsGet,\n publicKeyFromPrivate,\n} from \"@fastnear/utils\";\n\nexport const DEFAULT_NETWORK_ID = \"mainnet\";\nexport const NETWORKS = {\n testnet: {\n networkId: \"testnet\",\n nodeUrl: \"https://rpc.testnet.fastnear.com/\",\n },\n mainnet: {\n networkId: \"mainnet\",\n nodeUrl: \"https://rpc.mainnet.fastnear.com/\",\n },\n};\n\nexport interface NetworkConfig {\n networkId: string;\n nodeUrl?: string;\n walletUrl?: string;\n helperUrl?: string;\n explorerUrl?: string;\n\n [key: string]: any;\n}\n\nexport interface AppState {\n accountId?: string | null;\n privateKey?: string | null;\n lastWalletId?: string | null;\n publicKey?: string | null;\n accessKeyContractId?: string | null;\n\n [key: string]: any;\n}\n\nexport interface TxStatus {\n txId: string;\n updateTimestamp?: number;\n\n [key: string]: any;\n}\n\nexport type TxHistory = Record<string, TxStatus>;\n\nexport interface EventListeners {\n account: Set<(accountId: string) => void>;\n tx: Set<(tx: TxStatus) => void>;\n}\n\nexport interface UnbroadcastedEvents {\n account: string[];\n tx: TxStatus[];\n}\n\n// Load config from localStorage or default to the network's config\nexport let _config: NetworkConfig = lsGet(\"config\") || {\n ...NETWORKS[DEFAULT_NETWORK_ID]\n};\n\n// Load application state from localStorage\nexport let _state: AppState = lsGet(\"state\") || {};\n\nexport interface WalletProvider {\n connect(options?: { contractId?: string; network?: string; excludedWallets?: string[]; features?: Record<string, boolean> }): Promise<{ accountId: string } | null>;\n restore?(options?: { contractId?: string; network?: string }): Promise<{ accountId: string } | null>;\n disconnect(): Promise<void>;\n sendTransaction(params: { receiverId: string; actions: any[]; signerId?: string }): Promise<any>;\n signMessage?(params: { message: string; recipient: string; nonce: Uint8Array }): Promise<any>;\n accountId(): string | null;\n isConnected(): boolean;\n}\n\nlet _walletProvider: WalletProvider | null = null;\n\nexport const setWalletProvider = (provider: WalletProvider): void => {\n _walletProvider = provider;\n};\n\nexport const getWalletProvider = (): WalletProvider | null => {\n return _walletProvider;\n};\n\n// Attempt to set publicKey if we have a privateKey\ntry {\n _state.publicKey = _state.privateKey\n ? publicKeyFromPrivate(_state.privateKey)\n : null;\n} catch (e) {\n console.error(\"Error parsing private key:\", e);\n _state.privateKey = null;\n lsSet(\"nonce\", null);\n}\n\n// Transaction history\nexport let _txHistory: TxHistory = lsGet(\"txHistory\") || {};\n\n\nexport const _unbroadcastedEvents: UnbroadcastedEvents = {\n account: [],\n tx: [],\n};\n\n// events / listeners\nexport const events = {\n _eventListeners: {\n account: new Set(),\n tx: new Set(),\n },\n\n notifyAccountListeners: (accountId: string) => {\n if (events._eventListeners.account.size === 0) {\n _unbroadcastedEvents.account.push(accountId);\n return;\n }\n events._eventListeners.account.forEach((callback: any) => {\n try {\n callback(accountId);\n } catch (e) {\n console.error(e);\n }\n });\n },\n\n notifyTxListeners: (tx: TxStatus) => {\n if (events._eventListeners.tx.size === 0) {\n _unbroadcastedEvents.tx.push(tx);\n return;\n }\n events._eventListeners.tx.forEach((callback: any) => {\n try {\n callback(tx);\n } catch (e) {\n console.error(e);\n }\n });\n },\n\n onAccount: (callback: (accountId: string) => void) => {\n events._eventListeners.account.add(callback);\n if (_unbroadcastedEvents.account.length > 0) {\n const accountEvent = _unbroadcastedEvents.account;\n _unbroadcastedEvents.account = [];\n accountEvent.forEach(events.notifyAccountListeners);\n }\n },\n\n onTx: (callback: (tx: TxStatus) => void): void => {\n events._eventListeners.tx.add(callback);\n if (_unbroadcastedEvents.tx.length > 0) {\n const txEvent = _unbroadcastedEvents.tx;\n _unbroadcastedEvents.tx = [];\n txEvent.forEach(events.notifyTxListeners);\n }\n }\n}\n\n// Mutators\nexport const update = (newState: Partial<AppState>) => {\n const oldState = _state;\n _state = {..._state, ...newState};\n\n lsSet(\"state\", {\n accountId: _state.accountId,\n privateKey: _state.privateKey,\n lastWalletId: _state.lastWalletId,\n accessKeyContractId: _state.accessKeyContractId,\n });\n\n if (\n newState.hasOwnProperty(\"privateKey\") &&\n newState.privateKey !== oldState.privateKey\n ) {\n _state.publicKey = newState.privateKey\n ? publicKeyFromPrivate(newState.privateKey as string)\n : null;\n lsSet(\"nonce\", null);\n }\n\n if (newState.accountId !== oldState.accountId) {\n events.notifyAccountListeners(newState.accountId as string);\n }\n}\n\nexport const updateTxHistory = (txStatus: TxStatus) => {\n const txId = txStatus.txId;\n _txHistory[txId] = {\n ...(_txHistory[txId] || {}),\n ...txStatus,\n updateTimestamp: Date.now(),\n };\n lsSet(\"txHistory\", _txHistory);\n events.notifyTxListeners(_txHistory[txId]);\n}\n\nexport const getConfig = (): NetworkConfig => {\n return _config;\n}\n\nexport const getTxHistory = (): TxHistory => {\n return _txHistory;\n}\n\n// Exposed \"write\" functions\nexport const setConfig = (newConf: NetworkConfig): void => {\n _config = { ...NETWORKS[newConf.networkId], ...newConf };\n lsSet(\"config\", _config);\n}\n\nexport const resetTxHistory = (): void => {\n _txHistory = {};\n lsSet(\"txHistory\", _txHistory);\n}\n"],"mappings":";;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,qBAAqB;AAC3B,MAAM,WAAW;AAAA,EACtB,SAAS;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,EACX;AACF;AA0CO,IAAI,UAAyB,MAAM,QAAQ,KAAK;AAAA,EACrD,GAAG,SAAS,kBAAkB;AAChC;AAGO,IAAI,SAAmB,MAAM,OAAO,KAAK,CAAC;AAYjD,IAAI,kBAAyC;AAEtC,MAAM,oBAAoB,wBAAC,aAAmC;AACnE,oBAAkB;AACpB,GAFiC;AAI1B,MAAM,oBAAoB,6BAA6B;AAC5D,SAAO;AACT,GAFiC;AAKjC,IAAI;AACF,SAAO,YAAY,OAAO,aACtB,qBAAqB,OAAO,UAAU,IACtC;AACN,SAAS,GAAG;AACV,UAAQ,MAAM,8BAA8B,CAAC;AAC7C,SAAO,aAAa;AACpB,QAAM,SAAS,IAAI;AACrB;AAGO,IAAI,aAAwB,MAAM,WAAW,KAAK,CAAC;AAGnD,MAAM,uBAA4C;AAAA,EACvD,SAAS,CAAC;AAAA,EACV,IAAI,CAAC;AACP;AAGO,MAAM,SAAS;AAAA,EACpB,iBAAiB;AAAA,IACf,SAAS,oBAAI,IAAI;AAAA,IACjB,IAAI,oBAAI,IAAI;AAAA,EACd;AAAA,EAEA,wBAAwB,wBAAC,cAAsB;AAC7C,QAAI,OAAO,gBAAgB,QAAQ,SAAS,GAAG;AAC7C,2BAAqB,QAAQ,KAAK,SAAS;AAC3C;AAAA,IACF;AACA,WAAO,gBAAgB,QAAQ,QAAQ,CAAC,aAAkB;AACxD,UAAI;AACF,iBAAS,SAAS;AAAA,MACpB,SAAS,GAAG;AACV,gBAAQ,MAAM,CAAC;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH,GAZwB;AAAA,EAcxB,mBAAmB,wBAAC,OAAiB;AACnC,QAAI,OAAO,gBAAgB,GAAG,SAAS,GAAG;AACxC,2BAAqB,GAAG,KAAK,EAAE;AAC/B;AAAA,IACF;AACA,WAAO,gBAAgB,GAAG,QAAQ,CAAC,aAAkB;AACnD,UAAI;AACF,iBAAS,EAAE;AAAA,MACb,SAAS,GAAG;AACV,gBAAQ,MAAM,CAAC;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH,GAZmB;AAAA,EAcnB,WAAW,wBAAC,aAA0C;AACpD,WAAO,gBAAgB,QAAQ,IAAI,QAAQ;AAC3C,QAAI,qBAAqB,QAAQ,SAAS,GAAG;AAC3C,YAAM,eAAe,qBAAqB;AAC1C,2BAAqB,UAAU,CAAC;AAChC,mBAAa,QAAQ,OAAO,sBAAsB;AAAA,IACpD;AAAA,EACF,GAPW;AAAA,EASX,MAAM,wBAAC,aAA2C;AAChD,WAAO,gBAAgB,GAAG,IAAI,QAAQ;AACtC,QAAI,qBAAqB,GAAG,SAAS,GAAG;AACtC,YAAM,UAAU,qBAAqB;AACrC,2BAAqB,KAAK,CAAC;AAC3B,cAAQ,QAAQ,OAAO,iBAAiB;AAAA,IAC1C;AAAA,EACF,GAPM;AAQR;AAGO,MAAM,SAAS,wBAAC,aAAgC;AACrD,QAAM,WAAW;AACjB,WAAS,EAAC,GAAG,QAAQ,GAAG,SAAQ;AAEhC,QAAM,SAAS;AAAA,IACb,WAAW,OAAO;AAAA,IAClB,YAAY,OAAO;AAAA,IACnB,cAAc,OAAO;AAAA,IACrB,qBAAqB,OAAO;AAAA,EAC9B,CAAC;AAED,MACE,SAAS,eAAe,YAAY,KACpC,SAAS,eAAe,SAAS,YACjC;AACA,WAAO,YAAY,SAAS,aACxB,qBAAqB,SAAS,UAAoB,IAClD;AACJ,UAAM,SAAS,IAAI;AAAA,EACrB;AAEA,MAAI,SAAS,cAAc,SAAS,WAAW;AAC7C,WAAO,uBAAuB,SAAS,SAAmB;AAAA,EAC5D;AACF,GAxBsB;AA0Bf,MAAM,kBAAkB,wBAAC,aAAuB;AACrD,QAAM,OAAO,SAAS;AACtB,aAAW,IAAI,IAAI;AAAA,IACjB,GAAI,WAAW,IAAI,KAAK,CAAC;AAAA,IACzB,GAAG;AAAA,IACH,iBAAiB,KAAK,IAAI;AAAA,EAC5B;AACA,QAAM,aAAa,UAAU;AAC7B,SAAO,kBAAkB,WAAW,IAAI,CAAC;AAC3C,GAT+B;AAWxB,MAAM,YAAY,6BAAqB;AAC5C,SAAO;AACT,GAFyB;AAIlB,MAAM,eAAe,6BAAiB;AAC3C,SAAO;AACT,GAF4B;AAKrB,MAAM,YAAY,wBAAC,YAAiC;AACzD,YAAU,EAAE,GAAG,SAAS,QAAQ,SAAS,GAAG,GAAG,QAAQ;AACvD,QAAM,UAAU,OAAO;AACzB,GAHyB;AAKlB,MAAM,iBAAiB,6BAAY;AACxC,eAAa,CAAC;AACd,QAAM,aAAa,UAAU;AAC/B,GAH8B;","names":[]}
@@ -1,5 +1,5 @@
1
- /* ⋈ 🏃🏻💨 FastNEAR API - IIFE/UMD (@fastnear/api version 0.9.6) */
2
- /* https://www.npmjs.com/package/@fastnear/api/v/0.9.6 */
1
+ /* ⋈ 🏃🏻💨 FastNEAR API - IIFE/UMD (@fastnear/api version 0.9.7) */
2
+ /* https://www.npmjs.com/package/@fastnear/api/v/0.9.7 */
3
3
  "use strict";
4
4
  var near = (() => {
5
5
  var __defProp = Object.defineProperty;
@@ -45,8 +45,10 @@ var near = (() => {
45
45
  sendRpc: () => sendRpc,
46
46
  sendTx: () => sendTx,
47
47
  sendTxToRpc: () => sendTxToRpc,
48
+ signMessage: () => signMessage,
48
49
  signOut: () => signOut,
49
50
  state: () => state,
51
+ useWallet: () => useWallet,
50
52
  utils: () => utils,
51
53
  view: () => view,
52
54
  withBlockId: () => withBlockId
@@ -1568,7 +1570,7 @@ var near = (() => {
1568
1570
  const points = [];
1569
1571
  let p = elm;
1570
1572
  let base = p;
1571
- for (let window2 = 0; window2 < windows; window2++) {
1573
+ for (let window = 0; window < windows; window++) {
1572
1574
  base = p;
1573
1575
  points.push(base);
1574
1576
  for (let i = 1; i < windowSize; i++) {
@@ -1593,8 +1595,8 @@ var near = (() => {
1593
1595
  const mask = BigInt(2 ** W - 1);
1594
1596
  const maxNumber = 2 ** W;
1595
1597
  const shiftBy = BigInt(W);
1596
- for (let window2 = 0; window2 < windows; window2++) {
1597
- const offset = window2 * windowSize;
1598
+ for (let window = 0; window < windows; window++) {
1599
+ const offset = window * windowSize;
1598
1600
  let wbits = Number(n & mask);
1599
1601
  n >>= shiftBy;
1600
1602
  if (wbits > windowSize) {
@@ -1603,7 +1605,7 @@ var near = (() => {
1603
1605
  }
1604
1606
  const offset1 = offset;
1605
1607
  const offset2 = offset + Math.abs(wbits) - 1;
1606
- const cond1 = window2 % 2 !== 0;
1608
+ const cond1 = window % 2 !== 0;
1607
1609
  const cond2 = wbits < 0;
1608
1610
  if (wbits === 0) {
1609
1611
  f = f.add(constTimeNegate(cond1, precomputes[offset1]));
@@ -1626,8 +1628,8 @@ var near = (() => {
1626
1628
  const mask = BigInt(2 ** W - 1);
1627
1629
  const maxNumber = 2 ** W;
1628
1630
  const shiftBy = BigInt(W);
1629
- for (let window2 = 0; window2 < windows; window2++) {
1630
- const offset = window2 * windowSize;
1631
+ for (let window = 0; window < windows; window++) {
1632
+ const offset = window * windowSize;
1631
1633
  if (n === _0n3)
1632
1634
  break;
1633
1635
  let wbits = Number(n & mask);
@@ -2362,11 +2364,11 @@ var near = (() => {
2362
2364
  };
2363
2365
  var sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());
2364
2366
 
2365
- // ../../node_modules/base58-js/base58_chars.mjs
2367
+ // ../utils/node_modules/base58-js/base58_chars.js
2366
2368
  var base58_chars = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
2367
2369
  var base58_chars_default = base58_chars;
2368
2370
 
2369
- // ../../node_modules/base58-js/base58_to_binary.mjs
2371
+ // ../utils/node_modules/base58-js/base58_to_binary.js
2370
2372
  function base58_to_binary(base58String) {
2371
2373
  if (!base58String || typeof base58String !== "string")
2372
2374
  throw new Error(`Expected base58 string but got \u201C${base58String}\u201D`);
@@ -2397,7 +2399,7 @@ var near = (() => {
2397
2399
  __name(base58_to_binary, "base58_to_binary");
2398
2400
  var base58_to_binary_default = base58_to_binary;
2399
2401
 
2400
- // ../../node_modules/base58-js/create_base58_map.mjs
2402
+ // ../utils/node_modules/base58-js/create_base58_map.js
2401
2403
  var create_base58_map = /* @__PURE__ */ __name(() => {
2402
2404
  const base58M = Array(256).fill(-1);
2403
2405
  for (let i = 0; i < base58_chars_default.length; ++i)
@@ -2406,7 +2408,7 @@ var near = (() => {
2406
2408
  }, "create_base58_map");
2407
2409
  var create_base58_map_default = create_base58_map;
2408
2410
 
2409
- // ../../node_modules/base58-js/binary_to_base58.mjs
2411
+ // ../utils/node_modules/base58-js/binary_to_base58.js
2410
2412
  var base58Map = create_base58_map_default();
2411
2413
  function binary_to_base58(uint8array) {
2412
2414
  const result = [];
@@ -3458,7 +3460,7 @@ var near = (() => {
3458
3460
  case "DeployContract": {
3459
3461
  return {
3460
3462
  deployContract: {
3461
- code: fromBase64(action.codeBase64)
3463
+ code: base64ToBytes(action.codeBase64)
3462
3464
  }
3463
3465
  };
3464
3466
  }
@@ -3466,7 +3468,7 @@ var near = (() => {
3466
3468
  return {
3467
3469
  functionCall: {
3468
3470
  methodName: action.methodName,
3469
- args: action.argsBase64 !== null && action.argsBase64 !== void 0 ? fromBase64(action.argsBase64) : new TextEncoder().encode(JSON.stringify(action.args)),
3471
+ args: action.argsBase64 !== null && action.argsBase64 !== void 0 ? base64ToBytes(action.argsBase64) : new TextEncoder().encode(JSON.stringify(action.args)),
3470
3472
  gas: BigInt(action.gas ?? "300000000000000"),
3471
3473
  deposit: BigInt(action.deposit ?? "0")
3472
3474
  }
@@ -3562,8 +3564,6 @@ var near = (() => {
3562
3564
  __export(state_exports, {
3563
3565
  DEFAULT_NETWORK_ID: () => DEFAULT_NETWORK_ID,
3564
3566
  NETWORKS: () => NETWORKS,
3565
- WIDGET_URL: () => WIDGET_URL,
3566
- _adapter: () => _adapter,
3567
3567
  _config: () => _config,
3568
3568
  _state: () => _state,
3569
3569
  _txHistory: () => _txHistory,
@@ -3571,177 +3571,13 @@ var near = (() => {
3571
3571
  events: () => events,
3572
3572
  getConfig: () => getConfig,
3573
3573
  getTxHistory: () => getTxHistory,
3574
- getWalletAdapterState: () => getWalletAdapterState,
3575
- onAdapterStateUpdate: () => onAdapterStateUpdate,
3574
+ getWalletProvider: () => getWalletProvider,
3576
3575
  resetTxHistory: () => resetTxHistory,
3577
3576
  setConfig: () => setConfig,
3577
+ setWalletProvider: () => setWalletProvider,
3578
3578
  update: () => update,
3579
3579
  updateTxHistory: () => updateTxHistory
3580
3580
  });
3581
-
3582
- // ../wallet-adapter/src/index.ts
3583
- var WalletAdapter = class _WalletAdapter {
3584
- static {
3585
- __name(this, "WalletAdapter");
3586
- }
3587
- /** @type {HTMLIFrameElement} */
3588
- #iframe = null;
3589
- /** @type {string} */
3590
- #targetOrigin;
3591
- /** @type {string} */
3592
- #widgetUrl;
3593
- /** @type {Map<string, Function>} */
3594
- #pending = /* @__PURE__ */ new Map();
3595
- /** @type {WalletState} */
3596
- #state;
3597
- /** @type {Function} */
3598
- #onStateUpdate;
3599
- /** @type {string} */
3600
- #callbackUrl;
3601
- /** @type {string} */
3602
- static defaultWidgetUrl = "https://wallet-adapter.fastnear.com";
3603
- /**
3604
- * @param {WalletAdapterConfig} [config]
3605
- */
3606
- constructor({
3607
- widgetUrl = _WalletAdapter.defaultWidgetUrl,
3608
- targetOrigin = "*",
3609
- onStateUpdate,
3610
- lastState,
3611
- callbackUrl = window.location.href
3612
- } = {}) {
3613
- this.#targetOrigin = targetOrigin;
3614
- this.#widgetUrl = widgetUrl;
3615
- this.#onStateUpdate = onStateUpdate;
3616
- this.#callbackUrl = callbackUrl;
3617
- this.#state = lastState || {};
3618
- window.addEventListener("message", this.#handleMessage.bind(this));
3619
- }
3620
- /**
3621
- * Creates an iframe for wallet interaction
3622
- * @param {string} path - Path to load in iframe
3623
- * @returns {HTMLIFrameElement}
3624
- */
3625
- #createIframe(path) {
3626
- if (this.#iframe) {
3627
- this.#iframe.remove();
3628
- }
3629
- const url = new URL(path, this.#widgetUrl);
3630
- const iframe = document.createElement("iframe");
3631
- iframe.src = url.toString();
3632
- iframe.allow = "usb";
3633
- iframe.style.border = "none";
3634
- iframe.style.zIndex = "10000";
3635
- iframe.style.position = "fixed";
3636
- iframe.style.display = "block";
3637
- iframe.style.top = "0";
3638
- iframe.style.left = "0";
3639
- iframe.style.width = "100%";
3640
- iframe.style.height = "100%";
3641
- document.body.appendChild(iframe);
3642
- this.#iframe = iframe;
3643
- return iframe;
3644
- }
3645
- /**
3646
- * Handles messages from the wallet widget
3647
- * @param {MessageEvent} event
3648
- */
3649
- #handleMessage(event2) {
3650
- if (this.#targetOrigin !== "*" && event2.origin !== this.#targetOrigin) {
3651
- return;
3652
- }
3653
- const { id, type, action, payload } = event2.data;
3654
- if (type !== "wallet-adapter") return;
3655
- if (action === "close") {
3656
- this.#iframe?.remove();
3657
- this.#iframe = null;
3658
- return;
3659
- }
3660
- if (payload?.state) {
3661
- this.#state = { ...this.#state, ...payload.state };
3662
- this.#onStateUpdate?.(this.#state);
3663
- }
3664
- const resolve = this.#pending.get(id);
3665
- if (resolve) {
3666
- this.#pending.delete(id);
3667
- this.#iframe?.remove();
3668
- this.#iframe = null;
3669
- resolve(payload);
3670
- }
3671
- }
3672
- /**
3673
- * Sends a message to the wallet widget
3674
- * @param {string} path - Path to load in iframe
3675
- * @param {string} method - Method to call
3676
- * @param {Object} params - Parameters to pass
3677
- * @returns {Promise<any>}
3678
- */
3679
- async #sendMessage(path, method, params) {
3680
- return new Promise((resolve) => {
3681
- const id = Math.random().toString(36).slice(2);
3682
- this.#pending.set(id, resolve);
3683
- const iframe = this.#createIframe(path);
3684
- iframe.onload = () => {
3685
- iframe.contentWindow?.postMessage(
3686
- {
3687
- type: "wallet-adapter",
3688
- method,
3689
- params: {
3690
- id,
3691
- ...params,
3692
- state: this.#state,
3693
- callbackUrl: params.callbackUrl || this.#callbackUrl
3694
- }
3695
- },
3696
- this.#targetOrigin
3697
- );
3698
- };
3699
- });
3700
- }
3701
- /**
3702
- * Get current wallet state
3703
- * @returns {WalletState}
3704
- */
3705
- getState() {
3706
- return { ...this.#state };
3707
- }
3708
- /**
3709
- * Set current wallet state
3710
- * @param state
3711
- */
3712
- setState(state2) {
3713
- this.#state = state2;
3714
- }
3715
- /**
3716
- * Sign in with a NEAR wallet
3717
- * @param {SignInConfig} config
3718
- * @returns {Promise<any>}
3719
- *
3720
- * Should be returning SignInResult
3721
- */
3722
- async signIn(config2) {
3723
- return this.#sendMessage("/login.html", "signIn", config2);
3724
- }
3725
- /**
3726
- * Send a transaction using connected wallet
3727
- * @param {TransactionConfig} config
3728
- * @returns {Promise<TransactionResult>}
3729
- */
3730
- async sendTransactions(config2) {
3731
- return this.#sendMessage("/send.html", "sendTransactions", config2);
3732
- }
3733
- /**
3734
- * Clean up adapter resources
3735
- */
3736
- destroy() {
3737
- window.removeEventListener("message", this.#handleMessage);
3738
- this.#iframe?.remove();
3739
- this.#iframe = null;
3740
- }
3741
- };
3742
-
3743
- // src/state.ts
3744
- var WIDGET_URL = "https://js.cdn.fastnear.com";
3745
3581
  var DEFAULT_NETWORK_ID = "mainnet";
3746
3582
  var NETWORKS = {
3747
3583
  testnet: {
@@ -3757,28 +3593,13 @@ var near = (() => {
3757
3593
  ...NETWORKS[DEFAULT_NETWORK_ID]
3758
3594
  };
3759
3595
  var _state = lsGet("state") || {};
3760
- var onAdapterStateUpdate = /* @__PURE__ */ __name((state2) => {
3761
- console.log("Adapter state update:", state2);
3762
- const { accountId: accountId2, lastWalletId, privateKey } = state2;
3763
- update({
3764
- accountId: accountId2 || void 0,
3765
- lastWalletId: lastWalletId || void 0,
3766
- ...privateKey ? { privateKey } : {}
3767
- });
3768
- }, "onAdapterStateUpdate");
3769
- var getWalletAdapterState = /* @__PURE__ */ __name(() => {
3770
- return {
3771
- publicKey: _state.publicKey,
3772
- accountId: _state.accountId,
3773
- lastWalletId: _state.lastWalletId,
3774
- networkId: _config.networkId
3775
- };
3776
- }, "getWalletAdapterState");
3777
- var _adapter = new WalletAdapter({
3778
- onStateUpdate: onAdapterStateUpdate,
3779
- lastState: getWalletAdapterState(),
3780
- widgetUrl: WIDGET_URL
3781
- });
3596
+ var _walletProvider = null;
3597
+ var setWalletProvider = /* @__PURE__ */ __name((provider) => {
3598
+ _walletProvider = provider;
3599
+ }, "setWalletProvider");
3600
+ var getWalletProvider = /* @__PURE__ */ __name(() => {
3601
+ return _walletProvider;
3602
+ }, "getWalletProvider");
3782
3603
  try {
3783
3604
  _state.publicKey = _state.privateKey ? publicKeyFromPrivate(_state.privateKey) : null;
3784
3605
  } catch (e) {
@@ -3855,9 +3676,6 @@ var near = (() => {
3855
3676
  if (newState.accountId !== oldState.accountId) {
3856
3677
  events.notifyAccountListeners(newState.accountId);
3857
3678
  }
3858
- if (newState.hasOwnProperty("lastWalletId") && newState.lastWalletId !== oldState.lastWalletId || newState.hasOwnProperty("accountId") && newState.accountId !== oldState.accountId || newState.hasOwnProperty("privateKey") && newState.privateKey !== oldState.privateKey) {
3859
- _adapter.setState(getWalletAdapterState());
3860
- }
3861
3679
  }, "update");
3862
3680
  var updateTxHistory = /* @__PURE__ */ __name((txStatus) => {
3863
3681
  const txId = txStatus.txId;
@@ -4012,27 +3830,28 @@ var near = (() => {
4012
3830
  publicKey: publicKey2
4013
3831
  };
4014
3832
  }, "selected");
4015
- var requestSignIn = /* @__PURE__ */ __name(async ({ contractId }) => {
4016
- const privateKey = privateKeyFromRandom();
4017
- update({ accessKeyContractId: contractId, accountId: null, privateKey });
4018
- const pubKey = publicKeyFromPrivate(privateKey);
4019
- const result = await _adapter.signIn({
4020
- networkId: getConfig().networkId,
3833
+ var requestSignIn = /* @__PURE__ */ __name(async ({
3834
+ contractId,
3835
+ excludedWallets,
3836
+ features
3837
+ } = {}) => {
3838
+ const provider = getWalletProvider();
3839
+ if (!provider) {
3840
+ throw new Error("No wallet provider set. Call useWallet() first or load the @fastnear/wallet IIFE bundle.");
3841
+ }
3842
+ if (provider.isConnected()) {
3843
+ await provider.disconnect();
3844
+ }
3845
+ const result = await provider.connect({
4021
3846
  contractId,
4022
- publicKey: pubKey
3847
+ network: getConfig().networkId,
3848
+ excludedWallets,
3849
+ features
4023
3850
  });
4024
- if (result.error) {
4025
- throw new Error(`Wallet error: ${result.error}`);
4026
- }
4027
- if (result.url) {
4028
- if (typeof window !== "undefined") {
4029
- setTimeout(() => {
4030
- window.location.href = result.url;
4031
- }, 100);
4032
- }
4033
- } else if (result.accountId) {
4034
- update({ accountId: result.accountId });
3851
+ if (!result) {
3852
+ return;
4035
3853
  }
3854
+ update({ accountId: result.accountId });
4036
3855
  }, "requestSignIn");
4037
3856
  var view = /* @__PURE__ */ __name(async ({
4038
3857
  contractId,
@@ -4087,7 +3906,11 @@ var near = (() => {
4087
3906
  var localTxHistory = /* @__PURE__ */ __name(() => {
4088
3907
  return getTxHistory();
4089
3908
  }, "localTxHistory");
4090
- var signOut = /* @__PURE__ */ __name(() => {
3909
+ var signOut = /* @__PURE__ */ __name(async () => {
3910
+ const provider = getWalletProvider();
3911
+ if (provider?.isConnected()) {
3912
+ await provider.disconnect();
3913
+ }
4091
3914
  update({ accountId: null, privateKey: null, contractId: null });
4092
3915
  setConfig(NETWORKS[DEFAULT_NETWORK_ID]);
4093
3916
  }, "signOut");
@@ -4098,56 +3921,36 @@ var near = (() => {
4098
3921
  }) => {
4099
3922
  const signerId = _state.accountId;
4100
3923
  if (!signerId) throw new Error("Must sign in");
4101
- const publicKey2 = _state.publicKey ?? "";
3924
+ const pubKey = _state.publicKey ?? "";
4102
3925
  const privKey = _state.privateKey;
4103
3926
  const txId = generateTxId();
4104
3927
  if (!privKey || receiverId !== _state.accessKeyContractId || !canSignWithLAK(actions2)) {
4105
3928
  const jsonTx = { signerId, receiverId, actions: actions2 };
4106
3929
  updateTxHistory({ status: "Pending", txId, tx: jsonTx, finalState: false });
4107
- const url = new URL(typeof window !== "undefined" ? window.location.href : "");
4108
- url.searchParams.set("txIds", txId);
4109
- const existingParams = new URLSearchParams(window.location.search);
4110
- existingParams.forEach((value, key) => {
4111
- if (!url.searchParams.has(key)) {
4112
- url.searchParams.set(key, value);
4113
- }
4114
- });
4115
- url.searchParams.delete("errorCode");
4116
- url.searchParams.delete("errorMessage");
4117
3930
  try {
4118
- const result = await _adapter.sendTransactions({
4119
- transactions: [jsonTx],
4120
- callbackUrl: url.toString()
4121
- });
4122
- if (result.url) {
4123
- if (typeof window !== "undefined") {
4124
- setTimeout(() => {
4125
- window.location.href = result.url;
4126
- }, 100);
4127
- }
4128
- } else if (result.outcomes?.length) {
3931
+ const provider = getWalletProvider();
3932
+ if (!provider?.isConnected()) {
3933
+ throw new Error("Must sign in");
3934
+ }
3935
+ const result = await provider.sendTransaction(jsonTx);
3936
+ if (!result) {
3937
+ updateTxHistory({ txId, status: "RejectedByUser", finalState: true });
3938
+ return { rejected: true };
3939
+ }
3940
+ if (result.outcomes?.length) {
4129
3941
  result.outcomes.forEach(
4130
3942
  (r) => updateTxHistory({
4131
3943
  txId,
4132
3944
  status: "Executed",
4133
3945
  result: r,
4134
- txHash: r.transaction.hash,
3946
+ txHash: r.transaction?.hash,
4135
3947
  finalState: true
4136
3948
  })
4137
3949
  );
4138
- } else if (result.rejected) {
4139
- updateTxHistory({ txId, status: "RejectedByUser", finalState: true });
4140
- } else if (result.error) {
4141
- updateTxHistory({
4142
- txId,
4143
- status: "Error",
4144
- error: tryParseJson(result.error),
4145
- finalState: true
4146
- });
4147
3950
  }
4148
3951
  return result;
4149
3952
  } catch (err) {
4150
- console.error("fastnear: error sending tx using adapter:", err);
3953
+ console.error("fastnear: error sending tx using wallet provider:", err);
4151
3954
  updateTxHistory({
4152
3955
  txId,
4153
3956
  status: "Error",
@@ -4159,9 +3962,9 @@ var near = (() => {
4159
3962
  }
4160
3963
  let nonce = lsGet("nonce");
4161
3964
  if (nonce == null) {
4162
- const accessKey = await queryAccessKey({ accountId: signerId, publicKey: publicKey2 });
3965
+ const accessKey = await queryAccessKey({ accountId: signerId, publicKey: pubKey });
4163
3966
  if (accessKey.result.error) {
4164
- throw new Error(`Access key error: ${accessKey.result.error} when attempting to get nonce for ${signerId} for public key ${publicKey2}`);
3967
+ throw new Error(`Access key error: ${accessKey.result.error} when attempting to get nonce for ${signerId} for public key ${pubKey}`);
4165
3968
  }
4166
3969
  nonce = accessKey.result.nonce;
4167
3970
  lsSet("nonce", nonce);
@@ -4182,7 +3985,7 @@ var near = (() => {
4182
3985
  const blockHash = lastKnownBlock.header.hash;
4183
3986
  const plainTransactionObj = {
4184
3987
  signerId,
4185
- publicKey: publicKey2,
3988
+ publicKey: pubKey,
4186
3989
  nonce,
4187
3990
  receiverId,
4188
3991
  blockHash,
@@ -4209,6 +4012,19 @@ var near = (() => {
4209
4012
  console.error("Error Sending Transaction:", error, plainTransactionObj, signedTxBase64);
4210
4013
  }
4211
4014
  }, "sendTx");
4015
+ var signMessage = /* @__PURE__ */ __name(async (message) => {
4016
+ const provider = getWalletProvider();
4017
+ if (!provider?.isConnected()) {
4018
+ throw new Error("Must sign in");
4019
+ }
4020
+ if (!provider.signMessage) {
4021
+ throw new Error("Connected wallet does not support signMessage");
4022
+ }
4023
+ return provider.signMessage(message);
4024
+ }, "signMessage");
4025
+ var useWallet = /* @__PURE__ */ __name((provider) => {
4026
+ setWalletProvider(provider);
4027
+ }, "useWallet");
4212
4028
  var exp2 = {
4213
4029
  utils: {},
4214
4030
  // we will map this in a moment, giving keys, for IDE hints
@@ -4225,61 +4041,6 @@ var near = (() => {
4225
4041
  }
4226
4042
  var event = state["events"];
4227
4043
  delete state["events"];
4228
- try {
4229
- if (typeof window !== "undefined") {
4230
- const url = new URL(window.location.href);
4231
- const accId = url.searchParams.get("account_id");
4232
- const pubKey = url.searchParams.get("public_key");
4233
- const errCode = url.searchParams.get("errorCode");
4234
- const errMsg = url.searchParams.get("errorMessage");
4235
- const decodedErrMsg = errMsg ? decodeURIComponent(errMsg) : null;
4236
- const txHashes = url.searchParams.get("transactionHashes");
4237
- const txIds = url.searchParams.get("txIds");
4238
- if (errCode || errMsg) {
4239
- console.warn(new Error(`Wallet raises:
4240
- code: ${errCode}
4241
- message: ${decodedErrMsg}`));
4242
- }
4243
- if (accId && pubKey) {
4244
- if (pubKey === _state.publicKey) {
4245
- update({ accountId: accId });
4246
- } else {
4247
- if (authStatus() === "SignedIn") {
4248
- console.warn("Public key mismatch from wallet redirect", pubKey, _state.publicKey);
4249
- }
4250
- url.searchParams.delete("public_key");
4251
- }
4252
- }
4253
- if (txHashes || txIds) {
4254
- const hashArr = txHashes ? txHashes.split(",") : [];
4255
- const idArr = txIds ? txIds.split(",") : [];
4256
- if (idArr.length > hashArr.length) {
4257
- idArr.forEach((id) => {
4258
- updateTxHistory({ txId: id, status: "RejectedByUser", finalState: true });
4259
- });
4260
- } else if (idArr.length === hashArr.length) {
4261
- idArr.forEach((id, i) => {
4262
- updateTxHistory({
4263
- txId: id,
4264
- status: "PendingGotTxHash",
4265
- txHash: hashArr[i],
4266
- finalState: false
4267
- });
4268
- afterTxSent(id);
4269
- });
4270
- } else {
4271
- console.error(new Error("Transaction hash mismatch from wallet redirect"), idArr, hashArr);
4272
- }
4273
- }
4274
- url.searchParams.delete("txIds");
4275
- if (authStatus() === "SignedOut") {
4276
- url.searchParams.delete("errorCode");
4277
- url.searchParams.delete("errorMessage");
4278
- }
4279
- }
4280
- } catch (e) {
4281
- console.error("Error handling wallet redirect:", e);
4282
- }
4283
4044
  var actions = {
4284
4045
  functionCall: /* @__PURE__ */ __name(({
4285
4046
  methodName,
@@ -4365,7 +4126,7 @@ message: ${decodedErrMsg}`));
4365
4126
 
4366
4127
  try {
4367
4128
  Object.defineProperty(globalThis, 'near', {
4368
- value: near,
4129
+ value: near,
4369
4130
  enumerable: true,
4370
4131
  configurable: false,
4371
4132
  });
@@ -4376,4 +4137,8 @@ try {
4376
4137
 
4377
4138
  window.$$ = near.utils.convertUnit;
4378
4139
 
4140
+ if (typeof globalThis.nearWallet !== 'undefined') {
4141
+ near.useWallet(globalThis.nearWallet);
4142
+ }
4143
+
4379
4144
  //# sourceMappingURL=browser.global.js.map