one
Version:
One is a new React Framework that makes Vite serve both native and web.
903 lines (901 loc) • 32.6 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
value: true
}), mod);
var getRoutes_exports = {};
__export(getRoutes_exports, {
extrapolateGroups: () => extrapolateGroups,
generateDynamic: () => generateDynamic,
getIgnoreList: () => getIgnoreList,
getRoutes: () => getRoutes
});
module.exports = __toCommonJS(getRoutes_exports);
var import_config = require("../config.native.js");
var import_getPageExport = require("../utils/getPageExport.native.js");
var import_matchers = require("./matchers.native.js");
var validPlatforms = /* @__PURE__ */new Set(["android", "ios", "native", "web"]);
function getRoutes(contextModule) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var directoryTree = getDirectoryTree(contextModule, options);
if (!directoryTree) {
return null;
}
var rootNode = flattenDirectoryTreeToRoutes(directoryTree, options);
if (!options.ignoreEntryPoints) {
crawlAndAppendInitialRoutesAndEntryFiles(rootNode, options);
}
return rootNode;
}
function getDirectoryTree(contextModule, options) {
var importMode = options.importMode || process.env.One_ROUTER_IMPORT_MODE;
var ignoreList = [/^\.\/\+html\.[tj]sx?$/,
// Ignore the top level ./+html file
/\.d\.ts$/];
if (options.ignore) {
ignoreList.push(...options.ignore);
}
if (!options.preserveApiRoutes) {
ignoreList.push(/\+api\.[tj]sx?$/);
}
var rootDirectory = {
files: /* @__PURE__ */new Map(),
subdirectories: /* @__PURE__ */new Map(),
slots: /* @__PURE__ */new Map()
};
var hasRoutes = false;
var isValid = false;
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
var _loop = function () {
var filePath = _step.value;
if (ignoreList.some(function (regex) {
return regex.test(filePath);
})) {
return "continue";
}
isValid = true;
var parentRenderMode = void 0;
var pathParts = filePath.replace(/^\.\//, "").split("/");
var directoryParts = pathParts.slice(0, -1);
var _iteratorNormalCompletion2 = true,
_didIteratorError2 = false,
_iteratorError2 = void 0;
try {
for (var _iterator2 = directoryParts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var part = _step1.value;
var dirRenderMode = (0, import_matchers.matchDirectoryRenderMode)(part);
if (dirRenderMode) {
parentRenderMode = dirRenderMode.renderMode;
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
var meta = getFileMeta(filePath, options, parentRenderMode);
if (meta.specificity < 0) {
return "continue";
}
var type = meta.isLayout ? "layout" : meta.renderMode || (0, import_config.getDefaultRenderMode)();
var layoutRenderMode = meta.isLayout && meta.renderMode && meta.renderMode !== "api" ? meta.renderMode : void 0;
var node = {
type,
// store layout render mode if this is a layout with an explicit mode
...(layoutRenderMode && {
layoutRenderMode
}),
loadRoute() {
if (options.ignoreRequireErrors) {
try {
return contextModule(filePath);
} catch (unused) {
return {};
}
} else {
return contextModule(filePath);
}
},
contextKey: filePath,
route: "",
// This is overwritten during hoisting based upon the _layout
dynamic: null,
children: []
};
if (process.env.NODE_ENV === "development") {
if (node.type !== "api" && importMode === "sync") {
if (!(0, import_getPageExport.getPageExport)(node.loadRoute())) {
return "continue";
}
}
}
var _iteratorNormalCompletion1 = true,
_didIteratorError1 = false,
_iteratorError1 = void 0;
try {
for (var _iterator1 = extrapolateGroups(meta.route)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion1 = (_step2 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
var route = _step2.value;
var subdirectoryParts = route.split("/").slice(0, -1);
var directory = rootDirectory;
var _iteratorNormalCompletion22 = true,
_didIteratorError22 = false,
_iteratorError22 = void 0;
try {
for (var _iterator22 = subdirectoryParts[Symbol.iterator](), _step3; !(_iteratorNormalCompletion22 = (_step3 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) {
var part1 = _step3.value;
var slotName = (0, import_matchers.matchSlotName)(part1);
if (slotName) {
var slotDirectory = directory.slots.get(slotName);
if (!slotDirectory) {
slotDirectory = {
files: /* @__PURE__ */new Map(),
subdirectories: /* @__PURE__ */new Map(),
slots: /* @__PURE__ */new Map()
};
directory.slots.set(slotName, slotDirectory);
}
directory = slotDirectory;
} else {
var _ref;
var dirRenderMode1 = (0, import_matchers.matchDirectoryRenderMode)(part1);
var dirName = (_ref = dirRenderMode1 === null || dirRenderMode1 === void 0 ? void 0 : dirRenderMode1.name) !== null && _ref !== void 0 ? _ref : part1;
var subDirectory = directory.subdirectories.get(dirName);
if (!subDirectory) {
subDirectory = {
files: /* @__PURE__ */new Map(),
subdirectories: /* @__PURE__ */new Map(),
slots: /* @__PURE__ */new Map(),
renderMode: dirRenderMode1 === null || dirRenderMode1 === void 0 ? void 0 : dirRenderMode1.renderMode
};
directory.subdirectories.set(dirName, subDirectory);
}
directory = subDirectory;
}
}
} catch (err) {
_didIteratorError22 = true;
_iteratorError22 = err;
} finally {
try {
if (!_iteratorNormalCompletion22 && _iterator22.return != null) {
_iterator22.return();
}
} finally {
if (_didIteratorError22) {
throw _iteratorError22;
}
}
}
node = {
...node,
route,
slotName: meta.slotName,
intercept: meta.interceptMatch ? {
levels: meta.interceptMatch.levels,
targetPath: meta.interceptMatch.targetPath
} : void 0
};
if (meta.isLayout) {
var _directory, _layout;
(_layout = (_directory = directory).layout) !== null && _layout !== void 0 ? _layout : _directory.layout = [];
var existing = directory.layout[meta.specificity];
if (existing) {
if (process.env.NODE_ENV !== "production") {
throw new Error(`The layouts "${filePath}" and "${existing.contextKey}" conflict on the route "/${route}". Please remove or rename one of these files.`);
}
} else {
node = getLayoutNode(node, options);
directory.layout[meta.specificity] = node;
}
} else if (meta.isMiddleware) {
directory.middleware = node;
} else if (type === "api") {
var fileKey = `${route}+api`;
var nodes = directory.files.get(fileKey);
if (!nodes) {
nodes = [];
directory.files.set(fileKey, nodes);
}
var existing1 = nodes[0];
if (existing1) {
if (process.env.NODE_ENV !== "production") {
throw new Error(`The API route file "${filePath}" and "${existing1.contextKey}" conflict on the route "/${route}". Please remove or rename one of these files.`);
}
} else {
nodes[0] = node;
}
} else {
var nodes1 = directory.files.get(route);
if (!nodes1) {
nodes1 = [];
directory.files.set(route, nodes1);
}
var existing2 = nodes1[meta.specificity];
if (existing2) {
if (process.env.NODE_ENV !== "production") {
throw new Error(`The route files "${filePath}" and "${existing2.contextKey}" conflict on the route "/${route}". Please remove or rename one of these files.`);
}
} else {
hasRoutes || (hasRoutes = true);
nodes1[meta.specificity] = node;
}
}
}
} catch (err) {
_didIteratorError1 = true;
_iteratorError1 = err;
} finally {
try {
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
_iterator1.return();
}
} finally {
if (_didIteratorError1) {
throw _iteratorError1;
}
}
}
};
for (var _iterator = contextModule.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
if (!isValid) {
return null;
}
if (!rootDirectory.layout) {
rootDirectory.layout = [{
type: "layout",
loadRoute: function () {
return {
default: function () {
try {
return require("../views/Navigator.native.js");
} catch (e) {
return {
DefaultNavigator: function () {
throw e;
}
};
}
}().DefaultNavigator
};
},
// Generate a fake file name for the directory
contextKey: "router/build/views/Navigator.js",
route: "",
generated: true,
dynamic: null,
children: []
}];
}
if (hasRoutes) {
appendSitemapRoute(rootDirectory);
}
appendNotFoundRoute(rootDirectory);
return rootDirectory;
}
function flattenDirectoryTreeToRoutes(directory, options, layout) {
var pathToRemove = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "",
parentMiddlewares = arguments.length > 4 ? arguments[4] : void 0;
if (directory.layout) {
var previousLayout = layout;
layout = getMostSpecific(directory.layout);
if (previousLayout) {
previousLayout.children.push(layout);
}
var newRoute = layout.route.replace(pathToRemove, "");
pathToRemove = layout.route ? `${layout.route}/` : "";
layout.route = newRoute;
layout.dynamic = generateDynamic(layout.route);
}
if (!layout) throw new Error("One Internal Error: No nearest layout");
var middlewares = directory.middleware ? [...(parentMiddlewares || []), directory.middleware] : parentMiddlewares;
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = directory.files.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var routes = _step.value;
var routeNode = getMostSpecific(routes);
routeNode.route = routeNode.route.replace(pathToRemove, "");
routeNode.dynamic = generateDynamic(routeNode.route);
routeNode.middlewares = middlewares;
layout.children.push(routeNode);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
var _iteratorNormalCompletion1 = true,
_didIteratorError1 = false,
_iteratorError1 = void 0;
try {
for (var _iterator1 = directory.subdirectories.values()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
var child = _step1.value;
flattenDirectoryTreeToRoutes(child, options, layout, pathToRemove, middlewares);
}
} catch (err) {
_didIteratorError1 = true;
_iteratorError1 = err;
} finally {
try {
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
_iterator1.return();
}
} finally {
if (_didIteratorError1) {
throw _iteratorError1;
}
}
}
if (directory.slots.size > 0) {
layout.slots = /* @__PURE__ */new Map();
var _iteratorNormalCompletion2 = true,
_didIteratorError2 = false,
_iteratorError2 = void 0;
try {
for (var _iterator2 = directory.slots[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var [slotName, slotDir] = _step2.value;
var slotConfig = flattenSlotDirectory(slotDir, slotName, options, pathToRemove);
layout.slots.set(slotName, slotConfig);
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
}
return layout;
}
function flattenSlotDirectory(directory, slotName, options, pathToRemove) {
var interceptRoutes = [];
var defaultRoute;
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = directory.files.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var routes = _step.value;
var routeNode = getMostSpecific(routes);
var cleanRoute = routeNode.route.replace(pathToRemove, "");
cleanRoute = cleanRoute.split("/").filter(function (segment) {
return !(0, import_matchers.matchSlotName)(segment);
}).map(function (segment) {
return (0, import_matchers.stripInterceptPrefix)(segment);
}).join("/");
if (cleanRoute.endsWith("default") || cleanRoute === "default") {
defaultRoute = {
...routeNode,
route: cleanRoute,
slotName,
dynamic: generateDynamic(cleanRoute)
};
} else {
interceptRoutes.push({
...routeNode,
route: cleanRoute,
slotName,
dynamic: generateDynamic(cleanRoute)
});
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
var _iteratorNormalCompletion1 = true,
_didIteratorError1 = false,
_iteratorError1 = void 0;
try {
for (var _iterator1 = directory.subdirectories[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
var [subDirName, subDir] = _step1.value;
var subRoutes = flattenSlotSubdirectory(subDir, slotName, options, pathToRemove, subDirName);
interceptRoutes.push(...subRoutes);
}
} catch (err) {
_didIteratorError1 = true;
_iteratorError1 = err;
} finally {
try {
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
_iterator1.return();
}
} finally {
if (_didIteratorError1) {
throw _iteratorError1;
}
}
}
return {
name: slotName,
defaultRoute,
interceptRoutes
};
}
function flattenSlotSubdirectory(directory, slotName, options, pathToRemove, currentPath) {
var routes = [];
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = directory.files.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var fileRoutes = _step.value;
var routeNode = getMostSpecific(fileRoutes);
var cleanRoute = routeNode.route.replace(pathToRemove, "");
cleanRoute = cleanRoute.split("/").filter(function (segment) {
return !(0, import_matchers.matchSlotName)(segment);
}).map(function (segment) {
return (0, import_matchers.stripInterceptPrefix)(segment);
}).join("/");
routes.push({
...routeNode,
route: cleanRoute,
slotName,
dynamic: generateDynamic(cleanRoute)
});
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
var _iteratorNormalCompletion1 = true,
_didIteratorError1 = false,
_iteratorError1 = void 0;
try {
for (var _iterator1 = directory.subdirectories[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
var [subDirName, subDir] = _step1.value;
var subPath = currentPath ? `${currentPath}/${subDirName}` : subDirName;
routes.push(...flattenSlotSubdirectory(subDir, slotName, options, pathToRemove, subPath));
}
} catch (err) {
_didIteratorError1 = true;
_iteratorError1 = err;
} finally {
try {
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
_iterator1.return();
}
} finally {
if (_didIteratorError1) {
throw _iteratorError1;
}
}
}
return routes;
}
function getFileMeta(key, options, parentRenderMode) {
var _options_platformRoutes;
key = key.replace(/^\.\//, "");
var parts = key.split("/");
var route = (0, import_matchers.removeSupportedExtensions)(key);
var filename = parts[parts.length - 1];
var filenameWithoutExtensions = (0, import_matchers.removeSupportedExtensions)(filename);
var isLayout = filenameWithoutExtensions.startsWith("_layout");
var isMiddleware = filenameWithoutExtensions.startsWith("_middleware");
var [, renderModeFound] = filename.match(/\+(api|ssg|ssr|spa)\.(\w+\.)?[jt]sx?$/) || [];
var fileRenderMode = renderModeFound;
var renderMode = fileRenderMode !== null && fileRenderMode !== void 0 ? fileRenderMode : parentRenderMode;
route = route.split("/").map(function (segment) {
var dirRenderMode = (0, import_matchers.matchDirectoryRenderMode)(segment);
return dirRenderMode ? dirRenderMode.name : segment;
}).join("/");
if (filenameWithoutExtensions.startsWith("(") && filenameWithoutExtensions.endsWith(")")) {
throw new Error(`Invalid route ./${key}. Routes cannot end with '(group)' syntax`);
}
if (renderMode !== "api" && filename.startsWith("+") && filenameWithoutExtensions !== "+not-found") {
var renamedRoute = [...parts.slice(0, -1), filename.slice(1)].join("/");
throw new Error(`Invalid route ./${key}. Route nodes cannot start with the '+' character. "Please rename to ${renamedRoute}"`);
}
var slotName;
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var part = _step.value;
var match = (0, import_matchers.matchSlotName)(part);
if (match) {
slotName = match;
break;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
var interceptMatch;
for (var i = 0; i < parts.length; i++) {
var part1 = parts[i];
var match1 = (0, import_matchers.matchInterceptPrefix)(part1);
if (match1) {
var remainingParts = parts.slice(i + 1).map(function (p) {
return (0, import_matchers.removeSupportedExtensions)(p);
}).filter(function (p) {
return p !== "index";
});
var fullTargetPath = [match1.targetPath, ...remainingParts].filter(Boolean).join("/");
interceptMatch = {
...match1,
targetPath: fullTargetPath
};
break;
}
}
var specificity = 0;
var platformExtension = filenameWithoutExtensions.split(".")[1];
var hasPlatformExtension = validPlatforms.has(platformExtension);
var usePlatformRoutes = (_options_platformRoutes = options.platformRoutes) !== null && _options_platformRoutes !== void 0 ? _options_platformRoutes : true;
if (hasPlatformExtension) {
if (!usePlatformRoutes) {
specificity = -1;
} else if (!options.platform) {
specificity = -1;
} else if (platformExtension === options.platform) {
specificity = 2;
} else if (platformExtension === "native" && options.platform !== "web") {
specificity = 1;
} else if (platformExtension !== options.platform) {
specificity = -1;
}
if (renderMode === "api" && specificity !== 0) {
throw new Error(`Api routes cannot have platform extensions. Please remove '.${platformExtension}' from './${key}'`);
}
route = route.replace(new RegExp(`.${platformExtension}$`), "");
}
return {
route,
specificity,
isLayout,
isMiddleware,
renderMode,
slotName,
interceptMatch
};
}
function getMostSpecific(routes) {
var route = routes[routes.length - 1];
if (!routes[0]) {
throw new Error(` [one] The file ${route.contextKey} does not have a fallback sibling file without a platform extension in routes (${routes[0]}, ${routes.length}):
${routes.map(function (r) {
return r.contextKey || "NONE";
}).join("\n")}.`);
}
return route;
}
function getIgnoreList(options) {
var _ref;
var ignore = [/^\.\/\+html\.[tj]sx?$/, ...((_ref = options === null || options === void 0 ? void 0 : options.ignore) !== null && _ref !== void 0 ? _ref : [])];
if ((options === null || options === void 0 ? void 0 : options.preserveApiRoutes) !== true) {
ignore.push(/\+api\.[tj]sx?$/);
}
return ignore;
}
function extrapolateGroups(key) {
var keys = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : /* @__PURE__ */new Set();
var match = (0, import_matchers.matchArrayGroupName)(key);
if (!match) {
keys.add(key);
return keys;
}
var groups = match.split(",");
var groupsSet = new Set(groups);
if (groupsSet.size !== groups.length) {
throw new Error(`Array syntax cannot contain duplicate group name "${groups}" in "${key}".`);
}
if (groups.length === 1) {
keys.add(key);
return keys;
}
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = groups[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var group = _step.value;
extrapolateGroups(key.replace(match, group.trim()), keys);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return keys;
}
function generateDynamic(path) {
var dynamic = path.split("/").map(function (part) {
if (part === "+not-found") {
return {
name: "+not-found",
deep: true,
notFound: true
};
}
var dynamicMatch = (0, import_matchers.matchDynamicName)(part);
if (!dynamicMatch) return null;
return {
name: dynamicMatch.name,
deep: dynamicMatch.deep
};
}).filter(function (part) {
return !!part;
});
return dynamic.length === 0 ? null : dynamic;
}
function appendSitemapRoute(directory) {
if (!directory.files.has("_sitemap")) {
directory.files.set("_sitemap", [{
loadRoute() {
return {
default: function () {
return null;
},
getNavOptions: function () {}
};
},
route: "_sitemap",
type: "ssg",
contextKey: "",
generated: true,
internal: true,
dynamic: null,
children: []
}]);
}
}
function hasNotFoundInGroupSubdirs(directory) {
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = directory.subdirectories[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var [dirName, subDir] = _step.value;
if (!(0, import_matchers.matchGroupName)(dirName)) continue;
var _iteratorNormalCompletion1 = true,
_didIteratorError1 = false,
_iteratorError1 = void 0;
try {
for (var _iterator1 = subDir.files.keys()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
var fileKey = _step1.value;
if (fileKey.endsWith("+not-found")) {
return true;
}
}
} catch (err) {
_didIteratorError1 = true;
_iteratorError1 = err;
} finally {
try {
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
_iterator1.return();
}
} finally {
if (_didIteratorError1) {
throw _iteratorError1;
}
}
}
if (hasNotFoundInGroupSubdirs(subDir)) {
return true;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return false;
}
function appendNotFoundRoute(directory) {
if (!directory.files.has("+not-found") && !hasNotFoundInGroupSubdirs(directory)) {
directory.files.set("+not-found", [{
loadRoute() {
return {
default: function () {
return null;
}
};
},
type: "spa",
route: "+not-found",
contextKey: "",
generated: true,
internal: true,
dynamic: [{
name: "+not-found",
deep: true,
notFound: true
}],
children: []
}]);
}
}
function getLayoutNode(node, options) {
var groupName = (0, import_matchers.matchGroupName)(node.route);
var childMatchingGroup = node.children.find(function (child) {
return child.route.replace(/\/index$/, "") === groupName;
});
var initialRouteName = childMatchingGroup === null || childMatchingGroup === void 0 ? void 0 : childMatchingGroup.route;
return {
...node,
route: node.route.replace(/\/?_layout$/, ""),
children: [],
// Each layout should have its own children
initialRouteName
};
}
function crawlAndAppendInitialRoutesAndEntryFiles(node, options) {
var entryPoints = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
if (node.type === "spa" || node.type === "ssg" || node.type === "ssr") {
node.entryPoints = [... /* @__PURE__ */new Set([...entryPoints, node.contextKey])];
} else if (node.type === "layout") {
if (!node.children) {
throw new Error(`Layout "${node.contextKey}" does not contain any child routes`);
}
entryPoints = [...entryPoints, node.contextKey];
var groupName = (0, import_matchers.matchGroupName)(node.route);
var childMatchingGroup = node.children.find(function (child2) {
return child2.route.replace(/\/index$/, "") === groupName;
});
var initialRouteName = childMatchingGroup === null || childMatchingGroup === void 0 ? void 0 : childMatchingGroup.route;
var loaded = node.loadRoute();
if (loaded === null || loaded === void 0 ? void 0 : loaded.unstable_settings) {
var _loaded_unstable_settings_initialRouteName;
initialRouteName = (_loaded_unstable_settings_initialRouteName = loaded.unstable_settings.initialRouteName) !== null && _loaded_unstable_settings_initialRouteName !== void 0 ? _loaded_unstable_settings_initialRouteName : initialRouteName;
if (groupName) {
var _loaded_unstable_settings_groupName, _loaded_unstable_settings;
var groupSpecificInitialRouteName = (_loaded_unstable_settings = loaded.unstable_settings) === null || _loaded_unstable_settings === void 0 ? void 0 : (_loaded_unstable_settings_groupName = _loaded_unstable_settings[groupName]) === null || _loaded_unstable_settings_groupName === void 0 ? void 0 : _loaded_unstable_settings_groupName.initialRouteName;
initialRouteName = groupSpecificInitialRouteName !== null && groupSpecificInitialRouteName !== void 0 ? groupSpecificInitialRouteName : initialRouteName;
}
}
if (initialRouteName) {
var initialRoute = node.children.find(function (child2) {
return child2.route === initialRouteName;
});
if (!initialRoute) {
var validInitialRoutes = node.children.filter(function (child2) {
return !child2.generated;
}).map(function (child2) {
return `'${child2.route}'`;
}).join(", ");
if (groupName) {
throw new Error(`Layout ${node.contextKey} has invalid initialRouteName '${initialRouteName}' for group '(${groupName})'. Valid options are: ${validInitialRoutes}`);
}
throw new Error(`Layout ${node.contextKey} has invalid initialRouteName '${initialRouteName}'. Valid options are: ${validInitialRoutes}`);
}
node.initialRouteName = initialRouteName;
entryPoints.push(initialRoute.contextKey);
}
var _iteratorNormalCompletion = true,
_didIteratorError = false,
_iteratorError = void 0;
try {
for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var child = _step.value;
crawlAndAppendInitialRoutesAndEntryFiles(child, options, entryPoints);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}
//# sourceMappingURL=getRoutes.native.js.map