UNPKG

@tdb/web

Version:

Common condiguration for serving a web-site and testing web-based UI components.

95 lines (73 loc) 2.56 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.pageNotFoundError = pageNotFoundError; exports.normalizePagePath = normalizePagePath; exports.getPagePath = getPagePath; exports.default = requirePage; var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator")); var _path = require("path"); var _constants = require("../lib/constants"); function pageNotFoundError(page) { var err = new Error("Cannot find module for page: ".concat(page)); err.code = 'ENOENT'; return err; } function normalizePagePath(page) { // If the page is `/` we need to append `/index`, otherwise the returned directory root will be bundles instead of pages if (page === '/') { page = '/index'; } // Resolve on anything that doesn't start with `/` if (page[0] !== '/') { page = "/".concat(page); } // Throw when using ../ etc in the pathname var resolvedPage = _path.posix.normalize(page); if (page !== resolvedPage) { throw new Error('Requested and resolved page mismatch'); } return page; } function getPagePath(page, _ref) { var distDir = _ref.distDir; var serverBuildPath = (0, _path.join)(distDir, _constants.SERVER_DIRECTORY); var pagesManifest = require((0, _path.join)(serverBuildPath, _constants.PAGES_MANIFEST)); try { page = normalizePagePath(page); } catch (err) { console.error(err); throw pageNotFoundError(page); } if (!pagesManifest[page]) { throw pageNotFoundError(page); } return (0, _path.join)(serverBuildPath, pagesManifest[page]); } function requirePage(_x, _x2) { return _requirePage.apply(this, arguments); } function _requirePage() { _requirePage = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee(page, _ref2) { var distDir, pagePath; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: distDir = _ref2.distDir; pagePath = getPagePath(page, { distDir: distDir }); return _context.abrupt("return", require(pagePath)); case 3: case "end": return _context.stop(); } } }, _callee, this); })); return _requirePage.apply(this, arguments); }