@analogjs/router 0.1.0-alpha.8 → 0.2.0-beta.0
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/esm2022/lib/routes.mjs +123 -0
- package/{fesm2020 → fesm2022}/analogjs-router.mjs +4 -2
- package/fesm2022/analogjs-router.mjs.map +1 -0
- package/package.json +7 -13
- package/esm2020/lib/routes.mjs +0 -121
- package/fesm2015/analogjs-router.mjs +0 -263
- package/fesm2015/analogjs-router.mjs.map +0 -1
- package/fesm2020/analogjs-router.mjs.map +0 -1
- /package/{esm2020 → esm2022}/analogjs-router.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/define-route.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/markdown-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/meta-tags.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/provide-file-router.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/route-config.mjs +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
2
|
+
import { toRouteConfig } from './route-config';
|
|
3
|
+
import { toMarkdownModule } from './markdown-helpers';
|
|
4
|
+
const FILES = import.meta.glob([
|
|
5
|
+
'/app/routes/**/*.ts',
|
|
6
|
+
'/src/app/routes/**/*.ts',
|
|
7
|
+
'/src/app/pages/**/*.page.ts',
|
|
8
|
+
]);
|
|
9
|
+
const CONTENT_FILES = import.meta.glob(['/src/app/routes/**/*.md', '/src/app/pages/**/*.md'], {
|
|
10
|
+
as: 'raw',
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Function used to parse list of files and return
|
|
14
|
+
* configuration of routes.
|
|
15
|
+
*
|
|
16
|
+
* @param files
|
|
17
|
+
* @returns Array of routes
|
|
18
|
+
*/
|
|
19
|
+
export function getRoutes(files) {
|
|
20
|
+
const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);
|
|
21
|
+
const routeConfigs = ROUTES.reduce((routes, key) => {
|
|
22
|
+
const module = key.endsWith('.md')
|
|
23
|
+
? toMarkdownModule(files[key])
|
|
24
|
+
: files[key];
|
|
25
|
+
const segments = key
|
|
26
|
+
.replace(/^\/(.*?)\/routes|^\/(.*?)\/pages|\/app\/routes|(\.page\.(js|ts)$)|(\.(ts|md)$)/g, '')
|
|
27
|
+
.replace(/\[\.{3}.+\]/, '**')
|
|
28
|
+
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
29
|
+
.split('/')
|
|
30
|
+
.filter(Boolean);
|
|
31
|
+
segments.reduce((parent, segment, index) => {
|
|
32
|
+
const path = segment
|
|
33
|
+
.replace(/index|^\(.*?\)$/g, '')
|
|
34
|
+
.replace(/\./g, '/');
|
|
35
|
+
const isIndex = !path;
|
|
36
|
+
const isCatchall = path === '**';
|
|
37
|
+
const pathMatch = isIndex ? 'full' : 'prefix';
|
|
38
|
+
const root = index === 0;
|
|
39
|
+
const leaf = index === segments.length - 1 && segments.length > 1;
|
|
40
|
+
const node = !root && !leaf;
|
|
41
|
+
const insert = /^\w|\//.test(path) && !isCatchall ? 'unshift' : 'push';
|
|
42
|
+
if (root) {
|
|
43
|
+
const dynamic = path.startsWith(':');
|
|
44
|
+
if (dynamic)
|
|
45
|
+
return parent;
|
|
46
|
+
const last = segments.length === 1;
|
|
47
|
+
if (last) {
|
|
48
|
+
const newRoute = {
|
|
49
|
+
path,
|
|
50
|
+
pathMatch,
|
|
51
|
+
_module: () => module(),
|
|
52
|
+
loadChildren: () => module().then((m) => [
|
|
53
|
+
{
|
|
54
|
+
path: '',
|
|
55
|
+
component: m.default,
|
|
56
|
+
...toRouteConfig(m.routeMeta),
|
|
57
|
+
},
|
|
58
|
+
]),
|
|
59
|
+
};
|
|
60
|
+
routes?.[insert](newRoute);
|
|
61
|
+
return parent;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (root || node) {
|
|
65
|
+
const current = root ? routes : parent._children;
|
|
66
|
+
const found = current?.find((route) => route.path === path);
|
|
67
|
+
if (found) {
|
|
68
|
+
if (!found._children) {
|
|
69
|
+
found._children = [];
|
|
70
|
+
}
|
|
71
|
+
found.pathMatch = pathMatch;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
current?.[insert]({
|
|
75
|
+
path,
|
|
76
|
+
pathMatch,
|
|
77
|
+
_module: () => module(),
|
|
78
|
+
loadChildren: () => module().then((m) => [
|
|
79
|
+
{
|
|
80
|
+
path: '',
|
|
81
|
+
component: m.default,
|
|
82
|
+
...toRouteConfig(m.routeMeta),
|
|
83
|
+
},
|
|
84
|
+
]),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return (found ||
|
|
88
|
+
current?.[insert === 'unshift' ? 0 : current.length - 1]);
|
|
89
|
+
}
|
|
90
|
+
if (leaf) {
|
|
91
|
+
parent?._children?.[insert]({
|
|
92
|
+
path,
|
|
93
|
+
pathMatch,
|
|
94
|
+
_module: () => module(),
|
|
95
|
+
loadChildren: () => module().then((m) => [
|
|
96
|
+
{
|
|
97
|
+
path: '',
|
|
98
|
+
component: m.default,
|
|
99
|
+
...toRouteConfig(m.routeMeta),
|
|
100
|
+
},
|
|
101
|
+
]),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (parent._children) {
|
|
105
|
+
parent.loadComponent = () => parent._module().then((m) => m.default);
|
|
106
|
+
parent.loadChildren = () => parent._module().then((m) => {
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
path: '',
|
|
110
|
+
children: parent._children,
|
|
111
|
+
...toRouteConfig(m.routeMeta),
|
|
112
|
+
},
|
|
113
|
+
];
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return parent;
|
|
117
|
+
}, {});
|
|
118
|
+
return routes;
|
|
119
|
+
}, []);
|
|
120
|
+
return routeConfigs;
|
|
121
|
+
}
|
|
122
|
+
export const routes = [...getRoutes({ ...FILES, ...CONTENT_FILES })];
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3NyYy9saWIvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUtyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWM7SUFDMUMscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6Qiw2QkFBNkI7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3BDLENBQUMseUJBQXlCLEVBQUUsd0JBQXdCLENBQUMsRUFDckQ7SUFDRSxFQUFFLEVBQUUsS0FBSztDQUNWLENBQ0YsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQTBEO0lBRTFELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxNQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQStCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzVELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUEwQixDQUFDO1lBQ3ZELENBQUMsQ0FBRSxLQUFLLENBQUMsR0FBRyxDQUFnQyxDQUFDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLEdBQUc7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TUFBTSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FDekIsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWMsRUFBRSxFQUFFO29CQUN2QyxPQUFPO3dCQUNMOzRCQUNFLElBQUksRUFBRSxFQUFFOzRCQUNSLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUzs0QkFDMUIsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQWtDLENBQUM7eUJBQ3ZEO3FCQUNGLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsRUFBRSxFQUF1RSxDQUFDLENBQUM7UUFFNUUsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDSCxDQUFDO0lBRUYsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGUvY2xpZW50XCIgLz5cblxuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFJvdXRlRXhwb3J0LCBSb3V0ZU1ldGEgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyB0b1JvdXRlQ29uZmlnIH0gZnJvbSAnLi9yb3V0ZS1jb25maWcnO1xuaW1wb3J0IHsgdG9NYXJrZG93bk1vZHVsZSB9IGZyb20gJy4vbWFya2Rvd24taGVscGVycyc7XG5cbmNvbnN0IEZJTEVTID0gaW1wb3J0Lm1ldGEuZ2xvYjxSb3V0ZUV4cG9ydD4oW1xuICAnL2FwcC9yb3V0ZXMvKiovKi50cycsXG4gICcvc3JjL2FwcC9yb3V0ZXMvKiovKi50cycsXG4gICcvc3JjL2FwcC9wYWdlcy8qKi8qLnBhZ2UudHMnLFxuXSk7XG5cbmNvbnN0IENPTlRFTlRfRklMRVMgPSBpbXBvcnQubWV0YS5nbG9iPHN0cmluZz4oXG4gIFsnL3NyYy9hcHAvcm91dGVzLyoqLyoubWQnLCAnL3NyYy9hcHAvcGFnZXMvKiovKi5tZCddLFxuICB7XG4gICAgYXM6ICdyYXcnLFxuICB9XG4pO1xuXG4vKipcbiAqIEZ1bmN0aW9uIHVzZWQgdG8gcGFyc2UgbGlzdCBvZiBmaWxlcyBhbmQgcmV0dXJuXG4gKiBjb25maWd1cmF0aW9uIG9mIHJvdXRlcy5cbiAqXG4gKiBAcGFyYW0gZmlsZXNcbiAqIEByZXR1cm5zIEFycmF5IG9mIHJvdXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVzKFxuICBmaWxlczogUmVjb3JkPHN0cmluZywgKCkgPT4gUHJvbWlzZTxSb3V0ZUV4cG9ydCB8IHN0cmluZz4+XG4pIHtcbiAgY29uc3QgUk9VVEVTID0gT2JqZWN0LmtleXMoZmlsZXMpLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoIC0gYi5sZW5ndGgpO1xuXG4gIGNvbnN0IHJvdXRlQ29uZmlncyA9IFJPVVRFUy5yZWR1Y2U8Um91dGVbXT4oXG4gICAgKHJvdXRlczogUm91dGVbXSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG1vZHVsZTogKCkgPT4gUHJvbWlzZTxSb3V0ZUV4cG9ydD4gPSBrZXkuZW5kc1dpdGgoJy5tZCcpXG4gICAgICAgID8gdG9NYXJrZG93bk1vZHVsZShmaWxlc1trZXldIGFzICgpID0+IFByb21pc2U8c3RyaW5nPilcbiAgICAgICAgOiAoZmlsZXNba2V5XSBhcyAoKSA9PiBQcm9taXNlPFJvdXRlRXhwb3J0Pik7XG5cbiAgICAgIGNvbnN0IHNlZ21lbnRzID0ga2V5XG4gICAgICAgIC5yZXBsYWNlKFxuICAgICAgICAgIC9eXFwvKC4qPylcXC9yb3V0ZXN8XlxcLyguKj8pXFwvcGFnZXN8XFwvYXBwXFwvcm91dGVzfChcXC5wYWdlXFwuKGpzfHRzKSQpfChcXC4odHN8bWQpJCkvZyxcbiAgICAgICAgICAnJ1xuICAgICAgICApXG4gICAgICAgIC5yZXBsYWNlKC9cXFtcXC57M30uK1xcXS8sICcqKicpXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoW15cXF1dKylcXF0vZywgJzokMScpXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIHNlZ21lbnRzLnJlZHVjZSgocGFyZW50LCBzZWdtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBwYXRoID0gc2VnbWVudFxuICAgICAgICAgIC5yZXBsYWNlKC9pbmRleHxeXFwoLio/XFwpJC9nLCAnJylcbiAgICAgICAgICAucmVwbGFjZSgvXFwuL2csICcvJyk7XG4gICAgICAgIGNvbnN0IGlzSW5kZXggPSAhcGF0aDtcbiAgICAgICAgY29uc3QgaXNDYXRjaGFsbCA9IHBhdGggPT09ICcqKic7XG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IGlzSW5kZXggPyAnZnVsbCcgOiAncHJlZml4JztcbiAgICAgICAgY29uc3Qgcm9vdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCBsZWFmID0gaW5kZXggPT09IHNlZ21lbnRzLmxlbmd0aCAtIDEgJiYgc2VnbWVudHMubGVuZ3RoID4gMTtcbiAgICAgICAgY29uc3Qgbm9kZSA9ICFyb290ICYmICFsZWFmO1xuICAgICAgICBjb25zdCBpbnNlcnQgPSAvXlxcd3xcXC8vLnRlc3QocGF0aCkgJiYgIWlzQ2F0Y2hhbGwgPyAndW5zaGlmdCcgOiAncHVzaCc7XG5cbiAgICAgICAgaWYgKHJvb3QpIHtcbiAgICAgICAgICBjb25zdCBkeW5hbWljID0gcGF0aC5zdGFydHNXaXRoKCc6Jyk7XG4gICAgICAgICAgaWYgKGR5bmFtaWMpIHJldHVybiBwYXJlbnQ7XG5cbiAgICAgICAgICBjb25zdCBsYXN0ID0gc2VnbWVudHMubGVuZ3RoID09PSAxO1xuICAgICAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3V0ZSA9IHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgcGF0aE1hdGNoLFxuICAgICAgICAgICAgICBfbW9kdWxlOiAoKSA9PiBtb2R1bGUoKSxcbiAgICAgICAgICAgICAgbG9hZENoaWxkcmVuOiAoKSA9PlxuICAgICAgICAgICAgICAgIG1vZHVsZSgpLnRoZW4oKG0pID0+IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogbS5kZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgICAuLi50b1JvdXRlQ29uZmlnKG0ucm91dGVNZXRhIGFzIFJvdXRlTWV0YSB8IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcm91dGVzPy5baW5zZXJ0XShuZXdSb3V0ZSBhcyBSb3V0ZSk7XG4gICAgICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyb290IHx8IG5vZGUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0gcm9vdCA/IHJvdXRlcyA6IHBhcmVudC5fY2hpbGRyZW47XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBjdXJyZW50Py5maW5kKChyb3V0ZTogYW55KSA9PiByb3V0ZS5wYXRoID09PSBwYXRoKTtcblxuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgaWYgKCFmb3VuZC5fY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgZm91bmQuX2NoaWxkcmVuID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvdW5kLnBhdGhNYXRjaCA9IHBhdGhNYXRjaDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudD8uW2luc2VydF0oe1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBwYXRoTWF0Y2gsXG4gICAgICAgICAgICAgIF9tb2R1bGU6ICgpID0+IG1vZHVsZSgpLFxuICAgICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+XG4gICAgICAgICAgICAgICAgbW9kdWxlKCkudGhlbigobSkgPT4gW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBtLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRvUm91dGVDb25maWcobS5yb3V0ZU1ldGEgYXMgUm91dGVNZXRhIHwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZm91bmQgfHxcbiAgICAgICAgICAgIChjdXJyZW50Py5baW5zZXJ0ID09PSAndW5zaGlmdCcgPyAwIDogY3VycmVudC5sZW5ndGggLSAxXSBhcyBSb3V0ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxlYWYpIHtcbiAgICAgICAgICBwYXJlbnQ/Ll9jaGlsZHJlbj8uW2luc2VydF0oe1xuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIHBhdGhNYXRjaCxcbiAgICAgICAgICAgIF9tb2R1bGU6ICgpID0+IG1vZHVsZSgpLFxuICAgICAgICAgICAgbG9hZENoaWxkcmVuOiAoKSA9PlxuICAgICAgICAgICAgICBtb2R1bGUoKS50aGVuKChtKSA9PiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICAgIC4uLnRvUm91dGVDb25maWcobS5yb3V0ZU1ldGEgYXMgUm91dGVNZXRhIHwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnQuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgcGFyZW50LmxvYWRDb21wb25lbnQgPSAoKSA9PlxuICAgICAgICAgICAgcGFyZW50Ll9tb2R1bGUoKS50aGVuKChtOiBSb3V0ZUV4cG9ydCkgPT4gbS5kZWZhdWx0KTtcbiAgICAgICAgICBwYXJlbnQubG9hZENoaWxkcmVuID0gKCkgPT5cbiAgICAgICAgICAgIHBhcmVudC5fbW9kdWxlKCkudGhlbigobTogUm91dGVFeHBvcnQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBwYXJlbnQuX2NoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgLi4udG9Sb3V0ZUNvbmZpZyhtLnJvdXRlTWV0YSBhcyBSb3V0ZU1ldGEgfCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9LCB7fSBhcyBSb3V0ZSAmIHsgX21vZHVsZTogKCkgPT4gUHJvbWlzZTxSb3V0ZUV4cG9ydD47IF9jaGlsZHJlbjogYW55W10gfSk7XG5cbiAgICAgIHJldHVybiByb3V0ZXM7XG4gICAgfSxcbiAgICBbXVxuICApO1xuXG4gIHJldHVybiByb3V0ZUNvbmZpZ3M7XG59XG5cbmV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlW10gPSBbLi4uZ2V0Um91dGVzKHsgLi4uRklMRVMsIC4uLkNPTlRFTlRfRklMRVMgfSldO1xuIl19
|
|
@@ -106,13 +106,15 @@ function getRoutes(files) {
|
|
|
106
106
|
? toMarkdownModule(files[key])
|
|
107
107
|
: files[key];
|
|
108
108
|
const segments = key
|
|
109
|
-
.replace(/^\/(.*?)\/routes|^\/(.*?)\/pages|\/app\/routes
|
|
109
|
+
.replace(/^\/(.*?)\/routes|^\/(.*?)\/pages|\/app\/routes|(\.page\.(js|ts)$)|(\.(ts|md)$)/g, '')
|
|
110
110
|
.replace(/\[\.{3}.+\]/, '**')
|
|
111
111
|
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
112
112
|
.split('/')
|
|
113
113
|
.filter(Boolean);
|
|
114
114
|
segments.reduce((parent, segment, index) => {
|
|
115
|
-
const path = segment
|
|
115
|
+
const path = segment
|
|
116
|
+
.replace(/index|^\(.*?\)$/g, '')
|
|
117
|
+
.replace(/\./g, '/');
|
|
116
118
|
const isIndex = !path;
|
|
117
119
|
const isCatchall = path === '**';
|
|
118
120
|
const pathMatch = isIndex ? 'full' : 'prefix';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/meta-tags.ts","../../../../packages/router/src/lib/route-config.ts","../../../../packages/router/src/lib/markdown-helpers.ts","../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-router.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["import { inject } from '@angular/core';\nimport { Meta, MetaDefinition as NgMetaTag } from '@angular/platform-browser';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nexport const ROUTE_META_TAGS_KEY = Symbol(\n '@analogjs/router Route Meta Tags Key'\n);\n\nconst CHARSET_KEY = 'charset';\nconst HTTP_EQUIV_KEY = 'httpEquiv';\n// httpEquiv selector key needs to be in kebab case format\nconst HTTP_EQUIV_SELECTOR_KEY = 'http-equiv';\nconst NAME_KEY = 'name';\nconst PROPERTY_KEY = 'property';\nconst CONTENT_KEY = 'content';\n\nexport type MetaTag =\n | (CharsetMetaTag & ExcludeRestMetaTagKeys<typeof CHARSET_KEY>)\n | (HttpEquivMetaTag & ExcludeRestMetaTagKeys<typeof HTTP_EQUIV_KEY>)\n | (NameMetaTag & ExcludeRestMetaTagKeys<typeof NAME_KEY>)\n | (PropertyMetaTag & ExcludeRestMetaTagKeys<typeof PROPERTY_KEY>);\n\ntype CharsetMetaTag = { [CHARSET_KEY]: string };\ntype HttpEquivMetaTag = { [HTTP_EQUIV_KEY]: string; [CONTENT_KEY]: string };\ntype NameMetaTag = { [NAME_KEY]: string; [CONTENT_KEY]: string };\ntype PropertyMetaTag = { [PROPERTY_KEY]: string; [CONTENT_KEY]: string };\n\ntype MetaTagKey =\n | typeof CHARSET_KEY\n | typeof HTTP_EQUIV_KEY\n | typeof NAME_KEY\n | typeof PROPERTY_KEY;\ntype ExcludeRestMetaTagKeys<Key extends MetaTagKey> = {\n [K in Exclude<MetaTagKey, Key>]?: never;\n};\n\ntype MetaTagSelector =\n | typeof CHARSET_KEY\n | `${\n | typeof HTTP_EQUIV_SELECTOR_KEY\n | typeof NAME_KEY\n | typeof PROPERTY_KEY}=\"${string}\"`;\ntype MetaTagMap = Record<MetaTagSelector, MetaTag>;\n\nexport function updateMetaTagsOnRouteChange(): void {\n const router = inject(Router);\n const metaService = inject(Meta);\n\n router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(() => {\n const metaTagMap = getMetaTagMap(router.routerState.snapshot.root);\n\n for (const metaTagSelector in metaTagMap) {\n const metaTag = metaTagMap[\n metaTagSelector as MetaTagSelector\n ] as NgMetaTag;\n metaService.updateTag(metaTag, metaTagSelector);\n }\n });\n}\n\nfunction getMetaTagMap(route: ActivatedRouteSnapshot): MetaTagMap {\n const metaTagMap = {} as MetaTagMap;\n let currentRoute: ActivatedRouteSnapshot | null = route;\n\n while (currentRoute) {\n const metaTags: MetaTag[] = currentRoute.data[ROUTE_META_TAGS_KEY] ?? [];\n for (const metaTag of metaTags) {\n metaTagMap[getMetaTagSelector(metaTag)] = metaTag;\n }\n\n currentRoute = currentRoute.firstChild;\n }\n\n return metaTagMap;\n}\n\nfunction getMetaTagSelector(metaTag: MetaTag): MetaTagSelector {\n if (metaTag.name) {\n return `${NAME_KEY}=\"${metaTag.name}\"`;\n }\n\n if (metaTag.property) {\n return `${PROPERTY_KEY}=\"${metaTag.property}\"`;\n }\n\n if (metaTag.httpEquiv) {\n return `${HTTP_EQUIV_SELECTOR_KEY}=\"${metaTag.httpEquiv}\"`;\n }\n\n return CHARSET_KEY;\n}\n","import { RedirectRouteMeta, RouteConfig, RouteMeta } from './models';\nimport { ROUTE_META_TAGS_KEY } from './meta-tags';\n\nexport function toRouteConfig(routeMeta: RouteMeta | undefined): RouteConfig {\n if (!routeMeta) {\n return {};\n }\n\n if (isRedirectRouteMeta(routeMeta)) {\n return routeMeta;\n }\n\n const { meta, ...routeConfig } = routeMeta;\n\n if (Array.isArray(meta)) {\n routeConfig.data = { ...routeConfig.data, [ROUTE_META_TAGS_KEY]: meta };\n } else if (typeof meta === 'function') {\n routeConfig.resolve = {\n ...routeConfig.resolve,\n [ROUTE_META_TAGS_KEY]: meta,\n };\n }\n\n return routeConfig;\n}\n\nfunction isRedirectRouteMeta(\n routeMeta: RouteMeta\n): routeMeta is RedirectRouteMeta {\n return !!routeMeta.redirectTo;\n}\n","import { RouteExport } from './models';\n\nexport function toMarkdownModule(\n markdownFileFactory: () => Promise<string>\n): () => Promise<RouteExport> {\n return () =>\n Promise.all([import('@analogjs/content'), markdownFileFactory()]).then(\n ([{ parseRawContentFile, MarkdownComponent }, markdownFile]) => {\n const { content, attributes } = parseRawContentFile(markdownFile);\n const { title, meta } = attributes;\n\n return {\n default: MarkdownComponent,\n routeMeta: { data: { _analogContent: content }, title, meta },\n };\n }\n );\n}\n","/// <reference types=\"vite/client\" />\n\nimport type { Route } from '@angular/router';\n\nimport { RouteExport, RouteMeta } from './models';\nimport { toRouteConfig } from './route-config';\nimport { toMarkdownModule } from './markdown-helpers';\n\nconst FILES = import.meta.glob<RouteExport>([\n '/app/routes/**/*.ts',\n '/src/app/routes/**/*.ts',\n '/src/app/pages/**/*.page.ts',\n]);\n\nconst CONTENT_FILES = import.meta.glob<string>(\n ['/src/app/routes/**/*.md', '/src/app/pages/**/*.md'],\n {\n as: 'raw',\n }\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(\n files: Record<string, () => Promise<RouteExport | string>>\n) {\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: () => Promise<RouteExport> = key.endsWith('.md')\n ? toMarkdownModule(files[key] as () => Promise<string>)\n : (files[key] as () => Promise<RouteExport>);\n\n const segments = key\n .replace(\n /^\\/(.*?)\\/routes|^\\/(.*?)\\/pages|\\/app\\/routes|(\\.page\\.(js|ts)$)|(\\.(ts|md)$)/g,\n ''\n )\n .replace(/\\[\\.{3}.+\\]/, '**')\n .replace(/\\[([^\\]]+)\\]/g, ':$1')\n .split('/')\n .filter(Boolean);\n\n segments.reduce((parent, segment, index) => {\n const path = segment\n .replace(/index|^\\(.*?\\)$/g, '')\n .replace(/\\./g, '/');\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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, ...CONTENT_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 * @deprecated Use `RouteMeta` type instead.\n * For more info see: https://github.com/analogjs/analog/issues/223\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 {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n makeEnvironmentProviders,\n Provider,\n} from '@angular/core';\nimport { provideRouter, RouterFeatures } from '@angular/router';\n\nimport { routes } from './routes';\nimport { updateMetaTagsOnRouteChange } from './meta-tags';\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 function provideFileRouter(\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n // TODO: remove type casting after Angular >=15.1.1 upgrade\n // https://github.com/angular/angular/pull/48720\n (\n provideRouter(routes, ...features) as unknown as {\n ɵproviders: Provider[];\n }\n ).ɵproviders,\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => updateMetaTagsOnRouteChange(),\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/router",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0-beta.0",
|
|
4
4
|
"description": "Filesystem-based routing for Angular",
|
|
5
5
|
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
6
6
|
"keywords": [
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"url": "https://github.com/analogjs/analog.git"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
|
-
"@angular/core": "^
|
|
23
|
-
"@angular/router": "^
|
|
22
|
+
"@angular/core": "^15.0.0 || ^16.0.0-next.0",
|
|
23
|
+
"@angular/router": "^15.0.0 || ^16.0.0-next.0"
|
|
24
24
|
},
|
|
25
25
|
"optionalDependencies": {
|
|
26
26
|
"@analogjs/content": "latest"
|
|
@@ -28,11 +28,7 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"tslib": "^2.0.0"
|
|
30
30
|
},
|
|
31
|
-
"module": "
|
|
32
|
-
"es2020": "fesm2020/analogjs-router.mjs",
|
|
33
|
-
"esm2020": "esm2020/analogjs-router.mjs",
|
|
34
|
-
"fesm2020": "fesm2020/analogjs-router.mjs",
|
|
35
|
-
"fesm2015": "fesm2015/analogjs-router.mjs",
|
|
31
|
+
"module": "fesm2022/analogjs-router.mjs",
|
|
36
32
|
"typings": "index.d.ts",
|
|
37
33
|
"exports": {
|
|
38
34
|
"./package.json": {
|
|
@@ -40,11 +36,9 @@
|
|
|
40
36
|
},
|
|
41
37
|
".": {
|
|
42
38
|
"types": "./index.d.ts",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"node": "./fesm2015/analogjs-router.mjs",
|
|
47
|
-
"default": "./fesm2020/analogjs-router.mjs"
|
|
39
|
+
"esm2022": "./esm2022/analogjs-router.mjs",
|
|
40
|
+
"esm": "./esm2022/analogjs-router.mjs",
|
|
41
|
+
"default": "./fesm2022/analogjs-router.mjs"
|
|
48
42
|
}
|
|
49
43
|
},
|
|
50
44
|
"sideEffects": false
|
package/esm2020/lib/routes.mjs
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
2
|
-
import { toRouteConfig } from './route-config';
|
|
3
|
-
import { toMarkdownModule } from './markdown-helpers';
|
|
4
|
-
const FILES = import.meta.glob([
|
|
5
|
-
'/app/routes/**/*.ts',
|
|
6
|
-
'/src/app/routes/**/*.ts',
|
|
7
|
-
'/src/app/pages/**/*.page.ts',
|
|
8
|
-
]);
|
|
9
|
-
const CONTENT_FILES = import.meta.glob(['/src/app/routes/**/*.md', '/src/app/pages/**/*.md'], {
|
|
10
|
-
as: 'raw',
|
|
11
|
-
});
|
|
12
|
-
/**
|
|
13
|
-
* Function used to parse list of files and return
|
|
14
|
-
* configuration of routes.
|
|
15
|
-
*
|
|
16
|
-
* @param files
|
|
17
|
-
* @returns Array of routes
|
|
18
|
-
*/
|
|
19
|
-
export function getRoutes(files) {
|
|
20
|
-
const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);
|
|
21
|
-
const routeConfigs = ROUTES.reduce((routes, key) => {
|
|
22
|
-
const module = key.endsWith('.md')
|
|
23
|
-
? toMarkdownModule(files[key])
|
|
24
|
-
: files[key];
|
|
25
|
-
const segments = key
|
|
26
|
-
.replace(/^\/(.*?)\/routes|^\/(.*?)\/pages|\/app\/routes|\.page|\.(js|ts|md)$/g, '')
|
|
27
|
-
.replace(/\[\.{3}.+\]/, '**')
|
|
28
|
-
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
29
|
-
.split('/')
|
|
30
|
-
.filter(Boolean);
|
|
31
|
-
segments.reduce((parent, segment, index) => {
|
|
32
|
-
const path = segment.replace(/index|^\(.*?\)$/g, '').replace('.', '/');
|
|
33
|
-
const isIndex = !path;
|
|
34
|
-
const isCatchall = path === '**';
|
|
35
|
-
const pathMatch = isIndex ? 'full' : 'prefix';
|
|
36
|
-
const root = index === 0;
|
|
37
|
-
const leaf = index === segments.length - 1 && segments.length > 1;
|
|
38
|
-
const node = !root && !leaf;
|
|
39
|
-
const insert = /^\w|\//.test(path) && !isCatchall ? 'unshift' : 'push';
|
|
40
|
-
if (root) {
|
|
41
|
-
const dynamic = path.startsWith(':');
|
|
42
|
-
if (dynamic)
|
|
43
|
-
return parent;
|
|
44
|
-
const last = segments.length === 1;
|
|
45
|
-
if (last) {
|
|
46
|
-
const newRoute = {
|
|
47
|
-
path,
|
|
48
|
-
pathMatch,
|
|
49
|
-
_module: () => module(),
|
|
50
|
-
loadChildren: () => module().then((m) => [
|
|
51
|
-
{
|
|
52
|
-
path: '',
|
|
53
|
-
component: m.default,
|
|
54
|
-
...toRouteConfig(m.routeMeta),
|
|
55
|
-
},
|
|
56
|
-
]),
|
|
57
|
-
};
|
|
58
|
-
routes?.[insert](newRoute);
|
|
59
|
-
return parent;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (root || node) {
|
|
63
|
-
const current = root ? routes : parent._children;
|
|
64
|
-
const found = current?.find((route) => route.path === path);
|
|
65
|
-
if (found) {
|
|
66
|
-
if (!found._children) {
|
|
67
|
-
found._children = [];
|
|
68
|
-
}
|
|
69
|
-
found.pathMatch = pathMatch;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
current?.[insert]({
|
|
73
|
-
path,
|
|
74
|
-
pathMatch,
|
|
75
|
-
_module: () => module(),
|
|
76
|
-
loadChildren: () => module().then((m) => [
|
|
77
|
-
{
|
|
78
|
-
path: '',
|
|
79
|
-
component: m.default,
|
|
80
|
-
...toRouteConfig(m.routeMeta),
|
|
81
|
-
},
|
|
82
|
-
]),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
return (found ||
|
|
86
|
-
current?.[insert === 'unshift' ? 0 : current.length - 1]);
|
|
87
|
-
}
|
|
88
|
-
if (leaf) {
|
|
89
|
-
parent?._children?.[insert]({
|
|
90
|
-
path,
|
|
91
|
-
pathMatch,
|
|
92
|
-
_module: () => module(),
|
|
93
|
-
loadChildren: () => module().then((m) => [
|
|
94
|
-
{
|
|
95
|
-
path: '',
|
|
96
|
-
component: m.default,
|
|
97
|
-
...toRouteConfig(m.routeMeta),
|
|
98
|
-
},
|
|
99
|
-
]),
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
if (parent._children) {
|
|
103
|
-
parent.loadComponent = () => parent._module().then((m) => m.default);
|
|
104
|
-
parent.loadChildren = () => parent._module().then((m) => {
|
|
105
|
-
return [
|
|
106
|
-
{
|
|
107
|
-
path: '',
|
|
108
|
-
children: parent._children,
|
|
109
|
-
...toRouteConfig(m.routeMeta),
|
|
110
|
-
},
|
|
111
|
-
];
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
return parent;
|
|
115
|
-
}, {});
|
|
116
|
-
return routes;
|
|
117
|
-
}, []);
|
|
118
|
-
return routeConfigs;
|
|
119
|
-
}
|
|
120
|
-
export const routes = [...getRoutes({ ...FILES, ...CONTENT_FILES })];
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3NyYy9saWIvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUtyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWM7SUFDMUMscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6Qiw2QkFBNkI7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3BDLENBQUMseUJBQXlCLEVBQUUsd0JBQXdCLENBQUMsRUFDckQ7SUFDRSxFQUFFLEVBQUUsS0FBSztDQUNWLENBQ0YsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQTBEO0lBRTFELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxNQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQStCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzVELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUEwQixDQUFDO1lBQ3ZELENBQUMsQ0FBRSxLQUFLLENBQUMsR0FBRyxDQUFnQyxDQUFDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLEdBQUc7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LENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUN6QixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUU7b0JBQ3ZDLE9BQU87d0JBQ0w7NEJBQ0UsSUFBSSxFQUFFLEVBQUU7NEJBQ1IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxTQUFTOzRCQUMxQixHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBa0MsQ0FBQzt5QkFDdkQ7cUJBQ0YsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEVBQXVFLENBQUMsQ0FBQztRQUU1RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZS9jbGllbnRcIiAvPlxuXG5pbXBvcnQgdHlwZSB7IFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgUm91dGVFeHBvcnQsIFJvdXRlTWV0YSB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IHRvUm91dGVDb25maWcgfSBmcm9tICcuL3JvdXRlLWNvbmZpZyc7XG5pbXBvcnQgeyB0b01hcmtkb3duTW9kdWxlIH0gZnJvbSAnLi9tYXJrZG93bi1oZWxwZXJzJztcblxuY29uc3QgRklMRVMgPSBpbXBvcnQubWV0YS5nbG9iPFJvdXRlRXhwb3J0PihbXG4gICcvYXBwL3JvdXRlcy8qKi8qLnRzJyxcbiAgJy9zcmMvYXBwL3JvdXRlcy8qKi8qLnRzJyxcbiAgJy9zcmMvYXBwL3BhZ2VzLyoqLyoucGFnZS50cycsXG5dKTtcblxuY29uc3QgQ09OVEVOVF9GSUxFUyA9IGltcG9ydC5tZXRhLmdsb2I8c3RyaW5nPihcbiAgWycvc3JjL2FwcC9yb3V0ZXMvKiovKi5tZCcsICcvc3JjL2FwcC9wYWdlcy8qKi8qLm1kJ10sXG4gIHtcbiAgICBhczogJ3JhdycsXG4gIH1cbik7XG5cbi8qKlxuICogRnVuY3Rpb24gdXNlZCB0byBwYXJzZSBsaXN0IG9mIGZpbGVzIGFuZCByZXR1cm5cbiAqIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGVzLlxuICpcbiAqIEBwYXJhbSBmaWxlc1xuICogQHJldHVybnMgQXJyYXkgb2Ygcm91dGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZXMoXG4gIGZpbGVzOiBSZWNvcmQ8c3RyaW5nLCAoKSA9PiBQcm9taXNlPFJvdXRlRXhwb3J0IHwgc3RyaW5nPj5cbikge1xuICBjb25zdCBST1VURVMgPSBPYmplY3Qua2V5cyhmaWxlcykuc29ydCgoYSwgYikgPT4gYS5sZW5ndGggLSBiLmxlbmd0aCk7XG5cbiAgY29uc3Qgcm91dGVDb25maWdzID0gUk9VVEVTLnJlZHVjZTxSb3V0ZVtdPihcbiAgICAocm91dGVzOiBSb3V0ZVtdLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbW9kdWxlOiAoKSA9PiBQcm9taXNlPFJvdXRlRXhwb3J0PiA9IGtleS5lbmRzV2l0aCgnLm1kJylcbiAgICAgICAgPyB0b01hcmtkb3duTW9kdWxlKGZpbGVzW2tleV0gYXMgKCkgPT4gUHJvbWlzZTxzdHJpbmc+KVxuICAgICAgICA6IChmaWxlc1trZXldIGFzICgpID0+IFByb21pc2U8Um91dGVFeHBvcnQ+KTtcblxuICAgICAgY29uc3Qgc2VnbWVudHMgPSBrZXlcbiAgICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgL15cXC8oLio/KVxcL3JvdXRlc3xeXFwvKC4qPylcXC9wYWdlc3xcXC9hcHBcXC9yb3V0ZXN8XFwucGFnZXxcXC4oanN8dHN8bWQpJC9nLFxuICAgICAgICAgICcnXG4gICAgICAgIClcbiAgICAgICAgLnJlcGxhY2UoL1xcW1xcLnszfS4rXFxdLywgJyoqJylcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhbXlxcXV0rKVxcXS9nLCAnOiQxJylcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgc2VnbWVudHMucmVkdWNlKChwYXJlbnQsIHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBzZWdtZW50LnJlcGxhY2UoL2luZGV4fF5cXCguKj9cXCkkL2csICcnKS5yZXBsYWNlKCcuJywgJy8nKTtcbiAgICAgICAgY29uc3QgaXNJbmRleCA9ICFwYXRoO1xuICAgICAgICBjb25zdCBpc0NhdGNoYWxsID0gcGF0aCA9PT0gJyoqJztcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gaXNJbmRleCA/ICdmdWxsJyA6ICdwcmVmaXgnO1xuICAgICAgICBjb25zdCByb290ID0gaW5kZXggPT09IDA7XG4gICAgICAgIGNvbnN0IGxlYWYgPSBpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMSAmJiBzZWdtZW50cy5sZW5ndGggPiAxO1xuICAgICAgICBjb25zdCBub2RlID0gIXJvb3QgJiYgIWxlYWY7XG4gICAgICAgIGNvbnN0IGluc2VydCA9IC9eXFx3fFxcLy8udGVzdChwYXRoKSAmJiAhaXNDYXRjaGFsbCA/ICd1bnNoaWZ0JyA6ICdwdXNoJztcblxuICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgIGNvbnN0IGR5bmFtaWMgPSBwYXRoLnN0YXJ0c1dpdGgoJzonKTtcbiAgICAgICAgICBpZiAoZHluYW1pYykgcmV0dXJuIHBhcmVudDtcblxuICAgICAgICAgIGNvbnN0IGxhc3QgPSBzZWdtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1JvdXRlID0ge1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBwYXRoTWF0Y2gsXG4gICAgICAgICAgICAgIF9tb2R1bGU6ICgpID0+IG1vZHVsZSgpLFxuICAgICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+XG4gICAgICAgICAgICAgICAgbW9kdWxlKCkudGhlbigobSkgPT4gW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBtLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRvUm91dGVDb25maWcobS5yb3V0ZU1ldGEgYXMgUm91dGVNZXRhIHwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByb3V0ZXM/LltpbnNlcnRdKG5ld1JvdXRlIGFzIFJvdXRlKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJvb3QgfHwgbm9kZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSByb290ID8gcm91dGVzIDogcGFyZW50Ll9jaGlsZHJlbjtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGN1cnJlbnQ/LmZpbmQoKHJvdXRlOiBhbnkpID0+IHJvdXRlLnBhdGggPT09IHBhdGgpO1xuXG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICBpZiAoIWZvdW5kLl9jaGlsZHJlbikge1xuICAgICAgICAgICAgICBmb3VuZC5fY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm91bmQucGF0aE1hdGNoID0gcGF0aE1hdGNoO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50Py5baW5zZXJ0XSh7XG4gICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgIHBhdGhNYXRjaCxcbiAgICAgICAgICAgICAgX21vZHVsZTogKCkgPT4gbW9kdWxlKCksXG4gICAgICAgICAgICAgIGxvYWRDaGlsZHJlbjogKCkgPT5cbiAgICAgICAgICAgICAgICBtb2R1bGUoKS50aGVuKChtKSA9PiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICAgICAgLi4udG9Sb3V0ZUNvbmZpZyhtLnJvdXRlTWV0YSBhcyBSb3V0ZU1ldGEgfCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmb3VuZCB8fFxuICAgICAgICAgICAgKGN1cnJlbnQ/LltpbnNlcnQgPT09ICd1bnNoaWZ0JyA/IDAgOiBjdXJyZW50Lmxlbmd0aCAtIDFdIGFzIFJvdXRlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVhZikge1xuICAgICAgICAgIHBhcmVudD8uX2NoaWxkcmVuPy5baW5zZXJ0XSh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGF0aE1hdGNoLFxuICAgICAgICAgICAgX21vZHVsZTogKCkgPT4gbW9kdWxlKCksXG4gICAgICAgICAgICBsb2FkQ2hpbGRyZW46ICgpID0+XG4gICAgICAgICAgICAgIG1vZHVsZSgpLnRoZW4oKG0pID0+IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogbS5kZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgLi4udG9Sb3V0ZUNvbmZpZyhtLnJvdXRlTWV0YSBhcyBSb3V0ZU1ldGEgfCB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmVudC5fY2hpbGRyZW4pIHtcbiAgICAgICAgICBwYXJlbnQubG9hZENvbXBvbmVudCA9ICgpID0+XG4gICAgICAgICAgICBwYXJlbnQuX21vZHVsZSgpLnRoZW4oKG06IFJvdXRlRXhwb3J0KSA9PiBtLmRlZmF1bHQpO1xuICAgICAgICAgIHBhcmVudC5sb2FkQ2hpbGRyZW4gPSAoKSA9PlxuICAgICAgICAgICAgcGFyZW50Ll9tb2R1bGUoKS50aGVuKChtOiBSb3V0ZUV4cG9ydCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHBhcmVudC5fY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAuLi50b1JvdXRlQ29uZmlnKG0ucm91dGVNZXRhIGFzIFJvdXRlTWV0YSB8IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgIH0sIHt9IGFzIFJvdXRlICYgeyBfbW9kdWxlOiAoKSA9PiBQcm9taXNlPFJvdXRlRXhwb3J0PjsgX2NoaWxkcmVuOiBhbnlbXSB9KTtcblxuICAgICAgcmV0dXJuIHJvdXRlcztcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgcmV0dXJuIHJvdXRlQ29uZmlncztcbn1cblxuZXhwb3J0IGNvbnN0IHJvdXRlczogUm91dGVbXSA9IFsuLi5nZXRSb3V0ZXMoeyAuLi5GSUxFUywgLi4uQ09OVEVOVF9GSUxFUyB9KV07XG4iXX0=
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
import { __rest } from 'tslib';
|
|
2
|
-
import { inject, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER } from '@angular/core';
|
|
3
|
-
import { Meta } from '@angular/platform-browser';
|
|
4
|
-
import { Router, NavigationEnd, ActivatedRoute, provideRouter } from '@angular/router';
|
|
5
|
-
import { filter } from 'rxjs/operators';
|
|
6
|
-
|
|
7
|
-
const ROUTE_META_TAGS_KEY = Symbol('@analogjs/router Route Meta Tags Key');
|
|
8
|
-
const CHARSET_KEY = 'charset';
|
|
9
|
-
const HTTP_EQUIV_KEY = 'httpEquiv';
|
|
10
|
-
// httpEquiv selector key needs to be in kebab case format
|
|
11
|
-
const HTTP_EQUIV_SELECTOR_KEY = 'http-equiv';
|
|
12
|
-
const NAME_KEY = 'name';
|
|
13
|
-
const PROPERTY_KEY = 'property';
|
|
14
|
-
const CONTENT_KEY = 'content';
|
|
15
|
-
function updateMetaTagsOnRouteChange() {
|
|
16
|
-
const router = inject(Router);
|
|
17
|
-
const metaService = inject(Meta);
|
|
18
|
-
router.events
|
|
19
|
-
.pipe(filter((event) => event instanceof NavigationEnd))
|
|
20
|
-
.subscribe(() => {
|
|
21
|
-
const metaTagMap = getMetaTagMap(router.routerState.snapshot.root);
|
|
22
|
-
for (const metaTagSelector in metaTagMap) {
|
|
23
|
-
const metaTag = metaTagMap[metaTagSelector];
|
|
24
|
-
metaService.updateTag(metaTag, metaTagSelector);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
function getMetaTagMap(route) {
|
|
29
|
-
var _a;
|
|
30
|
-
const metaTagMap = {};
|
|
31
|
-
let currentRoute = route;
|
|
32
|
-
while (currentRoute) {
|
|
33
|
-
const metaTags = (_a = currentRoute.data[ROUTE_META_TAGS_KEY]) !== null && _a !== void 0 ? _a : [];
|
|
34
|
-
for (const metaTag of metaTags) {
|
|
35
|
-
metaTagMap[getMetaTagSelector(metaTag)] = metaTag;
|
|
36
|
-
}
|
|
37
|
-
currentRoute = currentRoute.firstChild;
|
|
38
|
-
}
|
|
39
|
-
return metaTagMap;
|
|
40
|
-
}
|
|
41
|
-
function getMetaTagSelector(metaTag) {
|
|
42
|
-
if (metaTag.name) {
|
|
43
|
-
return `${NAME_KEY}="${metaTag.name}"`;
|
|
44
|
-
}
|
|
45
|
-
if (metaTag.property) {
|
|
46
|
-
return `${PROPERTY_KEY}="${metaTag.property}"`;
|
|
47
|
-
}
|
|
48
|
-
if (metaTag.httpEquiv) {
|
|
49
|
-
return `${HTTP_EQUIV_SELECTOR_KEY}="${metaTag.httpEquiv}"`;
|
|
50
|
-
}
|
|
51
|
-
return CHARSET_KEY;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function toRouteConfig(routeMeta) {
|
|
55
|
-
if (!routeMeta) {
|
|
56
|
-
return {};
|
|
57
|
-
}
|
|
58
|
-
if (isRedirectRouteMeta(routeMeta)) {
|
|
59
|
-
return routeMeta;
|
|
60
|
-
}
|
|
61
|
-
const { meta } = routeMeta, routeConfig = __rest(routeMeta, ["meta"]);
|
|
62
|
-
if (Array.isArray(meta)) {
|
|
63
|
-
routeConfig.data = Object.assign(Object.assign({}, routeConfig.data), { [ROUTE_META_TAGS_KEY]: meta });
|
|
64
|
-
}
|
|
65
|
-
else if (typeof meta === 'function') {
|
|
66
|
-
routeConfig.resolve = Object.assign(Object.assign({}, routeConfig.resolve), { [ROUTE_META_TAGS_KEY]: meta });
|
|
67
|
-
}
|
|
68
|
-
return routeConfig;
|
|
69
|
-
}
|
|
70
|
-
function isRedirectRouteMeta(routeMeta) {
|
|
71
|
-
return !!routeMeta.redirectTo;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function toMarkdownModule(markdownFileFactory) {
|
|
75
|
-
return () => Promise.all([import('@analogjs/content'), markdownFileFactory()]).then(([{ parseRawContentFile, MarkdownComponent }, markdownFile]) => {
|
|
76
|
-
const { content, attributes } = parseRawContentFile(markdownFile);
|
|
77
|
-
const { title, meta } = attributes;
|
|
78
|
-
return {
|
|
79
|
-
default: MarkdownComponent,
|
|
80
|
-
routeMeta: { data: { _analogContent: content }, title, meta },
|
|
81
|
-
};
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/// <reference types="vite/client" />
|
|
86
|
-
const FILES = import.meta.glob([
|
|
87
|
-
'/app/routes/**/*.ts',
|
|
88
|
-
'/src/app/routes/**/*.ts',
|
|
89
|
-
'/src/app/pages/**/*.page.ts',
|
|
90
|
-
]);
|
|
91
|
-
const CONTENT_FILES = import.meta.glob(['/src/app/routes/**/*.md', '/src/app/pages/**/*.md'], {
|
|
92
|
-
as: 'raw',
|
|
93
|
-
});
|
|
94
|
-
/**
|
|
95
|
-
* Function used to parse list of files and return
|
|
96
|
-
* configuration of routes.
|
|
97
|
-
*
|
|
98
|
-
* @param files
|
|
99
|
-
* @returns Array of routes
|
|
100
|
-
*/
|
|
101
|
-
function getRoutes(files) {
|
|
102
|
-
const ROUTES = Object.keys(files).sort((a, b) => a.length - b.length);
|
|
103
|
-
const routeConfigs = ROUTES.reduce((routes, key) => {
|
|
104
|
-
const module = key.endsWith('.md')
|
|
105
|
-
? toMarkdownModule(files[key])
|
|
106
|
-
: files[key];
|
|
107
|
-
const segments = key
|
|
108
|
-
.replace(/^\/(.*?)\/routes|^\/(.*?)\/pages|\/app\/routes|\.page|\.(js|ts|md)$/g, '')
|
|
109
|
-
.replace(/\[\.{3}.+\]/, '**')
|
|
110
|
-
.replace(/\[([^\]]+)\]/g, ':$1')
|
|
111
|
-
.split('/')
|
|
112
|
-
.filter(Boolean);
|
|
113
|
-
segments.reduce((parent, segment, index) => {
|
|
114
|
-
var _a;
|
|
115
|
-
const path = segment.replace(/index|^\(.*?\)$/g, '').replace('.', '/');
|
|
116
|
-
const isIndex = !path;
|
|
117
|
-
const isCatchall = path === '**';
|
|
118
|
-
const pathMatch = isIndex ? 'full' : 'prefix';
|
|
119
|
-
const root = index === 0;
|
|
120
|
-
const leaf = index === segments.length - 1 && segments.length > 1;
|
|
121
|
-
const node = !root && !leaf;
|
|
122
|
-
const insert = /^\w|\//.test(path) && !isCatchall ? 'unshift' : 'push';
|
|
123
|
-
if (root) {
|
|
124
|
-
const dynamic = path.startsWith(':');
|
|
125
|
-
if (dynamic)
|
|
126
|
-
return parent;
|
|
127
|
-
const last = segments.length === 1;
|
|
128
|
-
if (last) {
|
|
129
|
-
const newRoute = {
|
|
130
|
-
path,
|
|
131
|
-
pathMatch,
|
|
132
|
-
_module: () => module(),
|
|
133
|
-
loadChildren: () => module().then((m) => [
|
|
134
|
-
Object.assign({ path: '', component: m.default }, toRouteConfig(m.routeMeta)),
|
|
135
|
-
]),
|
|
136
|
-
};
|
|
137
|
-
routes === null || routes === void 0 ? void 0 : routes[insert](newRoute);
|
|
138
|
-
return parent;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
if (root || node) {
|
|
142
|
-
const current = root ? routes : parent._children;
|
|
143
|
-
const found = current === null || current === void 0 ? void 0 : current.find((route) => route.path === path);
|
|
144
|
-
if (found) {
|
|
145
|
-
if (!found._children) {
|
|
146
|
-
found._children = [];
|
|
147
|
-
}
|
|
148
|
-
found.pathMatch = pathMatch;
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
current === null || current === void 0 ? void 0 : current[insert]({
|
|
152
|
-
path,
|
|
153
|
-
pathMatch,
|
|
154
|
-
_module: () => module(),
|
|
155
|
-
loadChildren: () => module().then((m) => [
|
|
156
|
-
Object.assign({ path: '', component: m.default }, toRouteConfig(m.routeMeta)),
|
|
157
|
-
]),
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
return (found ||
|
|
161
|
-
(current === null || current === void 0 ? void 0 : current[insert === 'unshift' ? 0 : current.length - 1]));
|
|
162
|
-
}
|
|
163
|
-
if (leaf) {
|
|
164
|
-
(_a = parent === null || parent === void 0 ? void 0 : parent._children) === null || _a === void 0 ? void 0 : _a[insert]({
|
|
165
|
-
path,
|
|
166
|
-
pathMatch,
|
|
167
|
-
_module: () => module(),
|
|
168
|
-
loadChildren: () => module().then((m) => [
|
|
169
|
-
Object.assign({ path: '', component: m.default }, toRouteConfig(m.routeMeta)),
|
|
170
|
-
]),
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
if (parent._children) {
|
|
174
|
-
parent.loadComponent = () => parent._module().then((m) => m.default);
|
|
175
|
-
parent.loadChildren = () => parent._module().then((m) => {
|
|
176
|
-
return [
|
|
177
|
-
Object.assign({ path: '', children: parent._children }, toRouteConfig(m.routeMeta)),
|
|
178
|
-
];
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
return parent;
|
|
182
|
-
}, {});
|
|
183
|
-
return routes;
|
|
184
|
-
}, []);
|
|
185
|
-
return routeConfigs;
|
|
186
|
-
}
|
|
187
|
-
const routes = [...getRoutes(Object.assign(Object.assign({}, FILES), CONTENT_FILES))];
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* @deprecated Use `RouteMeta` type instead.
|
|
191
|
-
* For more info see: https://github.com/analogjs/analog/issues/223
|
|
192
|
-
*
|
|
193
|
-
* Defines additional route config metadata. This
|
|
194
|
-
* object is merged into the route config with
|
|
195
|
-
* the predefined file-based route.
|
|
196
|
-
*
|
|
197
|
-
* @usageNotes
|
|
198
|
-
*
|
|
199
|
-
* ```
|
|
200
|
-
* import { Component } from '@angular/core';
|
|
201
|
-
* import { defineRouteMeta } from '@analogjs/router';
|
|
202
|
-
*
|
|
203
|
-
* export const routeMeta = defineRouteMeta({
|
|
204
|
-
* title: 'Welcome'
|
|
205
|
-
* });
|
|
206
|
-
*
|
|
207
|
-
* @Component({
|
|
208
|
-
* template: `Home`,
|
|
209
|
-
* standalone: true,
|
|
210
|
-
* })
|
|
211
|
-
* export default class HomeComponent {}
|
|
212
|
-
* ```
|
|
213
|
-
*
|
|
214
|
-
* @param route
|
|
215
|
-
* @returns
|
|
216
|
-
*/
|
|
217
|
-
const defineRouteMeta = (route) => {
|
|
218
|
-
return route;
|
|
219
|
-
};
|
|
220
|
-
/**
|
|
221
|
-
* Returns the instance of Angular Router
|
|
222
|
-
*
|
|
223
|
-
* @returns The router
|
|
224
|
-
*/
|
|
225
|
-
const injectRouter = () => {
|
|
226
|
-
return inject(Router);
|
|
227
|
-
};
|
|
228
|
-
/**
|
|
229
|
-
* Returns the instance of the Activate Route for the component
|
|
230
|
-
*
|
|
231
|
-
* @returns The activated route
|
|
232
|
-
*/
|
|
233
|
-
const injectActivatedRoute = () => {
|
|
234
|
-
return inject(ActivatedRoute);
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Sets up providers for the Angular router, and registers
|
|
239
|
-
* file-based routes. Additional features can be provided
|
|
240
|
-
* to further configure the behavior of the router.
|
|
241
|
-
*
|
|
242
|
-
* @param features
|
|
243
|
-
* @returns Providers and features to configure the router with routes
|
|
244
|
-
*/
|
|
245
|
-
function provideFileRouter(...features) {
|
|
246
|
-
return makeEnvironmentProviders([
|
|
247
|
-
// TODO: remove type casting after Angular >=15.1.1 upgrade
|
|
248
|
-
// https://github.com/angular/angular/pull/48720
|
|
249
|
-
provideRouter(routes, ...features).ɵproviders,
|
|
250
|
-
{
|
|
251
|
-
provide: ENVIRONMENT_INITIALIZER,
|
|
252
|
-
multi: true,
|
|
253
|
-
useValue: () => updateMetaTagsOnRouteChange(),
|
|
254
|
-
},
|
|
255
|
-
]);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Generated bundle index. Do not edit.
|
|
260
|
-
*/
|
|
261
|
-
|
|
262
|
-
export { defineRouteMeta, injectActivatedRoute, injectRouter, provideFileRouter, routes };
|
|
263
|
-
//# sourceMappingURL=analogjs-router.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/meta-tags.ts","../../../../packages/router/src/lib/route-config.ts","../../../../packages/router/src/lib/markdown-helpers.ts","../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-router.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["import { inject } from '@angular/core';\nimport { Meta, MetaDefinition as NgMetaTag } from '@angular/platform-browser';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nexport const ROUTE_META_TAGS_KEY = Symbol(\n '@analogjs/router Route Meta Tags Key'\n);\n\nconst CHARSET_KEY = 'charset';\nconst HTTP_EQUIV_KEY = 'httpEquiv';\n// httpEquiv selector key needs to be in kebab case format\nconst HTTP_EQUIV_SELECTOR_KEY = 'http-equiv';\nconst NAME_KEY = 'name';\nconst PROPERTY_KEY = 'property';\nconst CONTENT_KEY = 'content';\n\nexport type MetaTag =\n | (CharsetMetaTag & ExcludeRestMetaTagKeys<typeof CHARSET_KEY>)\n | (HttpEquivMetaTag & ExcludeRestMetaTagKeys<typeof HTTP_EQUIV_KEY>)\n | (NameMetaTag & ExcludeRestMetaTagKeys<typeof NAME_KEY>)\n | (PropertyMetaTag & ExcludeRestMetaTagKeys<typeof PROPERTY_KEY>);\n\ntype CharsetMetaTag = { [CHARSET_KEY]: string };\ntype HttpEquivMetaTag = { [HTTP_EQUIV_KEY]: string; [CONTENT_KEY]: string };\ntype NameMetaTag = { [NAME_KEY]: string; [CONTENT_KEY]: string };\ntype PropertyMetaTag = { [PROPERTY_KEY]: string; [CONTENT_KEY]: string };\n\ntype MetaTagKey =\n | typeof CHARSET_KEY\n | typeof HTTP_EQUIV_KEY\n | typeof NAME_KEY\n | typeof PROPERTY_KEY;\ntype ExcludeRestMetaTagKeys<Key extends MetaTagKey> = {\n [K in Exclude<MetaTagKey, Key>]?: never;\n};\n\ntype MetaTagSelector =\n | typeof CHARSET_KEY\n | `${\n | typeof HTTP_EQUIV_SELECTOR_KEY\n | typeof NAME_KEY\n | typeof PROPERTY_KEY}=\"${string}\"`;\ntype MetaTagMap = Record<MetaTagSelector, MetaTag>;\n\nexport function updateMetaTagsOnRouteChange(): void {\n const router = inject(Router);\n const metaService = inject(Meta);\n\n router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(() => {\n const metaTagMap = getMetaTagMap(router.routerState.snapshot.root);\n\n for (const metaTagSelector in metaTagMap) {\n const metaTag = metaTagMap[\n metaTagSelector as MetaTagSelector\n ] as NgMetaTag;\n metaService.updateTag(metaTag, metaTagSelector);\n }\n });\n}\n\nfunction getMetaTagMap(route: ActivatedRouteSnapshot): MetaTagMap {\n const metaTagMap = {} as MetaTagMap;\n let currentRoute: ActivatedRouteSnapshot | null = route;\n\n while (currentRoute) {\n const metaTags: MetaTag[] = currentRoute.data[ROUTE_META_TAGS_KEY] ?? [];\n for (const metaTag of metaTags) {\n metaTagMap[getMetaTagSelector(metaTag)] = metaTag;\n }\n\n currentRoute = currentRoute.firstChild;\n }\n\n return metaTagMap;\n}\n\nfunction getMetaTagSelector(metaTag: MetaTag): MetaTagSelector {\n if (metaTag.name) {\n return `${NAME_KEY}=\"${metaTag.name}\"`;\n }\n\n if (metaTag.property) {\n return `${PROPERTY_KEY}=\"${metaTag.property}\"`;\n }\n\n if (metaTag.httpEquiv) {\n return `${HTTP_EQUIV_SELECTOR_KEY}=\"${metaTag.httpEquiv}\"`;\n }\n\n return CHARSET_KEY;\n}\n","import { RedirectRouteMeta, RouteConfig, RouteMeta } from './models';\nimport { ROUTE_META_TAGS_KEY } from './meta-tags';\n\nexport function toRouteConfig(routeMeta: RouteMeta | undefined): RouteConfig {\n if (!routeMeta) {\n return {};\n }\n\n if (isRedirectRouteMeta(routeMeta)) {\n return routeMeta;\n }\n\n const { meta, ...routeConfig } = routeMeta;\n\n if (Array.isArray(meta)) {\n routeConfig.data = { ...routeConfig.data, [ROUTE_META_TAGS_KEY]: meta };\n } else if (typeof meta === 'function') {\n routeConfig.resolve = {\n ...routeConfig.resolve,\n [ROUTE_META_TAGS_KEY]: meta,\n };\n }\n\n return routeConfig;\n}\n\nfunction isRedirectRouteMeta(\n routeMeta: RouteMeta\n): routeMeta is RedirectRouteMeta {\n return !!routeMeta.redirectTo;\n}\n","import { RouteExport } from './models';\n\nexport function toMarkdownModule(\n markdownFileFactory: () => Promise<string>\n): () => Promise<RouteExport> {\n return () =>\n Promise.all([import('@analogjs/content'), markdownFileFactory()]).then(\n ([{ parseRawContentFile, MarkdownComponent }, markdownFile]) => {\n const { content, attributes } = parseRawContentFile(markdownFile);\n const { title, meta } = attributes;\n\n return {\n default: MarkdownComponent,\n routeMeta: { data: { _analogContent: content }, title, meta },\n };\n }\n );\n}\n","/// <reference types=\"vite/client\" />\n\nimport type { Route } from '@angular/router';\n\nimport { RouteExport, RouteMeta } from './models';\nimport { toRouteConfig } from './route-config';\nimport { toMarkdownModule } from './markdown-helpers';\n\nconst FILES = import.meta.glob<RouteExport>([\n '/app/routes/**/*.ts',\n '/src/app/routes/**/*.ts',\n '/src/app/pages/**/*.page.ts',\n]);\n\nconst CONTENT_FILES = import.meta.glob<string>(\n ['/src/app/routes/**/*.md', '/src/app/pages/**/*.md'],\n {\n as: 'raw',\n }\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(\n files: Record<string, () => Promise<RouteExport | string>>\n) {\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: () => Promise<RouteExport> = key.endsWith('.md')\n ? toMarkdownModule(files[key] as () => Promise<string>)\n : (files[key] as () => Promise<RouteExport>);\n\n const segments = key\n .replace(\n /^\\/(.*?)\\/routes|^\\/(.*?)\\/pages|\\/app\\/routes|\\.page|\\.(js|ts|md)$/g,\n ''\n )\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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, ...CONTENT_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 * @deprecated Use `RouteMeta` type instead.\n * For more info see: https://github.com/analogjs/analog/issues/223\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 {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n makeEnvironmentProviders,\n Provider,\n} from '@angular/core';\nimport { provideRouter, RouterFeatures } from '@angular/router';\n\nimport { routes } from './routes';\nimport { updateMetaTagsOnRouteChange } from './meta-tags';\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 function provideFileRouter(\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n // TODO: remove type casting after Angular >=15.1.1 upgrade\n // https://github.com/angular/angular/pull/48720\n (\n provideRouter(routes, ...features) as unknown as {\n ɵproviders: Provider[];\n }\n ).ɵproviders,\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => updateMetaTagsOnRouteChange(),\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analogjs-router.mjs","sources":["../../../../packages/router/src/lib/meta-tags.ts","../../../../packages/router/src/lib/route-config.ts","../../../../packages/router/src/lib/markdown-helpers.ts","../../../../packages/router/src/lib/routes.ts","../../../../packages/router/src/lib/define-route.ts","../../../../packages/router/src/lib/provide-file-router.ts","../../../../packages/router/src/analogjs-router.ts"],"sourcesContent":["import { inject } from '@angular/core';\nimport { Meta, MetaDefinition as NgMetaTag } from '@angular/platform-browser';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nexport const ROUTE_META_TAGS_KEY = Symbol(\n '@analogjs/router Route Meta Tags Key'\n);\n\nconst CHARSET_KEY = 'charset';\nconst HTTP_EQUIV_KEY = 'httpEquiv';\n// httpEquiv selector key needs to be in kebab case format\nconst HTTP_EQUIV_SELECTOR_KEY = 'http-equiv';\nconst NAME_KEY = 'name';\nconst PROPERTY_KEY = 'property';\nconst CONTENT_KEY = 'content';\n\nexport type MetaTag =\n | (CharsetMetaTag & ExcludeRestMetaTagKeys<typeof CHARSET_KEY>)\n | (HttpEquivMetaTag & ExcludeRestMetaTagKeys<typeof HTTP_EQUIV_KEY>)\n | (NameMetaTag & ExcludeRestMetaTagKeys<typeof NAME_KEY>)\n | (PropertyMetaTag & ExcludeRestMetaTagKeys<typeof PROPERTY_KEY>);\n\ntype CharsetMetaTag = { [CHARSET_KEY]: string };\ntype HttpEquivMetaTag = { [HTTP_EQUIV_KEY]: string; [CONTENT_KEY]: string };\ntype NameMetaTag = { [NAME_KEY]: string; [CONTENT_KEY]: string };\ntype PropertyMetaTag = { [PROPERTY_KEY]: string; [CONTENT_KEY]: string };\n\ntype MetaTagKey =\n | typeof CHARSET_KEY\n | typeof HTTP_EQUIV_KEY\n | typeof NAME_KEY\n | typeof PROPERTY_KEY;\ntype ExcludeRestMetaTagKeys<Key extends MetaTagKey> = {\n [K in Exclude<MetaTagKey, Key>]?: never;\n};\n\ntype MetaTagSelector =\n | typeof CHARSET_KEY\n | `${\n | typeof HTTP_EQUIV_SELECTOR_KEY\n | typeof NAME_KEY\n | typeof PROPERTY_KEY}=\"${string}\"`;\ntype MetaTagMap = Record<MetaTagSelector, MetaTag>;\n\nexport function updateMetaTagsOnRouteChange(): void {\n const router = inject(Router);\n const metaService = inject(Meta);\n\n router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(() => {\n const metaTagMap = getMetaTagMap(router.routerState.snapshot.root);\n\n for (const metaTagSelector in metaTagMap) {\n const metaTag = metaTagMap[\n metaTagSelector as MetaTagSelector\n ] as NgMetaTag;\n metaService.updateTag(metaTag, metaTagSelector);\n }\n });\n}\n\nfunction getMetaTagMap(route: ActivatedRouteSnapshot): MetaTagMap {\n const metaTagMap = {} as MetaTagMap;\n let currentRoute: ActivatedRouteSnapshot | null = route;\n\n while (currentRoute) {\n const metaTags: MetaTag[] = currentRoute.data[ROUTE_META_TAGS_KEY] ?? [];\n for (const metaTag of metaTags) {\n metaTagMap[getMetaTagSelector(metaTag)] = metaTag;\n }\n\n currentRoute = currentRoute.firstChild;\n }\n\n return metaTagMap;\n}\n\nfunction getMetaTagSelector(metaTag: MetaTag): MetaTagSelector {\n if (metaTag.name) {\n return `${NAME_KEY}=\"${metaTag.name}\"`;\n }\n\n if (metaTag.property) {\n return `${PROPERTY_KEY}=\"${metaTag.property}\"`;\n }\n\n if (metaTag.httpEquiv) {\n return `${HTTP_EQUIV_SELECTOR_KEY}=\"${metaTag.httpEquiv}\"`;\n }\n\n return CHARSET_KEY;\n}\n","import { RedirectRouteMeta, RouteConfig, RouteMeta } from './models';\nimport { ROUTE_META_TAGS_KEY } from './meta-tags';\n\nexport function toRouteConfig(routeMeta: RouteMeta | undefined): RouteConfig {\n if (!routeMeta) {\n return {};\n }\n\n if (isRedirectRouteMeta(routeMeta)) {\n return routeMeta;\n }\n\n const { meta, ...routeConfig } = routeMeta;\n\n if (Array.isArray(meta)) {\n routeConfig.data = { ...routeConfig.data, [ROUTE_META_TAGS_KEY]: meta };\n } else if (typeof meta === 'function') {\n routeConfig.resolve = {\n ...routeConfig.resolve,\n [ROUTE_META_TAGS_KEY]: meta,\n };\n }\n\n return routeConfig;\n}\n\nfunction isRedirectRouteMeta(\n routeMeta: RouteMeta\n): routeMeta is RedirectRouteMeta {\n return !!routeMeta.redirectTo;\n}\n","import { RouteExport } from './models';\n\nexport function toMarkdownModule(\n markdownFileFactory: () => Promise<string>\n): () => Promise<RouteExport> {\n return () =>\n Promise.all([import('@analogjs/content'), markdownFileFactory()]).then(\n ([{ parseRawContentFile, MarkdownComponent }, markdownFile]) => {\n const { content, attributes } = parseRawContentFile(markdownFile);\n const { title, meta } = attributes;\n\n return {\n default: MarkdownComponent,\n routeMeta: { data: { _analogContent: content }, title, meta },\n };\n }\n );\n}\n","/// <reference types=\"vite/client\" />\n\nimport type { Route } from '@angular/router';\n\nimport { RouteExport, RouteMeta } from './models';\nimport { toRouteConfig } from './route-config';\nimport { toMarkdownModule } from './markdown-helpers';\n\nconst FILES = import.meta.glob<RouteExport>([\n '/app/routes/**/*.ts',\n '/src/app/routes/**/*.ts',\n '/src/app/pages/**/*.page.ts',\n]);\n\nconst CONTENT_FILES = import.meta.glob<string>(\n ['/src/app/routes/**/*.md', '/src/app/pages/**/*.md'],\n {\n as: 'raw',\n }\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(\n files: Record<string, () => Promise<RouteExport | string>>\n) {\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: () => Promise<RouteExport> = key.endsWith('.md')\n ? toMarkdownModule(files[key] as () => Promise<string>)\n : (files[key] as () => Promise<RouteExport>);\n\n const segments = key\n .replace(\n /^\\/(.*?)\\/routes|^\\/(.*?)\\/pages|\\/app\\/routes|\\.page|\\.(js|ts|md)$/g,\n ''\n )\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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 ...toRouteConfig(m.routeMeta as RouteMeta | undefined),\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, ...CONTENT_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 * @deprecated Use `RouteMeta` type instead.\n * For more info see: https://github.com/analogjs/analog/issues/223\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 {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n makeEnvironmentProviders,\n Provider,\n} from '@angular/core';\nimport { provideRouter, RouterFeatures } from '@angular/router';\n\nimport { routes } from './routes';\nimport { updateMetaTagsOnRouteChange } from './meta-tags';\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 function provideFileRouter(\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n // TODO: remove type casting after Angular >=15.1.1 upgrade\n // https://github.com/angular/angular/pull/48720\n (\n provideRouter(routes, ...features) as unknown as {\n ɵproviders: Provider[];\n }\n ).ɵproviders,\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => updateMetaTagsOnRouteChange(),\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|