UNPKG

8.87 kBSource Map (JSON)View Raw
1{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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","sourcesContent":["import reduct, { Injector } from 'reduct'\nimport { partial } from 'lodash'\nimport { create as createLogger } from './common/log'\nconst log = createLogger('app')\n\nimport Config from './services/config'\nimport RouteBuilder from './services/route-builder'\nimport RouteBroadcaster from './services/route-broadcaster'\nimport Accounts from './services/accounts'\nimport RateBackend from './services/rate-backend'\nimport Store from './services/store'\nimport MiddlewareManager from './services/middleware-manager'\nimport AdminApi from './services/admin-api'\nimport * as Prometheus from 'prom-client'\n\nconst version = require('../package.json').version\n\nfunction listen (\n config: Config,\n accounts: Accounts,\n backend: RateBackend,\n store: Store,\n routeBuilder: RouteBuilder,\n routeBroadcaster: RouteBroadcaster,\n middlewareManager: MiddlewareManager,\n adminApi: AdminApi\n) {\n // Start a coroutine that connects to the backend and\n // subscribes to all the accounts in the background\n return (async function () {\n adminApi.listen()\n\n try {\n await backend.connect()\n } catch (error) {\n log.error(error)\n process.exit(1)\n }\n\n await middlewareManager.setup()\n\n // If we have no configured ILP address, try to get one via ILDCP\n await accounts.loadIlpAddress()\n\n if (config.routeBroadcastEnabled) {\n routeBroadcaster.start()\n }\n\n // Connect other plugins, give up after initialConnectTimeout\n await new Promise((resolve, reject) => {\n const connectTimeout = setTimeout(() => {\n log.warn('one or more accounts failed to connect within the time limit, continuing anyway.')\n resolve()\n }, config.initialConnectTimeout)\n accounts.connect({ timeout: config.initialConnectTimeout })\n .then(() => {\n clearTimeout(connectTimeout)\n resolve()\n }, reject)\n })\n\n await middlewareManager.startup()\n\n if (config.collectDefaultMetrics) {\n Prometheus.collectDefaultMetrics()\n }\n\n log.info('connector ready (republic attitude). address=%s version=%s', accounts.getOwnAddress(), version)\n })().catch((err) => log.error(err))\n}\n\nasync function addPlugin (\n config: Config,\n accounts: Accounts,\n backend: RateBackend,\n routeBroadcaster: RouteBroadcaster,\n middlewareManager: MiddlewareManager,\n\n id: string,\n options: any\n) {\n accounts.add(id, options)\n const plugin = accounts.getPlugin(id)\n await middlewareManager.addPlugin(id, plugin)\n\n await plugin.connect({ timeout: Infinity })\n routeBroadcaster.track(id)\n routeBroadcaster.reloadLocalRoutes()\n}\n\nasync function removePlugin (\n config: Config,\n accounts: Accounts,\n backend: RateBackend,\n routeBroadcaster: RouteBroadcaster,\n middlewareManager: MiddlewareManager,\n\n id: string\n) {\n const plugin = accounts.getPlugin(id)\n await middlewareManager.removePlugin(id, plugin)\n await plugin.disconnect()\n routeBroadcaster.untrack(id)\n accounts.remove(id)\n routeBroadcaster.reloadLocalRoutes()\n}\n\nfunction getPlugin (\n accounts: Accounts,\n\n id: string\n) {\n return accounts.getPlugin(id)\n}\n\nfunction shutdown (\n accounts: Accounts,\n routeBroadcaster: RouteBroadcaster\n) {\n routeBroadcaster.stop()\n return accounts.disconnect()\n}\n\nexport default function createApp (opts?: object, container?: Injector) {\n const deps = container || reduct()\n\n const config = deps(Config)\n\n try {\n if (opts) {\n config.loadFromOpts(opts)\n } else {\n config.loadFromEnv()\n }\n } catch (err) {\n if (err.name === 'InvalidJsonBodyError') {\n log.warn('config validation error.')\n err.debugPrint(log.warn.bind(log))\n log.error('invalid configuration, shutting down.')\n throw new Error('failed to initialize due to invalid configuration.')\n }\n\n throw err\n }\n\n const accounts = deps(Accounts)\n const routeBuilder = deps(RouteBuilder)\n const routeBroadcaster = deps(RouteBroadcaster)\n const backend = deps(RateBackend)\n const store = deps(Store)\n const middlewareManager = deps(MiddlewareManager)\n const adminApi = deps(AdminApi)\n\n const credentials = config.accounts\n for (let id of Object.keys(credentials)) {\n accounts.add(id, credentials[id])\n }\n\n return {\n config,\n listen: partial(listen, config, accounts, backend, store, routeBuilder, routeBroadcaster, middlewareManager, adminApi),\n addPlugin: partial(addPlugin, config, accounts, backend, routeBroadcaster, middlewareManager),\n removePlugin: partial(removePlugin, config, accounts, backend, routeBroadcaster, middlewareManager),\n getPlugin: partial(getPlugin, accounts),\n shutdown: partial(shutdown, accounts, routeBroadcaster)\n }\n}\n"]}
\No newline at end of file