UNPKG

filecoin-pin

Version:

Bridge IPFS content to Filecoin Onchain Cloud using familiar tools

81 lines 3.26 kB
/** * 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