@acurast/cli
Version:
A cli to interact with the Acurast Cloud.
151 lines • 5.83 kB
JavaScript
import 'dotenv/config';
const RPC_CANARY = 'wss://canarynet-ws-1.acurast-h-server-2.papers.tech';
const RPC_MAINNET = 'wss://archive.mainnet.acurast.com';
const RPC_DEVNET = 'wss://acurast-devnet-ws.prod.gke.papers.tech';
const MATCHER_CANARY = 'https://matcher.canary.acurast.com';
const MATCHER_MAINNET = 'https://matcher.mainnet.acurast.com';
const MATCHER_DEVNET = ''; // No public matcher on devnet by default
const INDEXER_CANARY = 'https://dev.indexer.canary.acurast.com/api/v1/rpc';
const INDEXER_CANARY_API_KEY = 'OXuwySHqNSlwwa_qqB-cBw';
const INDEXER_MAINNET = 'https://dev.indexer.mainnet.acurast.com/api/v1/rpc';
const INDEXER_MAINNET_API_KEY = 'HbLxqSJoPTnzwa_rkF-tYv';
const INDEXER_DEVNET = ''; // No public indexer on devnet by default
const INDEXER_DEVNET_API_KEY = '';
const IPFS_PROXY = 'https://ipfs-proxy.acurast.prod.gke.papers.tech';
const DEVTOOLS_URL = 'https://devtools.acurast.com';
const DEVTOOLS_API_URL = 'https://api.devtools.acurast.com';
const HUB_URL = 'https://hub.acurast.com';
export const CLI_NETWORKS = [
'mainnet',
'canary',
'devnet',
];
const defaultValues = {
ACURAST_MNEMONIC: undefined,
ACURAST_IPFS_URL: IPFS_PROXY,
ACURAST_IPFS_API_KEY: '', // Default IPFS Proxy needs no API key
ACURAST_RPC: RPC_MAINNET, // deprecated alias for ACURAST_MAINNET_RPC
ACURAST_MAINNET_RPC: RPC_MAINNET,
ACURAST_CANARY_RPC: RPC_CANARY,
ACURAST_DEVNET_RPC: RPC_DEVNET,
ACURAST_MAINNET_MATCHER: MATCHER_MAINNET,
ACURAST_CANARY_MATCHER: MATCHER_CANARY,
ACURAST_DEVNET_MATCHER: MATCHER_DEVNET,
ACURAST_MAINNET_INDEXER: INDEXER_MAINNET,
ACURAST_MAINNET_INDEXER_API_KEY: INDEXER_MAINNET_API_KEY,
ACURAST_CANARY_INDEXER: INDEXER_CANARY,
ACURAST_CANARY_INDEXER_API_KEY: INDEXER_CANARY_API_KEY,
ACURAST_DEVNET_INDEXER: INDEXER_DEVNET,
ACURAST_DEVNET_INDEXER_API_KEY: INDEXER_DEVNET_API_KEY,
ACURAST_DEVTOOLS_URL: DEVTOOLS_URL,
ACURAST_DEVTOOLS_API_URL: DEVTOOLS_API_URL,
ACURAST_HUB_URL: HUB_URL,
// 'local' (mnemonic) | 'remote' (browser wallet). Empty → auto-detect.
ACURAST_SIGNING_MODE: '',
DEBUG: 'false',
};
export const getEnv = (key) => {
const value = process.env[key];
if (!value) {
const defaultValue = defaultValues[key];
if (defaultValue === undefined) {
throw new Error(`"${key}" is not defined in the environment.`);
}
return defaultValue;
}
return value;
};
export const validateDeployEnvVars = (options = {}) => {
// In remote-signing mode the mnemonic is not needed — the browser wallet signs.
if (options.requireMnemonic ?? true) {
getEnv('ACURAST_MNEMONIC');
}
getEnv('ACURAST_IPFS_URL');
getEnv('ACURAST_IPFS_API_KEY');
};
export const getProjectEnv = (key) => {
if (Object.keys(defaultValues).includes(key)) {
throw new Error(`Key ${key} is a CLI env variable and cannot be used as a project environment variable.`);
}
const value = process.env[key];
if (!value) {
throw new Error(`"${key}" is not defined in the environment.`);
}
return value;
};
export const getProjectEnvVars = (config) => {
return (config.includeEnvironmentVariables?.map((key) => ({
key,
value: getProjectEnv(key),
})) || []);
};
export const getRpcForNetwork = (network) => {
switch (network) {
case 'mainnet':
// Honour the legacy ACURAST_RPC override if present.
return process.env.ACURAST_MAINNET_RPC ?? getEnv('ACURAST_RPC');
case 'canary':
return getEnv('ACURAST_CANARY_RPC');
case 'devnet': {
const rpc = getEnv('ACURAST_DEVNET_RPC');
if (!rpc) {
throw new Error('Devnet RPC is not configured. Set ACURAST_DEVNET_RPC in your environment.');
}
return rpc;
}
}
};
export const getSymbolForNetwork = (network) => {
switch (network) {
case 'mainnet':
return 'ACU';
case 'canary':
return 'cACU';
case 'devnet':
return 'dACU';
}
};
export const getMatcherUrlForNetwork = (network) => {
switch (network) {
case 'mainnet':
return getEnv('ACURAST_MAINNET_MATCHER') || undefined;
case 'canary':
return getEnv('ACURAST_CANARY_MATCHER') || undefined;
case 'devnet':
return process.env.ACURAST_DEVNET_MATCHER || undefined;
}
};
export const getIndexerConfigForNetwork = (network) => {
switch (network) {
case 'mainnet':
return {
url: getEnv('ACURAST_MAINNET_INDEXER'),
apiKey: getEnv('ACURAST_MAINNET_INDEXER_API_KEY'),
};
case 'canary':
return {
url: getEnv('ACURAST_CANARY_INDEXER'),
apiKey: getEnv('ACURAST_CANARY_INDEXER_API_KEY'),
};
case 'devnet': {
const url = process.env.ACURAST_DEVNET_INDEXER || '';
if (!url) {
throw new Error('Devnet indexer is not configured. Set ACURAST_DEVNET_INDEXER (and optionally ACURAST_DEVNET_INDEXER_API_KEY) in your environment.');
}
return {
url,
apiKey: process.env.ACURAST_DEVNET_INDEXER_API_KEY ?? '',
};
}
}
};
/** IPFS config for `@acurast/sdk/ipfs` `uploadScript` calls. */
export const getIpfsConfig = () => ({
endpoint: getEnv('ACURAST_IPFS_URL'),
apiKey: getEnv('ACURAST_IPFS_API_KEY'),
});
/** Base URL of the Acurast Hub (used by `login` and remote signing). */
export const getHubUrl = () => getEnv('ACURAST_HUB_URL').replace(/\/$/, '');
// Default RPC for backwards compatibility (mainnet)
export const RPC = getEnv('ACURAST_RPC');
//# sourceMappingURL=config.js.map