UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

85 lines (83 loc) • 2.87 kB
const require_auth_session = require('./auth-session.cjs'); const require_auth_login = require('./auth-login.cjs'); const require_near_cli = require('./near-cli.cjs'); let near_kit = require("near-kit"); //#region src/delegate-signer.ts function relayErrorMessage(message) { return message.replace(/\n/g, " "); } async function submitRegistryWriteDelegated(opts) { const delegate = await new near_kit.Near({ network: opts.network, defaultSignerId: opts.account, privateKey: assertPrivateKey(opts.delegatePrivateKey) }).transaction(opts.account).functionCall(opts.contract, "__fastdata_kv", opts.args, { gas: "300 Tgas", attachedDeposit: "0 yocto" }).delegate({ receiverId: opts.contract, blockHeightOffset: 200 }); const response = await fetch(opts.relayEndpoint, { method: "POST", headers: { "x-api-key": opts.apiKey, "content-type": "application/json" }, body: JSON.stringify({ payload: delegate.payload }) }); if (!response.ok) { let detail = `Relay rejected the transaction (HTTP ${response.status})`; try { const body = await response.json(); const relayMessage = body.message ?? body.error; if (relayMessage) detail = `${detail}: ${relayErrorMessage(relayMessage)}`; } catch {} throw new Error(detail); } return { success: true, txHash: (await response.json()).txHash }; } function assertPrivateKey(key) { if (!(0, near_kit.isPrivateKey)(key)) throw new Error("Invalid delegate key format (expected ed25519:…)"); return key; } async function ensureDelegateKey(opts) { const existing = require_auth_session.readSessionHandle(opts.configDir)?.delegateKey; if (existing && existing.accountId === opts.account && existing.contract === opts.contract && existing.network === opts.network) return existing; const keyPair = require_near_cli.generateNearKeyPair(); const login = await require_auth_login.startDeviceLogin({ siteUrl: opts.siteUrl, delegate: { pubKey: keyPair.publicKey, contract: opts.contract, network: opts.network }, account: opts.account }); console.log(` One-time code: ${login.userCode}`); await require_auth_login.openInBrowser(login.verificationUrl).catch((error) => { console.log(` ⚠ ${error.message}`); }); console.log(` Waiting for delegate-key approval at ${login.verificationUrl}…`); await login.waitForApproval(); const record = { publicKey: keyPair.publicKey, privateKey: keyPair.privateKey, accountId: opts.account, network: opts.network, contract: opts.contract, mintedAt: (/* @__PURE__ */ new Date()).toISOString() }; require_auth_session.updateSessionHandle(opts.configDir, (current) => ({ ...current, delegateKey: record })); return record; } //#endregion exports.ensureDelegateKey = ensureDelegateKey; exports.submitRegistryWriteDelegated = submitRegistryWriteDelegated; //# sourceMappingURL=delegate-signer.cjs.map