UNPKG

@modern-js/server-core

Version:

A Progressive React Framework for modern web development.

93 lines (92 loc) 3.25 kB
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator"; import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator"; import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants"; import { sortRoutes } from "../utils"; function injectRoute(route) { return function() { var _ref = _async_to_generator(function(c, next) { return _ts_generator(this, function(_state) { switch (_state.label) { case 0: if (route && !c.get("route")) { c.set("route", route); } return [ 4, next() ]; case 1: _state.sent(); return [ 2 ]; } }); }); return function(c, next) { return _ref.apply(this, arguments); }; }(); } function getPageRoutes(routes) { return routes.filter(function(route) { return route.entryName; }).sort(sortRoutes); } var injectRoutePlugin = function() { return { name: "@modern-js/plugin-inject-route", setup: function setup(api) { return { prepare: function prepare() { return _async_to_generator(function() { var _api_useAppContext, middlewares, routes, pageRoutes, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, originUrlPath, _route_entryName, entryName, urlPath; return _ts_generator(this, function(_state) { _api_useAppContext = api.useAppContext(), middlewares = _api_useAppContext.middlewares, routes = _api_useAppContext.routes; if (!routes) { return [ 2 ]; } pageRoutes = getPageRoutes(routes); _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (_iterator = pageRoutes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { route = _step.value; originUrlPath = route.urlPath, _route_entryName = route.entryName, entryName = _route_entryName === void 0 ? MAIN_ENTRY_NAME : _route_entryName; urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*"); middlewares.push({ name: "inject-route-info", path: urlPath, handler: injectRoute({ entryName }) }); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return [ 2 ]; }); })(); } }; } }; }; export { injectRoutePlugin };