97 lines
4.0 KiB
JavaScript
97 lines
4.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.extrapolateGroups = exports.generateDynamic = void 0;
|
|
exports.getRoutes = getRoutes;
|
|
exports.getExactRoutes = getExactRoutes;
|
|
const routing_1 = require("expo-router/internal/routing");
|
|
/**
|
|
* Given a Metro context module, return an array of nested routes.
|
|
*
|
|
* This is a two step process:
|
|
* 1. Convert the RequireContext keys (file paths) into a directory tree.
|
|
* - This should extrapolate array syntax into multiple routes
|
|
* - Routes are given a specificity score
|
|
* 2. Flatten the directory tree into routes
|
|
* - Routes in directories without _layout files are hoisted to the nearest _layout
|
|
* - The name of the route is relative to the nearest _layout
|
|
* - If multiple routes have the same name, the most specific route is used
|
|
*/
|
|
function getRoutes(contextModule, options = {}) {
|
|
return (0, routing_1.getRoutesCore)(contextModule, {
|
|
getSystemRoute({ route, type, defaults, redirectConfig, rewriteConfig }) {
|
|
if (route === '' && type === 'layout') {
|
|
// Root layout when no layout is defined.
|
|
return {
|
|
type: 'layout',
|
|
loadRoute: () => ({
|
|
default: () => null,
|
|
}),
|
|
// Generate a fake file name for the directory
|
|
contextKey: 'expo-router/build/views/Navigator.js',
|
|
route: '',
|
|
generated: true,
|
|
dynamic: null,
|
|
children: [],
|
|
};
|
|
}
|
|
else if (route === '_sitemap' && type === 'route') {
|
|
return {
|
|
loadRoute: () => ({
|
|
default: () => null,
|
|
}),
|
|
route: '_sitemap',
|
|
type: 'route',
|
|
contextKey: 'expo-router/build/views/Sitemap.js',
|
|
generated: true,
|
|
internal: true,
|
|
dynamic: null,
|
|
children: [],
|
|
};
|
|
}
|
|
else if (route === '+not-found' && type === 'route') {
|
|
return {
|
|
loadRoute: () => ({
|
|
default: () => null,
|
|
}),
|
|
type: 'route',
|
|
route: '+not-found',
|
|
contextKey: 'expo-router/build/views/Unmatched.js',
|
|
generated: true,
|
|
internal: true,
|
|
dynamic: [{ name: '+not-found', deep: true, notFound: true }],
|
|
children: [],
|
|
};
|
|
}
|
|
else if (type === 'redirect' && redirectConfig && defaults) {
|
|
return {
|
|
...defaults,
|
|
loadRoute() {
|
|
return require('expo-router/build/getRoutesRedirects').getRedirectModule(redirectConfig);
|
|
},
|
|
};
|
|
}
|
|
else if (type === 'rewrite' && rewriteConfig && defaults) {
|
|
return {
|
|
...defaults,
|
|
loadRoute() {
|
|
return {
|
|
default: contextModule(rewriteConfig.destinationContextKey).default,
|
|
};
|
|
},
|
|
};
|
|
}
|
|
throw new Error(`Unknown system route: ${route} and type: ${type} and redirectConfig: ${redirectConfig} and rewriteConfig: ${rewriteConfig}`);
|
|
},
|
|
...options,
|
|
});
|
|
}
|
|
function getExactRoutes(contextModule, options = {}) {
|
|
return getRoutes(contextModule, {
|
|
...options,
|
|
skipGenerated: true,
|
|
});
|
|
}
|
|
var routing_2 = require("expo-router/internal/routing");
|
|
Object.defineProperty(exports, "generateDynamic", { enumerable: true, get: function () { return routing_2.generateDynamic; } });
|
|
Object.defineProperty(exports, "extrapolateGroups", { enumerable: true, get: function () { return routing_2.extrapolateGroups; } });
|
|
//# sourceMappingURL=getRoutesSSR.js.map
|