{"version":3,"sources":["../../src/near.ts"],"sourcesContent":["import Big from \"big.js\";\nimport {\n  lsSet,\n  lsGet,\n  tryParseJson,\n  fromBase64,\n  toBase64,\n  canSignWithLAK,\n  toBase58,\n  parseJsonFromBytes,\n  signHash,\n  publicKeyFromPrivate,\n  privateKeyFromRandom,\n  serializeTransaction,\n  serializeSignedTransaction, bytesToBase64, PlainTransaction,\n} from \"@fastnear/utils\";\n\nimport {\n  _adapter,\n  _state,\n  DEFAULT_NETWORK_ID,\n  NETWORKS,\n  getTxHistory,\n  update,\n  updateTxHistory,\n} from \"./state.js\";\n\nimport {\n  getConfig,\n  setConfig,\n  resetTxHistory,\n} from \"./state.js\";\n\nimport { sha256 } from \"@noble/hashes/sha2\";\nimport * as reExportAllUtils from \"@fastnear/utils\";\nimport * as stateExports from \"./state.js\";\n\nBig.DP = 27;\nexport const MaxBlockDelayMs = 1000 * 60 * 60 * 6; // 6 hours\n\nexport interface AccessKeyWithError {\n  result: {\n    nonce: number;\n    permission?: any;\n    error?: string;\n  }\n}\n\nexport interface WalletTxResult {\n  url?: string;\n  outcomes?: Array<{ transaction: { hash: string } }>;\n  rejected?: boolean;\n  error?: string;\n}\n\nexport interface BlockView {\n  result: {\n    header: {\n      hash: string;\n      timestamp_nanosec: string;\n    }\n  }\n}\n\n// The structure it's saved to in storage\nexport interface LastKnownBlock {\n  header: {\n    hash: string;\n    timestamp_nanosec: string;\n  }\n}\n\nexport function withBlockId(params: Record<string, any>, blockId?: string) {\n  if (blockId === \"final\" || blockId === \"optimistic\") {\n    return { ...params, finality: blockId };\n  }\n  return blockId ? { ...params, block_id: blockId } : { ...params, finality: \"optimistic\" };\n}\n\nexport async function sendRpc(method: string, params: Record<string, any> | any[]) {\n  const config = getConfig();\n  if (!config?.nodeUrl) {\n    throw new Error(\"fastnear: getConfig() returned invalid config: missing nodeUrl.\");\n  }\n  const response = await fetch(config.nodeUrl, {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify({\n      jsonrpc: \"2.0\",\n      id: `fastnear-${Date.now()}`,\n      method,\n      params,\n    }),\n  });\n  const result = await response.json();\n  if (result.error) {\n    throw new Error(JSON.stringify(result.error));\n  }\n  return result;\n}\n\nexport function afterTxSent(txId: string) {\n  const txHistory = getTxHistory();\n  sendRpc(\"tx\", {\n    tx_hash: txHistory[txId]?.txHash,\n    sender_account_id: txHistory[txId]?.tx?.signerId,\n    wait_until: \"EXECUTED_OPTIMISTIC\",\n  })\n    .then( result => {\n      const successValue = result?.result?.status?.SuccessValue;\n      updateTxHistory({\n        txId,\n        status: \"Executed\",\n        result,\n        successValue: successValue ? tryParseJson(fromBase64(successValue)) : undefined,\n        finalState: true,\n      });\n    })\n    .catch((error) => {\n      updateTxHistory({\n        txId,\n        status: \"ErrorAfterIncluded\",\n        error: tryParseJson(error.message) ?? error.message,\n        finalState: true,\n      });\n    });\n}\n\nexport async function sendTxToRpc(signedTxBase64: string, waitUntil: string | undefined, txId: string) {\n  // default to \"INCLUDED\"\n  // see options: https://docs.near.org/api/rpc/transactions#tx-status-result\n  waitUntil = waitUntil || \"INCLUDED\";\n\n  try {\n    const sendTxRes = await sendRpc(\"send_tx\", {\n      signed_tx_base64: signedTxBase64,\n      wait_until: waitUntil,\n    });\n\n    updateTxHistory({ txId, status: \"Included\", finalState: false });\n    afterTxSent(txId);\n\n    return sendTxRes;\n  } catch (error) {\n    const errorMessage = error instanceof Error ? error.message : \"Unknown error\";\n    updateTxHistory({\n      txId,\n      status: \"Error\",\n      error: tryParseJson(errorMessage) ?? errorMessage,\n      finalState: false,\n    });\n    throw new Error(errorMessage);\n  }\n}\n\nexport interface AccessKeyView {\n  nonce: number;\n  permission: any;\n}\n\n/**\n * Generates a mock transaction ID.\n *\n * This function creates a pseudo-unique transaction ID for testing or\n * non-production use. It combines the current timestamp with a\n * random component for uniqueness.\n *\n * **Note:** This is not cryptographically secure and should not be used\n * for actual transaction processing.\n *\n * @returns {string} A mock transaction ID in the format `tx-{timestamp}-{random}`\n */\nexport function generateTxId(): string {\n  const randomPart = crypto.getRandomValues(new Uint32Array(2)).join(\"\");\n  return `tx-${Date.now()}-${parseInt(randomPart, 10).toString(36)}`;\n}\n\nexport const accountId = () => _state.accountId;\nexport const publicKey = () => _state.publicKey;\n\nexport const config = (newConfig?: Record<string, any>) => {\n  const current = getConfig();\n  if (newConfig) {\n    if (newConfig.networkId && current.networkId !== newConfig.networkId) {\n      setConfig(newConfig.networkId);\n      update({ accountId: null, privateKey: null, lastWalletId: null });\n      lsSet(\"block\", null);\n      resetTxHistory();\n    }\n    setConfig({ ...getConfig(), ...newConfig });\n  }\n  return getConfig();\n};\n\nexport const authStatus = (): string | Record<string, any> => {\n  if (!_state.accountId) {\n    return \"SignedOut\";\n  }\n  return \"SignedIn\";\n};\n\n// this is an intentional stub\n// and it's probably partially done, to help ease future features\n// for now we'll assume each web end user has one keypair in storage\n// for every contract they wish to interact with\n// later, it may be prudent to hold multiple, but until then this function\n// just returns the access key as if it were among others in the array.\n// we're pretending like we really thought about which access key we're returning\n// based on the opts argument. this allows us to fill this logic in later.\nexport const getPublicKeyForContract = (opts?: any) => {\n  return publicKey();\n}\n\n// returns details on the selected:\n// network, wallet, and explorer details as well as\n// sending account, contract, and selected public key\nexport const selected = () => {\n  const network = getConfig().networkId;\n  const nodeUrl = getConfig().nodeUrl;\n  const walletUrl = getConfig().walletUrl;\n  const helperUrl = getConfig().helperUrl;\n  const explorerUrl = getConfig().explorerUrl;\n\n  const account = accountId();\n  const contract = _state.accessKeyContractId;\n  const publicKey = getPublicKeyForContract();\n\n  return {\n    network,\n    nodeUrl,\n    walletUrl,\n    helperUrl,\n    explorerUrl,\n    account,\n    contract,\n    publicKey\n  }\n}\n\nexport const requestSignIn = async ({ contractId }: { contractId: string }) => {\n  const privateKey = privateKeyFromRandom();\n  update({ accessKeyContractId: contractId, accountId: null, privateKey });\n  const pubKey = publicKeyFromPrivate(privateKey);\n\n  const result = await _adapter.signIn({\n    networkId: getConfig().networkId,\n    contractId,\n    publicKey: pubKey,\n  });\n\n  if (result.error) {\n    throw new Error(`Wallet error: ${result.error}`);\n  }\n  if (result.url) {\n    if (typeof window !== \"undefined\") {\n      setTimeout(() => {\n        window.location.href = result.url;\n      }, 100);\n    }\n  } else if (result.accountId) {\n    update({ accountId: result.accountId });\n  }\n};\n\nexport const view = async ({\n                             contractId,\n                             methodName,\n                             args,\n                             argsBase64,\n                             blockId,\n                           }: {\n  contractId: string;\n  methodName: string;\n  args?: any;\n  argsBase64?: string;\n  blockId?: string;\n}) => {\n  const encodedArgs = argsBase64 || (args ? toBase64(JSON.stringify(args)) : \"\");\n  const queryResult = await sendRpc(\n    \"query\",\n    withBlockId(\n      {\n        request_type: \"call_function\",\n        account_id: contractId,\n        method_name: methodName,\n        args_base64: encodedArgs,\n      },\n      blockId\n    )\n  );\n\n  return parseJsonFromBytes(queryResult.result.result);\n};\n\nexport const queryAccount = async ({\n                                accountId,\n                                blockId,\n                              }: {\n  accountId: string;\n  blockId?: string;\n}) => {\n  return sendRpc(\n    \"query\",\n    withBlockId({ request_type: \"view_account\", account_id: accountId }, blockId)\n  );\n};\n\nexport const queryBlock = async ({ blockId }: { blockId?: string }): Promise<BlockView> => {\n  return sendRpc(\"block\", withBlockId({}, blockId));\n};\n\nexport const queryAccessKey = async ({\n                                  accountId,\n                                  publicKey,\n                                  blockId,\n                                }: {\n  accountId: string;\n  publicKey: string;\n  blockId?: string;\n}): Promise<AccessKeyWithError> => {\n  return sendRpc(\n    \"query\",\n    withBlockId(\n      { request_type: \"view_access_key\", account_id: accountId, public_key: publicKey },\n      blockId\n    )\n  );\n};\n\nexport const queryTx = async ({ txHash, accountId }: { txHash: string; accountId: string }) => {\n  return sendRpc(\"tx\", [txHash, accountId]);\n};\n\nexport const localTxHistory = () => {\n  return getTxHistory();\n};\n\nexport const signOut = () => {\n  update({ accountId: null, privateKey: null, contractId: null });\n  setConfig(NETWORKS[DEFAULT_NETWORK_ID]);\n};\n\nexport const sendTx = async ({\n                               receiverId,\n                               actions,\n                               waitUntil,\n                             }: {\n  receiverId: string;\n  actions: any[];\n  waitUntil?: string;\n}) => {\n  const signerId = _state.accountId;\n  if (!signerId) throw new Error(\"Must sign in\");\n\n  const publicKey = _state.publicKey ?? \"\";\n  const privKey = _state.privateKey;\n  // this generates a mock transaction ID so we can keep track of each tx\n  const txId = generateTxId();\n\n  if (!privKey || receiverId !== _state.accessKeyContractId || !canSignWithLAK(actions)) {\n    const jsonTx = { signerId, receiverId, actions };\n    updateTxHistory({ status: \"Pending\", txId, tx: jsonTx, finalState: false });\n\n    const url = new URL(typeof window !== \"undefined\" ? window.location.href : \"\");\n    url.searchParams.set(\"txIds\", txId);\n\n    // preserve existing url params\n    const existingParams = new URLSearchParams(window.location.search);\n    existingParams.forEach((value, key) => {\n      if (!url.searchParams.has(key)) {\n        url.searchParams.set(key, value);\n      }\n    });\n\n    // we're wanting to preserve URL params that we send in\n    // but make sure we're not feeding back error params\n    // from a previous failure\n\n    url.searchParams.delete(\"errorCode\");\n    url.searchParams.delete(\"errorMessage\");\n\n    try {\n      const result: WalletTxResult = await _adapter.sendTransactions({\n        transactions: [jsonTx],\n        callbackUrl: url.toString(),\n      });\n\n      if (result.url) {\n        if (typeof window !== \"undefined\") {\n          setTimeout(() => {\n            window.location.href = result.url!;\n          }, 100);\n        }\n      } else if (result.outcomes?.length) {\n        result.outcomes.forEach((r) =>\n          updateTxHistory({\n            txId,\n            status: \"Executed\",\n            result: r,\n            txHash: r.transaction.hash,\n            finalState: true,\n          })\n        );\n      } else if (result.rejected) {\n        updateTxHistory({ txId, status: \"RejectedByUser\", finalState: true });\n      } else if (result.error) {\n        updateTxHistory({\n          txId,\n          status: \"Error\",\n          error: tryParseJson(result.error),\n          finalState: true,\n        });\n      }\n\n      return result;\n    } catch (err) {\n      console.error('fastnear: error sending tx using adapter:', err)\n      updateTxHistory({\n        txId,\n        status: \"Error\",\n        error: tryParseJson((err as Error).message),\n        finalState: true,\n      });\n\n      return Promise.reject(err);\n    }\n  }\n\n  let nonce = lsGet(\"nonce\") as number | null;\n  if (nonce == null) {\n    const accessKey = await queryAccessKey({ accountId: signerId, publicKey: publicKey });\n    if (accessKey.result.error) {\n      throw new Error(`Access key error: ${accessKey.result.error} when attempting to get nonce for ${signerId} for public key ${publicKey}`);\n    }\n    nonce = accessKey.result.nonce;\n    lsSet(\"nonce\", nonce);\n  }\n\n  let lastKnownBlock = lsGet(\"block\") as LastKnownBlock | null;\n  if (\n    !lastKnownBlock ||\n    parseFloat(lastKnownBlock.header.timestamp_nanosec) / 1e6 + MaxBlockDelayMs < Date.now()\n  ) {\n    const latestBlock = await queryBlock({ blockId: \"final\" });\n    lastKnownBlock = {\n      header: {\n        hash: latestBlock.result.header.hash,\n        timestamp_nanosec: latestBlock.result.header.timestamp_nanosec,\n      },\n    };\n    lsSet(\"block\", lastKnownBlock);\n  }\n\n  nonce += 1;\n  lsSet(\"nonce\", nonce);\n\n  const blockHash = lastKnownBlock.header.hash;\n\n  const plainTransactionObj: PlainTransaction = {\n    signerId,\n    publicKey,\n    nonce,\n    receiverId,\n    blockHash,\n    actions,\n  };\n\n  const txBytes = serializeTransaction(plainTransactionObj);\n  const txHashBytes = sha256(txBytes);\n  const txHash58 = toBase58(txHashBytes);\n\n  const signatureBase58 = signHash(txHashBytes, privKey, { returnBase58: true });\n  const signedTransactionBytes = serializeSignedTransaction(plainTransactionObj, signatureBase58);\n  const signedTxBase64 = bytesToBase64(signedTransactionBytes);\n\n  updateTxHistory({\n    status: \"Pending\",\n    txId,\n    tx: plainTransactionObj,\n    signature: signatureBase58,\n    signedTxBase64,\n    txHash: txHash58,\n    finalState: false,\n  });\n\n  try {\n    return await sendTxToRpc(signedTxBase64, waitUntil, txId);\n  } catch (error) {\n    console.error(\"Error Sending Transaction:\", error, plainTransactionObj, signedTxBase64);\n  }\n};\n\n// exports\nexport const exp = {\n  utils: {}, // we will map this in a moment, giving keys, for IDE hints\n  borsh: reExportAllUtils.exp.borsh,\n  borshSchema: reExportAllUtils.exp.borshSchema.getBorshSchema(),\n};\n\nfor (const key in reExportAllUtils) {\n  exp.utils[key] = reExportAllUtils[key];\n}\n\n// devx\nexport const utils = exp.utils;\n\nexport const state = {}\n\nfor (const key in stateExports) {\n  state[key] = stateExports[key];\n}\n\n// devx\n\nexport const event = state['events'];\ndelete state['events'];\n\n// Wallet redirect handling\ntry {\n  if (typeof window !== \"undefined\") {\n    const url = new URL(window.location.href);\n    const accId = url.searchParams.get(\"account_id\");\n    const pubKey = url.searchParams.get(\"public_key\");\n    const errCode = url.searchParams.get(\"errorCode\");\n    const errMsg = url.searchParams.get(\"errorMessage\");\n    const decodedErrMsg = errMsg ? decodeURIComponent(errMsg) : null;\n\n    const txHashes = url.searchParams.get(\"transactionHashes\");\n    const txIds = url.searchParams.get(\"txIds\");\n\n    if (errCode || errMsg) {\n      console.warn(new Error(`Wallet raises:\\ncode: ${errCode}\\nmessage: ${decodedErrMsg}`));\n    }\n\n    if (accId && pubKey) {\n      if (pubKey === _state.publicKey) {\n        update({ accountId: accId });\n      } else {\n        // it's possible the end user has a URL param that's old. we'll remove the public_key param\n        // if logged out, no need to throw warning\n        if (authStatus() === \"SignedIn\") {\n          console.warn(\"Public key mismatch from wallet redirect\", pubKey, _state.publicKey);\n        }\n        url.searchParams.delete(\"public_key\");\n      }\n    }\n\n    if (txHashes || txIds) {\n      const hashArr = txHashes ? txHashes.split(\",\") : [];\n      const idArr = txIds ? txIds.split(\",\") : [];\n      if (idArr.length > hashArr.length) {\n        idArr.forEach((id) => {\n          updateTxHistory({ txId: id, status: \"RejectedByUser\", finalState: true });\n        });\n      } else if (idArr.length === hashArr.length) {\n        idArr.forEach((id, i) => {\n          updateTxHistory({\n            txId: id,\n            status: \"PendingGotTxHash\",\n            txHash: hashArr[i],\n            finalState: false,\n          });\n          afterTxSent(id);\n        });\n      } else {\n        console.error(new Error(\"Transaction hash mismatch from wallet redirect\"), idArr, hashArr);\n      }\n    }\n\n    // we can consider removing these, but want to be careful because\n    // it can be helpful for a dev to have a URL they can debug with\n    // we won't want to remove information\n\n    // pretty sure txIds can go, especially if you can tell it's been more than 5 minutes or something\n    // public_key sometimes confuses it, so this might only be needed when adding a new access key\n    // and perhaps once we've confirmed that the transaction hashes are getting saved to storage\n    // (not sure about that section of code) then we can get rid of the transactionHashes, too\n\n    url.searchParams.delete(\"txIds\");\n    if (authStatus() === \"SignedOut\") {\n      url.searchParams.delete(\"errorCode\");\n      url.searchParams.delete(\"errorMessage\");\n    }\n    // ^ we've decided these ones make sense to keep\n\n    // I'd like to keep this for posterity. for a bit.\n    // url.searchParams.delete(\"account_id\");\n    // url.searchParams.delete(\"public_key\");\n\n    // url.searchParams.delete(\"all_keys\");\n    // url.searchParams.delete(\"transactionHashes\");\n    // window.history.replaceState({}, \"\", url.toString());\n  }\n} catch (e) {\n  console.error(\"Error handling wallet redirect:\", e);\n}\n\n// action helpers\nexport const actions = {\n  functionCall: ({\n                   methodName,\n                   gas,\n                   deposit,\n                   args,\n                   argsBase64,\n                 }: {\n    methodName: string;\n    gas?: string;\n    deposit?: string;\n    args?: Record<string, any>;\n    argsBase64?: string;\n  }) => ({\n    type: \"FunctionCall\",\n    methodName,\n    args,\n    argsBase64,\n    gas,\n    deposit,\n  }),\n\n  transfer: (yoctoAmount: string) => ({\n    type: \"Transfer\",\n    deposit: yoctoAmount,\n  }),\n\n  stakeNEAR: ({amount, publicKey}: { amount: string; publicKey: string }) => ({\n    type: \"Stake\",\n    stake: amount,\n    publicKey,\n  }),\n\n  addFullAccessKey: ({publicKey}: { publicKey: string }) => ({\n    type: \"AddKey\",\n    publicKey: publicKey,\n    accessKey: {permission: \"FullAccess\"},\n  }),\n\n  addLimitedAccessKey: ({\n                          publicKey,\n                          allowance,\n                          accountId,\n                          methodNames,\n                        }: {\n    publicKey: string;\n    allowance: string;\n    accountId: string;\n    methodNames: string[];\n  }) => ({\n    type: \"AddKey\",\n    publicKey: publicKey,\n    accessKey: {\n      permission: \"FunctionCall\",\n      allowance,\n      receiverId: accountId,\n      methodNames,\n    },\n  }),\n\n  deleteKey: ({publicKey}: { publicKey: string }) => ({\n    type: \"DeleteKey\",\n    publicKey,\n  }),\n\n  deleteAccount: ({beneficiaryId}: { beneficiaryId: string }) => ({\n    type: \"DeleteAccount\",\n    beneficiaryId,\n  }),\n\n  createAccount: () => ({\n    type: \"CreateAccount\",\n  }),\n\n  deployContract: ({codeBase64}: { codeBase64: string }) => ({\n    type: \"DeployContract\",\n    codeBase64,\n  }),\n};\n"],"mappings":"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","names":["import_state","Big","config","publicKey","accountId","actions"]}