UNPKG

@raiden_network/raiden-cli

Version:

Raiden Light Client standalone app with a REST API via HTTP

62 lines (61 loc) 2.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeApp = void 0; /* eslint-disable import/no-named-as-default-member */ const cors_1 = __importDefault(require("cors")); const ethers_1 = require("ethers"); const express_1 = __importDefault(require("express")); const http_errors_1 = __importDefault(require("http-errors")); const morgan_1 = __importDefault(require("morgan")); const path_1 = __importDefault(require("path")); const api_v1_1 = require("./routes/api.v1"); const { fetchJson } = ethers_1.utils; function notFoundHandler(_request, _response, next) { next((0, http_errors_1.default)(404, 'Undefined resource')); } function internalErrorHandler(error, _request, _response, next) { next((0, http_errors_1.default)(500, error.message)); } const apiEndpoint = '/api/v1'; const rpcEndpoint = '/rpc'; const uiEndpoint = '/ui'; /** * Create an app from the Cli * * @param this - Cli object * @param corsOrigin - Which corsOrigin to accept, if any * @param webUi - Whether to enable webUI (needs `yarn build:webui` first) * @returns Express app */ function makeApp(corsOrigin, webUi) { const app = (0, express_1.default)(); app.use(express_1.default.json()); if (corsOrigin) app.use((0, cors_1.default)({ origin: corsOrigin })); const loggerMiddleware = (0, morgan_1.default)(':remote-addr - :remote-user ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'); app.use(loggerMiddleware); app.use(apiEndpoint, api_v1_1.makeApiV1Router.call(this)); if (webUi) { this.log.info(`Serving Raiden webUI at ${uiEndpoint}`); // proxy endpoint to provider, passthrough version of JsonRpcProvider.send app.post(rpcEndpoint, (request, response) => fetchJson(this.raiden.provider.connection, JSON.stringify(request.body)).then((...args) => response.send(...args), (err) => response.status(400).send(err))); app.get(`${uiEndpoint}/assets/config/config*.json`, (_, response) => response.json({ raiden: apiEndpoint, web3: rpcEndpoint, reveal_timeout: this.raiden.config.revealTimeout, settle_timeout: this.raiden.settleTimeout, environment_type: 'development', })); app.use(uiEndpoint, express_1.default.static(path_1.default.join(__dirname, 'ui'))); // SPA fallback app.get(`${uiEndpoint}/*`, (_, response) => response.sendFile(path_1.default.join(__dirname, 'ui', 'index.html'))); app.get('/', (_, response) => response.redirect(301, uiEndpoint)); } app.use(notFoundHandler); app.use(internalErrorHandler.bind(this)); return app; } exports.makeApp = makeApp;