Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | const express = require('express'); const { createHttpTerminator } = require('http-terminator'); const { OPTIONS } = require('./global'); const { logger } = require('./logger'); const { setupDocs } = require('./apidocBuild'); const { buildRequestHeaders, buildResponse } = require('./buildApiResponse'); const CACHE = { app: null, httpTerminator: null }; /** * Build api responses * * @param {Array} apiJson * @param {object} options * @param {number} options.port * @returns {*} */ const setupResponse = (apiJson = [], { port } = OPTIONS) => { const { routesLoaded, appResponses } = buildResponse(apiJson); let httpTerminator = null; appResponses.forEach(response => { CACHE.app[response.type](response.url, response.callback); }); Iif (routesLoaded) { const server = CACHE.app.listen(port, () => logger.info(`listening\t:${port}`)); httpTerminator = createHttpTerminator({ server }); } else { logger.info('waiting'); } return httpTerminator; }; /** * ApiDocMock * * @param {object} options * @param {number} options.port * @param {string|string[]} options.watchPath * @param {string} options.docsPath * @returns {*} */ const apiDocMock = async ({ port, watchPath, docsPath } = OPTIONS) => { const apiJson = setupDocs(); let httpTerminator = null; Iif (apiJson.length) { if (CACHE?.httpTerminator?.terminate) { await CACHE.httpTerminator.terminate(); } CACHE.app = express(); CACHE.app.use(`/docs`, express.static(docsPath)); CACHE.app.use(buildRequestHeaders); CACHE.httpTerminator = httpTerminator = setupResponse(apiJson); } Eif (httpTerminator === null) { logger.error(`Error, confirm settings:\nport=${port}\nwatch=${watchPath}\ndocs=${docsPath}`); throw new Error('Server failed to load'); } return httpTerminator; }; module.exports = { apiDocMock, setupDocs, setupResponse, OPTIONS }; |