UNPKG

filecoin-pin

Version:

IPFS Pinning Service API implementation that pins to Filecoin's PDP service

48 lines (39 loc) 1.46 kB
import { createConfig } from './config.js' import { createLogger } from './logger.js' import { createFilecoinPinningServer } from './filecoin-pinning-server.js' export interface ServiceInfo { service: string version: string } export async function daemon (serviceInfo: ServiceInfo): Promise<void> { const config = createConfig() const logger = createLogger(config) logger.info(`Starting ${serviceInfo.service} v${serviceInfo.version} daemon...`) try { const { server, pinStore } = await createFilecoinPinningServer(config, logger, serviceInfo) process.on('SIGINT', () => { void (async () => { logger.info('Received SIGINT, shutting down gracefully...') await server.close() await pinStore.stop() process.exit(0) })() }) process.on('SIGTERM', () => { void (async () => { logger.info('Received SIGTERM, shutting down gracefully...') await server.close() await pinStore.stop() process.exit(0) })() }) // Get the actual port the server is listening on const address = server.server.address() const port = typeof address === 'string' ? address : address?.port logger.info({ port }, `${serviceInfo.service} daemon started successfully`) logger.info(`Pinning service listening on http://${config.host}:${String(port)}`) } catch (error) { logger.error({ error }, 'Failed to start daemon') process.exit(1) } }