filecoin-pin
Version:
Bridge IPFS content to Filecoin Onchain Cloud using familiar tools
81 lines • 3.26 kB
JavaScript
/**
* CLI Authentication Helpers
*
* Shared utilities for parsing authentication options from CLI commands
* and preparing them for use with the Synapse SDK.
*/
import { TELEMETRY_CLI_APP_NAME } from '../common/constants.js';
import { getRpcUrl } from '../common/get-rpc-url.js';
import { initializeSynapse } from '../core/synapse/index.js';
import { createLogger } from '../logger.js';
/**
* Parse CLI authentication options into SynapseSetupConfig
*
* This function handles reading from CLI options and environment variables,
* and returns a config ready for initializeSynapse().
*
* Note: Validation is performed by initializeSynapse() via validateAuthConfig()
*
* @param options - CLI authentication options
* @returns Synapse setup config (validation happens in initializeSynapse)
*/
export function parseCLIAuth(options) {
// Read from CLI options or environment variables
const privateKey = options.privateKey || process.env.PRIVATE_KEY;
const walletAddress = options.walletAddress || process.env.WALLET_ADDRESS;
const sessionKey = options.sessionKey || process.env.SESSION_KEY;
const warmStorageAddress = options.warmStorageAddress || process.env.WARM_STORAGE_ADDRESS;
const rpcUrl = getRpcUrl(options);
// Build config - only include defined values, validation happens in initializeSynapse()
const config = {};
if (privateKey)
config.privateKey = privateKey;
if (walletAddress)
config.walletAddress = walletAddress;
if (sessionKey)
config.sessionKey = sessionKey;
if (rpcUrl)
config.rpcUrl = rpcUrl;
if (warmStorageAddress)
config.warmStorageAddress = warmStorageAddress;
return config;
}
/**
* Parse provider selection from CLI options and environment variables
*
* Reads provider address and ID from CLI options or environment variables,
* parses and validates the provider ID as a number.
*
* @param options - CLI authentication options (may contain provider fields)
* @returns Provider selection options ready for createStorageContext()
*/
export function parseProviderOptions(options) {
// Read from CLI options or environment variables
const providerAddress = (options?.providerAddress || process.env.PROVIDER_ADDRESS)?.trim();
const providerIdRaw = (options?.providerId || process.env.PROVIDER_ID)?.trim();
// Parse provider ID as number if present and non-empty
const providerId = providerIdRaw != null && providerIdRaw !== '' ? Number(providerIdRaw) : undefined;
// Build result with only defined values
const result = {};
if (providerAddress) {
result.providerAddress = providerAddress;
}
if (providerId != null) {
result.providerId = providerId;
}
return result;
}
/**
* Get a logger instance for use in CLI commands
*
* @returns Logger configured for CLI use
*/
export function getCLILogger() {
return createLogger({ logLevel: process.env.LOG_LEVEL });
}
export async function getCliSynapse(options) {
const authConfig = parseCLIAuth(options);
const logger = getCLILogger();
return await initializeSynapse({ ...authConfig, telemetry: { sentrySetTags: { appName: TELEMETRY_CLI_APP_NAME } } }, logger);
}
//# sourceMappingURL=cli-auth.js.map