UNPKG

btc-rpc-explorer

Version:

Open-source, self-hosted Bitcoin explorer

36 lines (30 loc) 1.67 kB
const buildNormalizingRegexes = (baseUrl) => { return [ { regex: new RegExp(`^${baseUrl}$`, "i"), action:"index" }, { regex: new RegExp(`^${baseUrl}block-height/.*`, "i"), action: "block-height" }, { regex: new RegExp(`^${baseUrl}block/.*`, "i"), action: "block-hash" }, { regex: new RegExp(`^${baseUrl}block-analysis/.*`, "i"), action: "block-analysis" }, { regex: new RegExp(`^${baseUrl}tx/.*`, "i"), action: "transaction" }, { regex: new RegExp(`^${baseUrl}address/.*`, "i"), action: "address" }, { regex: new RegExp(`^${baseUrl}api/blocks-by-height/.*`, "i"), action: "api.blocks-by-height" }, { regex: new RegExp(`^${baseUrl}api/block-headers-by-height/.*`, "i"), action: "api.block-headers-by-height" }, { regex: new RegExp(`^${baseUrl}api/block-stats-by-height/.*`, "i"), action: "api.block-stats-by-height" }, { regex: new RegExp(`^${baseUrl}api/mempool-txs/.*`, "i"), action: "api.mempool-txs" }, { regex: new RegExp(`^${baseUrl}api/raw-tx-with-inputs/.*`, "i"), action: "api.raw-tx-with-inputs" }, { regex: new RegExp(`^${baseUrl}api/block-tx-summaries/.*`, "i"), action: "api.block-tx-summaries" }, { regex: new RegExp(`^${baseUrl}api/utils/.*`, "i"), action: "api.utils-func" }, { regex: new RegExp(`^${baseUrl}admin/dashboard`, "i"), action: "admin.dashboard" }, ]; } module.exports = (baseUrl, action) => { const normalizingRegexes = buildNormalizingRegexes(baseUrl); for (let i = 0; i < normalizingRegexes.length; i++) { if (normalizingRegexes[i].regex.test(action)) { return normalizingRegexes[i].action; } } if (action.startsWith(baseUrl)) { return action.substring(baseUrl.length); } return action; };