UNPKG

@ar.io/sdk

Version:

[![codecov](https://codecov.io/gh/ar-io/ar-io-sdk/graph/badge.svg?token=7dXKcT7dJy)](https://codecov.io/gh/ar-io/ar-io-sdk)

107 lines (106 loc) 5 kB
import { antRecordMetadataFromOptions, arioProcessIdFromOptions, assertConfirmationPrompt, booleanFromOptions, customTagsFromOptions, defaultTtlSecondsCLI, readARIOFromOptions, requiredStringFromOptions, stringArrayFromOptions, writeANTFromOptions, } from '../utils.js'; /** @deprecated -- use set-ant-base-name and set-ant-undername */ export async function setAntRecordCLICommand(o) { const ttlSeconds = +(o.ttlSeconds ?? defaultTtlSecondsCLI); const undername = requiredStringFromOptions(o, 'undername'); const transactionId = requiredStringFromOptions(o, 'transactionId'); const writeAnt = writeANTFromOptions(o); const recordParams = { undername, transactionId, ttlSeconds, ...antRecordMetadataFromOptions(o), }; if (!o.skipConfirmation) { await assertConfirmationPrompt(`Are you sure you want to set this record on the ANT process ${writeAnt.processId}?\n${JSON.stringify(recordParams, null, 2)}`, o); } return writeANTFromOptions(o).setRecord(recordParams, customTagsFromOptions(o)); } export async function setAntBaseNameCLICommand(o) { const ttlSeconds = +(o.ttlSeconds ?? defaultTtlSecondsCLI); const transactionId = requiredStringFromOptions(o, 'transactionId'); const params = { transactionId, ttlSeconds, ...antRecordMetadataFromOptions(o), }; const writeAnt = writeANTFromOptions(o); if (!o.skipConfirmation) { await assertConfirmationPrompt(`Are you sure you want to set this base name on the ANT process ${writeAnt.processId}?\n${JSON.stringify(params, null, 2)}`, o); } return writeANTFromOptions(o).setBaseNameRecord(params, customTagsFromOptions(o)); } export async function setAntUndernameCLICommand(o) { const ttlSeconds = +(o.ttlSeconds ?? defaultTtlSecondsCLI); const undername = requiredStringFromOptions(o, 'undername'); const transactionId = requiredStringFromOptions(o, 'transactionId'); const params = { undername, transactionId, ttlSeconds, ...antRecordMetadataFromOptions(o), }; const writeAnt = writeANTFromOptions(o); if (!o.skipConfirmation) { await assertConfirmationPrompt(`Are you sure you want to set this undername on the ANT process ${writeAnt.processId}?\n${JSON.stringify(params, null, 2)}`, o); } return writeANTFromOptions(o).setUndernameRecord(params, customTagsFromOptions(o)); } export async function transferRecordOwnershipCLICommand(o) { const undername = requiredStringFromOptions(o, 'undername'); const recipient = requiredStringFromOptions(o, 'recipient'); const writeAnt = writeANTFromOptions(o); if (!o.skipConfirmation) { await assertConfirmationPrompt(`Are you sure you want to transfer ownership of "${undername}" to "${recipient}" on ANT process ${writeAnt.processId}?\n${JSON.stringify({ undername, recipient }, null, 2)}`, o); } return writeANTFromOptions(o).transferRecord({ undername, recipient }, customTagsFromOptions(o)); } export async function upgradeAntCLICommand(o) { const writeAnt = writeANTFromOptions(o); const arioProcessId = arioProcessIdFromOptions(o); const ario = readARIOFromOptions(o); const reassignAffiliatedNames = booleanFromOptions(o, 'reassignAffiliatedNames'); const names = stringArrayFromOptions(o, 'names') || []; if (reassignAffiliatedNames) { // Fetch all ArNS records that point to this ANT process const allRecords = await ario.getArNSRecords({ filters: { processId: writeAnt.processId, }, }); // Filter records that belong to this ANT const affiliatedNames = allRecords.items.map((record) => record.name); names.push(...affiliatedNames); } if (names.length === 0) { throw new Error('No names to reassign'); } if (!o.skipConfirmation) { await assertConfirmationPrompt(`Upgrade all names affiliated with this ANT on ARIO process?\n` + `ARIO Process ID: ${arioProcessId}\n` + `ANT Process ID: ${writeAnt.processId}\n` + `Names that will be reassigned (${names.length}): ${names.join(', ')}`, o); } const result = reassignAffiliatedNames ? await writeANTFromOptions(o).upgrade({ reassignAffiliatedNames, arioProcessId, }) : await writeANTFromOptions(o).upgrade({ names, arioProcessId, }); // Serialize error objects for JSON compatibility const serializedFailedReassignedNames = {}; for (const [name, failure] of Object.entries(result.failedReassignedNames)) { serializedFailedReassignedNames[name] = { id: failure.id, error: failure.error.message, }; } return { forkedProcessId: result.forkedProcessId, reassignedNames: result.reassignedNames, failedReassignedNames: serializedFailedReassignedNames, }; }