@ar.io/sdk
Version:
[](https://codecov.io/gh/ar-io/ar-io-sdk)
107 lines (106 loc) • 5 kB
JavaScript
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,
};
}