@analogjs/router 0.1.0-alpha.2 → 0.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm2020/lib/routes.mjs
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
|
-
const FILES = import.meta.glob([
|
|
2
|
+
const FILES = import.meta.glob([
|
|
3
|
+
'/app/routes/**/*.ts',
|
|
4
|
+
'/src/app/routes/**/*.ts',
|
|
5
|
+
]);
|
|
3
6
|
/**
|
|
4
7
|
* Function used to parse list of files and return
|
|
5
8
|
* configuration of routes.
|
|
@@ -12,7 +15,7 @@ export function getRoutes(files) {
|
|
|
12
15
|
const routeConfigs = ROUTES.reduce((routes, key) => {
|
|
13
16
|
const module = files[key];
|
|
14
17
|
const segments = key
|
|
15
|
-
.replace(
|
|
18
|
+
.replace(/^\/(.*?)\/routes|\/app\/routes|\.(js|ts)$/g, '')
|
|
16
19
|
.replace(/\[\.{3}.+\]/, '**')
|
|
17
20
|
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
18
21
|
.split('/')
|
|
@@ -107,4 +110,4 @@ export function getRoutes(files) {
|
|
|
107
110
|
return routeConfigs;
|
|
108
111
|
}
|
|
109
112
|
export const routes = [...getRoutes(FILES)];
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3NyYy9saWIvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQVdyQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztBQUVyRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWlEO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxNQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sUUFBUSxHQUFHLEdBQUc7YUFDakIsT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQzthQUN4QyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQzthQUM1QixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQzthQUMvQixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5CLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2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WSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGUvY2xpZW50XCIgLz5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGRlZmluZVJvdXRlTWV0YSB9IGZyb20gJy4vZGVmaW5lLXJvdXRlJztcblxuZXhwb3J0IHR5cGUgUm91dGVFeHBvcnQgPSB7XG4gIGRlZmF1bHQ6IFR5cGU8dW5rbm93bj47XG4gIHJvdXRlTWV0YT86IFJldHVyblR5cGU8dHlwZW9mIGRlZmluZVJvdXRlTWV0YT47XG59O1xuXG5jb25zdCBGSUxFUyA9IGltcG9ydC5tZXRhLmdsb2I8Um91dGVFeHBvcnQ+KFsnL2FwcC9yb3V0ZXMvKiovKi50cyddKTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIHBhcnNlIGxpc3Qgb2YgZmlsZXMgYW5kIHJldHVyblxuICogY29uZmlndXJhdGlvbiBvZiByb3V0ZXMuXG4gKlxuICogQHBhcmFtIGZpbGVzXG4gKiBAcmV0dXJucyBBcnJheSBvZiByb3V0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlcyhmaWxlczogUmVjb3JkPHN0cmluZywgKCkgPT4gUHJvbWlzZTxSb3V0ZUV4cG9ydD4+KSB7XG4gIGNvbnN0IFJPVVRFUyA9IE9iamVjdC5rZXlzKGZpbGVzKS5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCAtIGIubGVuZ3RoKTtcblxuICBjb25zdCByb3V0ZUNvbmZpZ3MgPSBST1VURVMucmVkdWNlPFJvdXRlW10+KFxuICAgIChyb3V0ZXM6IFJvdXRlW10sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBtb2R1bGUgPSBmaWxlc1trZXldO1xuXG4gICAgICBjb25zdCBzZWdtZW50cyA9IGtleVxuICAgICAgICAucmVwbGFjZSgvXFwvYXBwXFwvcm91dGVzfFxcLihqc3x0cykkL2csICcnKVxuICAgICAgICAucmVwbGFjZSgvXFxbXFwuezN9LitcXF0vLCAnKionKVxuICAgICAgICAucmVwbGFjZSgvXFxbKFteXFxdXSspXFxdL2csICc6JDEnKVxuICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICBzZWdtZW50cy5yZWR1Y2UoKHBhcmVudCwgc2VnbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IHNlZ21lbnQucmVwbGFjZSgvaW5kZXh8XlxcKC4qP1xcKSQvZywgJycpLnJlcGxhY2UoJy4nLCAnLycpO1xuICAgICAgICBjb25zdCBpc0luZGV4ID0gIXBhdGg7XG4gICAgICAgIGNvbnN0IGlzQ2F0Y2hhbGwgPSBwYXRoID09PSAnKionO1xuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSBpc0luZGV4ID8gJ2Z1bGwnIDogJ3ByZWZpeCc7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgbGVhZiA9IGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGggLSAxICYmIHNlZ21lbnRzLmxlbmd0aCA+IDE7XG4gICAgICAgIGNvbnN0IG5vZGUgPSAhcm9vdCAmJiAhbGVhZjtcbiAgICAgICAgY29uc3QgaW5zZXJ0ID0gL15cXHd8XFwvLy50ZXN0KHBhdGgpICYmICFpc0NhdGNoYWxsID8gJ3Vuc2hpZnQnIDogJ3B1c2gnO1xuXG4gICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgY29uc3QgZHluYW1pYyA9IHBhdGguc3RhcnRzV2l0aCgnOicpO1xuICAgICAgICAgIGlmIChkeW5hbWljKSByZXR1cm4gcGFyZW50O1xuXG4gICAgICAgICAgY29uc3QgbGFzdCA9IHNlZ21lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgICAgY29uc3QgbmV3Um91dGUgPSB7XG4gICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgIHBhdGhNYXRjaCxcbiAgICAgICAgICAgICAgX21vZHVsZTogKCkgPT4gbW9kdWxlKCksXG4gICAgICAgICAgICAgIGxvYWRDaGlsZHJlbjogKCkgPT5cbiAgICAgICAgICAgICAgICBtb2R1bGUoKS50aGVuKChtKSA9PiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICAgICAgLi4ubS5yb3V0ZU1ldGEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcm91dGVzPy5baW5zZXJ0XShuZXdSb3V0ZSBhcyBSb3V0ZSk7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyb290IHx8IG5vZGUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0gcm9vdCA/IHJvdXRlcyA6IHBhcmVudC5fY2hpbGRyZW47XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBjdXJyZW50Py5maW5kKChyb3V0ZTogYW55KSA9PiByb3V0ZS5wYXRoID09PSBwYXRoKTtcblxuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgaWYgKCFmb3VuZC5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgZm91bmQuX2NoaWxkcmVuID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvdW5kLnBhdGhNYXRjaCA9IHBhdGhNYXRjaDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudD8uW2luc2VydF0oe1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBwYXRoTWF0Y2gsXG4gICAgICAgICAgICAgIF9tb2R1bGU6ICgpID0+IG1vZHVsZSgpLFxuICAgICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+XG4gICAgICAgICAgICAgICAgbW9kdWxlKCkudGhlbigobSkgPT4gW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBtLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgICAgIC4uLm0ucm91dGVNZXRhLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmb3VuZCB8fFxuICAgICAgICAgICAgKGN1cnJlbnQ/LltpbnNlcnQgPT09ICd1bnNoaWZ0JyA/IDAgOiBjdXJyZW50Lmxlbmd0aCAtIDFdIGFzIFJvdXRlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVhZikge1xuICAgICAgICAgIHBhcmVudD8uX2NoaWxkcmVuPy5baW5zZXJ0XSh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGF0aE1hdGNoLFxuICAgICAgICAgICAgX21vZHVsZTogKCkgPT4gbW9kdWxlKCksXG4gICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+XG4gICAgICAgICAgICAgIG1vZHVsZSgpLnRoZW4oKG0pID0+IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogbS5kZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgLi4ubS5yb3V0ZU1ldGEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50Ll9jaGlsZHJlbikge1xuICAgICAgICAgIHBhcmVudC5sb2FkQ29tcG9uZW50ID0gKCkgPT5cbiAgICAgICAgICAgIHBhcmVudC5fbW9kdWxlKCkudGhlbigobTogUm91dGVFeHBvcnQpID0+IG0uZGVmYXVsdCk7XG4gICAgICAgICAgcGFyZW50LmxvYWRDaGlsZHJlbiA9ICgpID0+XG4gICAgICAgICAgICBwYXJlbnQuX21vZHVsZSgpLnRoZW4oKG06IFJvdXRlRXhwb3J0KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogcGFyZW50Ll9jaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgIC4uLm0ucm91dGVNZXRhLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9LCB7fSBhcyBSb3V0ZSAmIHsgX21vZHVsZTogKCkgPT4gUHJvbWlzZTxSb3V0ZUV4cG9ydD47IF9jaGlsZHJlbjogYW55W10gfSk7XG5cbiAgICAgIHJldHVybiByb3V0ZXM7XG4gICAgfSxcbiAgICBbXVxuICApO1xuXG4gIHJldHVybiByb3V0ZUNvbmZpZ3M7XG59XG5cbmV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlW10gPSBbLi4uZ2V0Um91dGVzKEZJTEVTKV07XG4iXX0=
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3NyYy9saWIvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQVdyQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBYztJQUMxQyxxQkFBcUI7SUFDckIseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVIOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBaUQ7SUFDekUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0RSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNoQyxDQUFDLE1BQWUsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUIsTUFBTSxRQUFRLEdBQUcsR0FBRzthQUNqQixPQUFPLENBQUMsNENBQTRDLEVBQUUsRUFBRSxDQUFDO2FBQ3pELE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO2FBQzVCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO2FBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcs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LE1BQU0sTUFBTSxHQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZS9jbGllbnRcIiAvPlxuXG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVmaW5lUm91dGVNZXRhIH0gZnJvbSAnLi9kZWZpbmUtcm91dGUnO1xuXG5leHBvcnQgdHlwZSBSb3V0ZUV4cG9ydCA9IHtcbiAgZGVmYXVsdDogVHlwZTx1bmtub3duPjtcbiAgcm91dGVNZXRhPzogUmV0dXJuVHlwZTx0eXBlb2YgZGVmaW5lUm91dGVNZXRhPjtcbn07XG5cbmNvbnN0IEZJTEVTID0gaW1wb3J0Lm1ldGEuZ2xvYjxSb3V0ZUV4cG9ydD4oW1xuICAnL2FwcC9yb3V0ZXMvKiovKi50cycsXG4gICcvc3JjL2FwcC9yb3V0ZXMvKiovKi50cycsXG5dKTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIHBhcnNlIGxpc3Qgb2YgZmlsZXMgYW5kIHJldHVyblxuICogY29uZmlndXJhdGlvbiBvZiByb3V0ZXMuXG4gKlxuICogQHBhcmFtIGZpbGVzXG4gKiBAcmV0dXJucyBBcnJheSBvZiByb3V0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlcyhmaWxlczogUmVjb3JkPHN0cmluZywgKCkgPT4gUHJvbWlzZTxSb3V0ZUV4cG9ydD4+KSB7XG4gIGNvbnN0IFJPVVRFUyA9IE9iamVjdC5rZXlzKGZpbGVzKS5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCAtIGIubGVuZ3RoKTtcblxuICBjb25zdCByb3V0ZUNvbmZpZ3MgPSBST1VURVMucmVkdWNlPFJvdXRlW10+KFxuICAgIChyb3V0ZXM6IFJvdXRlW10sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBtb2R1bGUgPSBmaWxlc1trZXldO1xuXG4gICAgICBjb25zdCBzZWdtZW50cyA9IGtleVxuICAgICAgICAucmVwbGFjZSgvXlxcLyguKj8pXFwvcm91dGVzfFxcL2FwcFxcL3JvdXRlc3xcXC4oanN8dHMpJC9nLCAnJylcbiAgICAgICAgLnJlcGxhY2UoL1xcW1xcLnszfS4rXFxdLywgJyoqJylcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhbXlxcXV0rKVxcXS9nLCAnOiQxJylcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgc2VnbWVudHMucmVkdWNlKChwYXJlbnQsIHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBzZWdtZW50LnJlcGxhY2UoL2luZGV4fF5cXCguKj9cXCkkL2csICcnKS5yZXBsYWNlKCcuJywgJy8nKTtcbiAgICAgICAgY29uc3QgaXNJbmRleCA9ICFwYXRoO1xuICAgICAgICBjb25zdCBpc0NhdGNoYWxsID0gcGF0aCA9PT0gJyoqJztcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gaXNJbmRleCA/ICdmdWxsJyA6ICdwcmVmaXgnO1xuICAgICAgICBjb25zdCByb290ID0gaW5kZXggPT09IDA7XG4gICAgICAgIGNvbnN0IGxlYWYgPSBpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMSAmJiBzZWdtZW50cy5sZW5ndGggPiAxO1xuICAgICAgICBjb25zdCBub2RlID0gIXJvb3QgJiYgIWxlYWY7XG4gICAgICAgIGNvbnN0IGluc2VydCA9IC9eXFx3fFxcLy8udGVzdChwYXRoKSAmJiAhaXNDYXRjaGFsbCA/ICd1bnNoaWZ0JyA6ICdwdXNoJztcblxuICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgIGNvbnN0IGR5bmFtaWMgPSBwYXRoLnN0YXJ0c1dpdGgoJzonKTtcbiAgICAgICAgICBpZiAoZHluYW1pYykgcmV0dXJuIHBhcmVudDtcblxuICAgICAgICAgIGNvbnN0IGxhc3QgPSBzZWdtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1JvdXRlID0ge1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBwYXRoTWF0Y2gsXG4gICAgICAgICAgICAgIF9tb2R1bGU6ICgpID0+IG1vZHVsZSgpLFxuICAgICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+XG4gICAgICAgICAgICAgICAgbW9kdWxlKCkudGhlbigobSkgPT4gW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBtLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgICAgIC4uLm0ucm91dGVNZXRhLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJvdXRlcz8uW2luc2VydF0obmV3Um91dGUgYXMgUm91dGUpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocm9vdCB8fCBub2RlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IHJvb3QgPyByb3V0ZXMgOiBwYXJlbnQuX2NoaWxkcmVuO1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gY3VycmVudD8uZmluZCgocm91dGU6IGFueSkgPT4gcm91dGUucGF0aCA9PT0gcGF0aCk7XG5cbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIGlmICghZm91bmQuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgIGZvdW5kLl9jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3VuZC5wYXRoTWF0Y2ggPSBwYXRoTWF0Y2g7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnQ/LltpbnNlcnRdKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgcGF0aE1hdGNoLFxuICAgICAgICAgICAgICBfbW9kdWxlOiAoKSA9PiBtb2R1bGUoKSxcbiAgICAgICAgICAgICAgbG9hZENoaWxkcmVuOiAoKSA9PlxuICAgICAgICAgICAgICAgIG1vZHVsZSgpLnRoZW4oKG0pID0+IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogbS5kZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgICAuLi5tLnJvdXRlTWV0YSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZm91bmQgfHxcbiAgICAgICAgICAgIChjdXJyZW50Py5baW5zZXJ0ID09PSAndW5zaGlmdCcgPyAwIDogY3VycmVudC5sZW5ndGggLSAxXSBhcyBSb3V0ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxlYWYpIHtcbiAgICAgICAgICBwYXJlbnQ/Ll9jaGlsZHJlbj8uW2luc2VydF0oe1xuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIHBhdGhNYXRjaCxcbiAgICAgICAgICAgIF9tb2R1bGU6ICgpID0+IG1vZHVsZSgpLFxuICAgICAgICAgICAgbG9hZENoaWxkcmVuOiAoKSA9PlxuICAgICAgICAgICAgICBtb2R1bGUoKS50aGVuKChtKSA9PiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICAgIC4uLm0ucm91dGVNZXRhLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmVudC5fY2hpbGRyZW4pIHtcbiAgICAgICAgICBwYXJlbnQubG9hZENvbXBvbmVudCA9ICgpID0+XG4gICAgICAgICAgICBwYXJlbnQuX21vZHVsZSgpLnRoZW4oKG06IFJvdXRlRXhwb3J0KSA9PiBtLmRlZmF1bHQpO1xuICAgICAgICAgIHBhcmVudC5sb2FkQ2hpbGRyZW4gPSAoKSA9PlxuICAgICAgICAgICAgcGFyZW50Ll9tb2R1bGUoKS50aGVuKChtOiBSb3V0ZUV4cG9ydCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHBhcmVudC5fY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAuLi5tLnJvdXRlTWV0YSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgfSwge30gYXMgUm91dGUgJiB7IF9tb2R1bGU6ICgpID0+IFByb21pc2U8Um91dGVFeHBvcnQ+OyBfY2hpbGRyZW46IGFueVtdIH0pO1xuXG4gICAgICByZXR1cm4gcm91dGVzO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICByZXR1cm4gcm91dGVDb25maWdzO1xufVxuXG5leHBvcnQgY29uc3Qgcm91dGVzOiBSb3V0ZVtdID0gWy4uLmdldFJvdXRlcyhGSUxFUyldO1xuIl19
|
|
@@ -2,7 +2,10 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { Router, ActivatedRoute, provideRouter } from '@angular/router';
|
|
3
3
|
|
|
4
4
|
/// <reference types="vite/client" />
|
|
5
|
-
const FILES = import.meta.glob([
|
|
5
|
+
const FILES = import.meta.glob([
|
|
6
|
+
'/app/routes/**/*.ts',
|
|
7
|
+
'/src/app/routes/**/*.ts',
|
|
8
|
+
]);
|
|
6
9
|
/**
|
|
7
10
|
* Function used to parse list of files and return
|
|
8
11
|
* configuration of routes.
|
|
@@ -15,7 +18,7 @@ function getRoutes(files) {
|
|
|
15
18
|
const routeConfigs = ROUTES.reduce((routes, key) => {
|
|
16
19
|
const module = files[key];
|
|
17
20
|
const segments = key
|
|
18
|
-
.replace(
|
|
21
|
+
.replace(/^\/(.*?)\/routes|\/app\/routes|\.(js|ts)$/g, '')
|
|
19
22
|
.replace(/\[\.{3}.+\]/, '**')
|
|
20
23
|
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
21
24
|
.split('/')
|
|
@@ -159,3 +162,4 @@ const provideFileRouter = (...features) => {
|
|
|
159
162
|
|
|
160
163
|
export { defineRouteMeta, injectActivatedRoute, injectRouter, provideFileRouter, routes };
|
|
161
164
|
//# sourceMappingURL=analogjs-router.mjs.map
|
|
165
|
+
//# sourceMappingURL=analogjs-router.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-routes.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport type { Type } from '@angular/core';\nimport type { Route } from '@angular/router';\nimport { defineRouteMeta } from './define-route';\n\nexport type RouteExport = {\n default: Type<unknown>;\n routeMeta?: ReturnType<typeof defineRouteMeta>;\n};\n\nconst FILES = import.meta.glob<RouteExport>(['/app/routes/**/*.ts']);\n\n/**\n * Function used to parse list of files and return\n * configuration of routes.\n *\n * @param files\n * @returns Array of routes\n */\nexport function getRoutes(files: Record<string, () => Promise<RouteExport>>) {\n const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);\n\n const routeConfigs = ROUTES.reduce<Route[]>(\n (routes: Route[], key: string) => {\n const module = files[key];\n\n const segments = key\n .replace(/\\/app\\/routes|\\.(js|ts)$/g, '')\n .replace(/\\[\\.{3}.+\\]/, '**')\n .replace(/\\[([^\\]]+)\\]/g, ':$1')\n .split('/')\n .filter(Boolean);\n\n segments.reduce((parent, segment, index) => {\n const path = segment.replace(/index|^\\(.*?\\)$/g, '').replace('.', '/');\n const isIndex = !path;\n const isCatchall = path === '**';\n const pathMatch = isIndex ? 'full' : 'prefix';\n const root = index === 0;\n const leaf = index === segments.length - 1 && segments.length > 1;\n const node = !root && !leaf;\n const insert = /^\\w|\\//.test(path) && !isCatchall ? 'unshift' : 'push';\n\n if (root) {\n const dynamic = path.startsWith(':');\n if (dynamic) return parent;\n\n const last = segments.length === 1;\n if (last) {\n const newRoute = {\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n };\n\n routes?.[insert](newRoute as Route);\n return parent;\n }\n }\n\n if (root || node) {\n const current = root ? routes : parent._children;\n const found = current?.find((route: any) => route.path === path);\n\n if (found) {\n if (!found._children) {\n found._children = [];\n }\n\n found.pathMatch = pathMatch;\n } else {\n current?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n return (\n found ||\n (current?.[insert === 'unshift' ? 0 : current.length - 1] as Route)\n );\n }\n\n if (leaf) {\n parent?._children?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n if (parent._children) {\n parent.loadComponent = () =>\n parent._module().then((m: RouteExport) => m.default);\n parent.loadChildren = () =>\n parent._module().then((m: RouteExport) => {\n return [\n {\n path: '',\n children: parent._children,\n ...m.routeMeta,\n },\n ];\n });\n }\n\n return parent;\n }, {} as Route & { _module: () => Promise<RouteExport>; _children: any[] });\n\n return routes;\n },\n []\n );\n\n return routeConfigs;\n}\n\nexport const routes: Route[] = [...getRoutes(FILES)];\n","import { inject } from '@angular/core';\nimport { Route as NgRoute, Router } from '@angular/router';\nimport { ActivatedRoute } from '@angular/router';\n\ntype RouteOmitted =\n | 'component'\n | 'loadComponent'\n | 'loadChildren'\n | 'path'\n | 'pathMatch';\n\ntype RestrictedRoute = Omit<NgRoute, RouteOmitted>;\n\n/**\n * Defines additional route config metadata. This\n * object is merged into the route config with\n * the predefined file-based route.\n *\n * @usageNotes\n *\n * ```\n * import { Component } from '@angular/core';\n * import { defineRouteMeta } from '@analogjs/router';\n *\n * export const routeMeta = defineRouteMeta({\n * title: 'Welcome'\n * });\n *\n * @Component({\n * template: `Home`,\n * standalone: true,\n * })\n * export default class HomeComponent {}\n * ```\n *\n * @param route\n * @returns\n */\nexport const defineRouteMeta = (route: RestrictedRoute) => {\n return route;\n};\n\n/**\n * Returns the instance of Angular Router\n *\n * @returns The router\n */\nexport const injectRouter = () => {\n return inject(Router);\n};\n\n/**\n * Returns the instance of the Activate Route for the component\n *\n * @returns The activated route\n */\nexport const injectActivatedRoute = () => {\n return inject(ActivatedRoute);\n};\n","import { provideRouter, RouterFeatures } from '@angular/router';\nimport { routes } from './routes';\n\n/**\n * Sets up providers for the Angular router, and registers\n * file-based routes. Additional features can be provided\n * to further configure the behavior of the router.\n *\n * @param features\n * @returns Providers and features to configure the router with routes\n */\nexport const provideFileRouter = (...features: RouterFeatures[]) => {\n return provideRouter(routes, ...features);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-routes.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport type { Type } from '@angular/core';\nimport type { Route } from '@angular/router';\nimport { defineRouteMeta } from './define-route';\n\nexport type RouteExport = {\n default: Type<unknown>;\n routeMeta?: ReturnType<typeof defineRouteMeta>;\n};\n\nconst FILES = import.meta.glob<RouteExport>([\n '/app/routes/**/*.ts',\n '/src/app/routes/**/*.ts',\n]);\n\n/**\n * Function used to parse list of files and return\n * configuration of routes.\n *\n * @param files\n * @returns Array of routes\n */\nexport function getRoutes(files: Record<string, () => Promise<RouteExport>>) {\n const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);\n\n const routeConfigs = ROUTES.reduce<Route[]>(\n (routes: Route[], key: string) => {\n const module = files[key];\n\n const segments = key\n .replace(/^\\/(.*?)\\/routes|\\/app\\/routes|\\.(js|ts)$/g, '')\n .replace(/\\[\\.{3}.+\\]/, '**')\n .replace(/\\[([^\\]]+)\\]/g, ':$1')\n .split('/')\n .filter(Boolean);\n\n segments.reduce((parent, segment, index) => {\n const path = segment.replace(/index|^\\(.*?\\)$/g, '').replace('.', '/');\n const isIndex = !path;\n const isCatchall = path === '**';\n const pathMatch = isIndex ? 'full' : 'prefix';\n const root = index === 0;\n const leaf = index === segments.length - 1 && segments.length > 1;\n const node = !root && !leaf;\n const insert = /^\\w|\\//.test(path) && !isCatchall ? 'unshift' : 'push';\n\n if (root) {\n const dynamic = path.startsWith(':');\n if (dynamic) return parent;\n\n const last = segments.length === 1;\n if (last) {\n const newRoute = {\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n };\n\n routes?.[insert](newRoute as Route);\n return parent;\n }\n }\n\n if (root || node) {\n const current = root ? routes : parent._children;\n const found = current?.find((route: any) => route.path === path);\n\n if (found) {\n if (!found._children) {\n found._children = [];\n }\n\n found.pathMatch = pathMatch;\n } else {\n current?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n return (\n found ||\n (current?.[insert === 'unshift' ? 0 : current.length - 1] as Route)\n );\n }\n\n if (leaf) {\n parent?._children?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n if (parent._children) {\n parent.loadComponent = () =>\n parent._module().then((m: RouteExport) => m.default);\n parent.loadChildren = () =>\n parent._module().then((m: RouteExport) => {\n return [\n {\n path: '',\n children: parent._children,\n ...m.routeMeta,\n },\n ];\n });\n }\n\n return parent;\n }, {} as Route & { _module: () => Promise<RouteExport>; _children: any[] });\n\n return routes;\n },\n []\n );\n\n return routeConfigs;\n}\n\nexport const routes: Route[] = [...getRoutes(FILES)];\n","import { inject } from '@angular/core';\nimport { Route as NgRoute, Router } from '@angular/router';\nimport { ActivatedRoute } from '@angular/router';\n\ntype RouteOmitted =\n | 'component'\n | 'loadComponent'\n | 'loadChildren'\n | 'path'\n | 'pathMatch';\n\ntype RestrictedRoute = Omit<NgRoute, RouteOmitted>;\n\n/**\n * Defines additional route config metadata. This\n * object is merged into the route config with\n * the predefined file-based route.\n *\n * @usageNotes\n *\n * ```\n * import { Component } from '@angular/core';\n * import { defineRouteMeta } from '@analogjs/router';\n *\n * export const routeMeta = defineRouteMeta({\n * title: 'Welcome'\n * });\n *\n * @Component({\n * template: `Home`,\n * standalone: true,\n * })\n * export default class HomeComponent {}\n * ```\n *\n * @param route\n * @returns\n */\nexport const defineRouteMeta = (route: RestrictedRoute) => {\n return route;\n};\n\n/**\n * Returns the instance of Angular Router\n *\n * @returns The router\n */\nexport const injectRouter = () => {\n return inject(Router);\n};\n\n/**\n * Returns the instance of the Activate Route for the component\n *\n * @returns The activated route\n */\nexport const injectActivatedRoute = () => {\n return inject(ActivatedRoute);\n};\n","import { provideRouter, RouterFeatures } from '@angular/router';\nimport { routes } from './routes';\n\n/**\n * Sets up providers for the Angular router, and registers\n * file-based routes. Additional features can be provided\n * to further configure the behavior of the router.\n *\n * @param features\n * @returns Providers and features to configure the router with routes\n */\nexport const provideFileRouter = (...features: RouterFeatures[]) => {\n return provideRouter(routes, ...features);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,10 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { Router, ActivatedRoute, provideRouter } from '@angular/router';
|
|
3
3
|
|
|
4
4
|
/// <reference types="vite/client" />
|
|
5
|
-
const FILES = import.meta.glob([
|
|
5
|
+
const FILES = import.meta.glob([
|
|
6
|
+
'/app/routes/**/*.ts',
|
|
7
|
+
'/src/app/routes/**/*.ts',
|
|
8
|
+
]);
|
|
6
9
|
/**
|
|
7
10
|
* Function used to parse list of files and return
|
|
8
11
|
* configuration of routes.
|
|
@@ -15,7 +18,7 @@ function getRoutes(files) {
|
|
|
15
18
|
const routeConfigs = ROUTES.reduce((routes, key) => {
|
|
16
19
|
const module = files[key];
|
|
17
20
|
const segments = key
|
|
18
|
-
.replace(
|
|
21
|
+
.replace(/^\/(.*?)\/routes|\/app\/routes|\.(js|ts)$/g, '')
|
|
19
22
|
.replace(/\[\.{3}.+\]/, '**')
|
|
20
23
|
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
21
24
|
.split('/')
|
|
@@ -174,3 +177,4 @@ const provideFileRouter = (...features) => {
|
|
|
174
177
|
|
|
175
178
|
export { defineRouteMeta, injectActivatedRoute, injectRouter, provideFileRouter, routes };
|
|
176
179
|
//# sourceMappingURL=analogjs-router.mjs.map
|
|
180
|
+
//# sourceMappingURL=analogjs-router.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-routes.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport type { Type } from '@angular/core';\nimport type { Route } from '@angular/router';\nimport { defineRouteMeta } from './define-route';\n\nexport type RouteExport = {\n default: Type<unknown>;\n routeMeta?: ReturnType<typeof defineRouteMeta>;\n};\n\nconst FILES = import.meta.glob<RouteExport>(['/app/routes/**/*.ts']);\n\n/**\n * Function used to parse list of files and return\n * configuration of routes.\n *\n * @param files\n * @returns Array of routes\n */\nexport function getRoutes(files: Record<string, () => Promise<RouteExport>>) {\n const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);\n\n const routeConfigs = ROUTES.reduce<Route[]>(\n (routes: Route[], key: string) => {\n const module = files[key];\n\n const segments = key\n .replace(/\\/app\\/routes|\\.(js|ts)$/g, '')\n .replace(/\\[\\.{3}.+\\]/, '**')\n .replace(/\\[([^\\]]+)\\]/g, ':$1')\n .split('/')\n .filter(Boolean);\n\n segments.reduce((parent, segment, index) => {\n const path = segment.replace(/index|^\\(.*?\\)$/g, '').replace('.', '/');\n const isIndex = !path;\n const isCatchall = path === '**';\n const pathMatch = isIndex ? 'full' : 'prefix';\n const root = index === 0;\n const leaf = index === segments.length - 1 && segments.length > 1;\n const node = !root && !leaf;\n const insert = /^\\w|\\//.test(path) && !isCatchall ? 'unshift' : 'push';\n\n if (root) {\n const dynamic = path.startsWith(':');\n if (dynamic) return parent;\n\n const last = segments.length === 1;\n if (last) {\n const newRoute = {\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n };\n\n routes?.[insert](newRoute as Route);\n return parent;\n }\n }\n\n if (root || node) {\n const current = root ? routes : parent._children;\n const found = current?.find((route: any) => route.path === path);\n\n if (found) {\n if (!found._children) {\n found._children = [];\n }\n\n found.pathMatch = pathMatch;\n } else {\n current?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n return (\n found ||\n (current?.[insert === 'unshift' ? 0 : current.length - 1] as Route)\n );\n }\n\n if (leaf) {\n parent?._children?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n if (parent._children) {\n parent.loadComponent = () =>\n parent._module().then((m: RouteExport) => m.default);\n parent.loadChildren = () =>\n parent._module().then((m: RouteExport) => {\n return [\n {\n path: '',\n children: parent._children,\n ...m.routeMeta,\n },\n ];\n });\n }\n\n return parent;\n }, {} as Route & { _module: () => Promise<RouteExport>; _children: any[] });\n\n return routes;\n },\n []\n );\n\n return routeConfigs;\n}\n\nexport const routes: Route[] = [...getRoutes(FILES)];\n","import { inject } from '@angular/core';\nimport { Route as NgRoute, Router } from '@angular/router';\nimport { ActivatedRoute } from '@angular/router';\n\ntype RouteOmitted =\n | 'component'\n | 'loadComponent'\n | 'loadChildren'\n | 'path'\n | 'pathMatch';\n\ntype RestrictedRoute = Omit<NgRoute, RouteOmitted>;\n\n/**\n * Defines additional route config metadata. This\n * object is merged into the route config with\n * the predefined file-based route.\n *\n * @usageNotes\n *\n * ```\n * import { Component } from '@angular/core';\n * import { defineRouteMeta } from '@analogjs/router';\n *\n * export const routeMeta = defineRouteMeta({\n * title: 'Welcome'\n * });\n *\n * @Component({\n * template: `Home`,\n * standalone: true,\n * })\n * export default class HomeComponent {}\n * ```\n *\n * @param route\n * @returns\n */\nexport const defineRouteMeta = (route: RestrictedRoute) => {\n return route;\n};\n\n/**\n * Returns the instance of Angular Router\n *\n * @returns The router\n */\nexport const injectRouter = () => {\n return inject(Router);\n};\n\n/**\n * Returns the instance of the Activate Route for the component\n *\n * @returns The activated route\n */\nexport const injectActivatedRoute = () => {\n return inject(ActivatedRoute);\n};\n","import { provideRouter, RouterFeatures } from '@angular/router';\nimport { routes } from './routes';\n\n/**\n * Sets up providers for the Angular router, and registers\n * file-based routes. Additional features can be provided\n * to further configure the behavior of the router.\n *\n * @param features\n * @returns Providers and features to configure the router with routes\n */\nexport const provideFileRouter = (...features: RouterFeatures[]) => {\n return provideRouter(routes, ...features);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-routes.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport type { Type } from '@angular/core';\nimport type { Route } from '@angular/router';\nimport { defineRouteMeta } from './define-route';\n\nexport type RouteExport = {\n default: Type<unknown>;\n routeMeta?: ReturnType<typeof defineRouteMeta>;\n};\n\nconst FILES = import.meta.glob<RouteExport>([\n '/app/routes/**/*.ts',\n '/src/app/routes/**/*.ts',\n]);\n\n/**\n * Function used to parse list of files and return\n * configuration of routes.\n *\n * @param files\n * @returns Array of routes\n */\nexport function getRoutes(files: Record<string, () => Promise<RouteExport>>) {\n const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);\n\n const routeConfigs = ROUTES.reduce<Route[]>(\n (routes: Route[], key: string) => {\n const module = files[key];\n\n const segments = key\n .replace(/^\\/(.*?)\\/routes|\\/app\\/routes|\\.(js|ts)$/g, '')\n .replace(/\\[\\.{3}.+\\]/, '**')\n .replace(/\\[([^\\]]+)\\]/g, ':$1')\n .split('/')\n .filter(Boolean);\n\n segments.reduce((parent, segment, index) => {\n const path = segment.replace(/index|^\\(.*?\\)$/g, '').replace('.', '/');\n const isIndex = !path;\n const isCatchall = path === '**';\n const pathMatch = isIndex ? 'full' : 'prefix';\n const root = index === 0;\n const leaf = index === segments.length - 1 && segments.length > 1;\n const node = !root && !leaf;\n const insert = /^\\w|\\//.test(path) && !isCatchall ? 'unshift' : 'push';\n\n if (root) {\n const dynamic = path.startsWith(':');\n if (dynamic) return parent;\n\n const last = segments.length === 1;\n if (last) {\n const newRoute = {\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n };\n\n routes?.[insert](newRoute as Route);\n return parent;\n }\n }\n\n if (root || node) {\n const current = root ? routes : parent._children;\n const found = current?.find((route: any) => route.path === path);\n\n if (found) {\n if (!found._children) {\n found._children = [];\n }\n\n found.pathMatch = pathMatch;\n } else {\n current?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n return (\n found ||\n (current?.[insert === 'unshift' ? 0 : current.length - 1] as Route)\n );\n }\n\n if (leaf) {\n parent?._children?.[insert]({\n path,\n pathMatch,\n _module: () => module(),\n loadChildren: () =>\n module().then((m) => [\n {\n path: '',\n component: m.default,\n ...m.routeMeta,\n },\n ]),\n });\n }\n\n if (parent._children) {\n parent.loadComponent = () =>\n parent._module().then((m: RouteExport) => m.default);\n parent.loadChildren = () =>\n parent._module().then((m: RouteExport) => {\n return [\n {\n path: '',\n children: parent._children,\n ...m.routeMeta,\n },\n ];\n });\n }\n\n return parent;\n }, {} as Route & { _module: () => Promise<RouteExport>; _children: any[] });\n\n return routes;\n },\n []\n );\n\n return routeConfigs;\n}\n\nexport const routes: Route[] = [...getRoutes(FILES)];\n","import { inject } from '@angular/core';\nimport { Route as NgRoute, Router } from '@angular/router';\nimport { ActivatedRoute } from '@angular/router';\n\ntype RouteOmitted =\n | 'component'\n | 'loadComponent'\n | 'loadChildren'\n | 'path'\n | 'pathMatch';\n\ntype RestrictedRoute = Omit<NgRoute, RouteOmitted>;\n\n/**\n * Defines additional route config metadata. This\n * object is merged into the route config with\n * the predefined file-based route.\n *\n * @usageNotes\n *\n * ```\n * import { Component } from '@angular/core';\n * import { defineRouteMeta } from '@analogjs/router';\n *\n * export const routeMeta = defineRouteMeta({\n * title: 'Welcome'\n * });\n *\n * @Component({\n * template: `Home`,\n * standalone: true,\n * })\n * export default class HomeComponent {}\n * ```\n *\n * @param route\n * @returns\n */\nexport const defineRouteMeta = (route: RestrictedRoute) => {\n return route;\n};\n\n/**\n * Returns the instance of Angular Router\n *\n * @returns The router\n */\nexport const injectRouter = () => {\n return inject(Router);\n};\n\n/**\n * Returns the instance of the Activate Route for the component\n *\n * @returns The activated route\n */\nexport const injectActivatedRoute = () => {\n return inject(ActivatedRoute);\n};\n","import { provideRouter, RouterFeatures } from '@angular/router';\nimport { routes } from './routes';\n\n/**\n * Sets up providers for the Angular router, and registers\n * file-based routes. Additional features can be provided\n * to further configure the behavior of the router.\n *\n * @param features\n * @returns Providers and features to configure the router with routes\n */\nexport const provideFileRouter = (...features: RouterFeatures[]) => {\n return provideRouter(routes, ...features);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|