@qwik.dev/router 2.0.0-beta.43 → 2.0.0-beta.47

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.
Files changed (50) hide show
  1. package/lib/adapters/azure-swa/vite/index.d.ts +2 -2
  2. package/lib/adapters/azure-swa/vite/index.mjs +2 -1
  3. package/lib/adapters/bun-server/vite/index.d.ts +2 -2
  4. package/lib/adapters/bun-server/vite/index.mjs +2 -1
  5. package/lib/adapters/cloud-run/vite/index.d.ts +2 -2
  6. package/lib/adapters/cloud-run/vite/index.mjs +2 -1
  7. package/lib/adapters/cloudflare-pages/vite/index.d.ts +2 -2
  8. package/lib/adapters/cloudflare-pages/vite/index.mjs +2 -1
  9. package/lib/adapters/deno-server/vite/index.d.ts +2 -2
  10. package/lib/adapters/deno-server/vite/index.mjs +2 -1
  11. package/lib/adapters/netlify-edge/vite/index.d.ts +2 -2
  12. package/lib/adapters/netlify-edge/vite/index.mjs +2 -1
  13. package/lib/adapters/node-server/vite/index.d.ts +2 -2
  14. package/lib/adapters/node-server/vite/index.mjs +2 -1
  15. package/lib/adapters/shared/vite/index.d.ts +1 -1
  16. package/lib/adapters/shared/vite/index.mjs +36 -32
  17. package/lib/adapters/ssg/vite/index.d.ts +1 -1
  18. package/lib/adapters/ssg/vite/index.mjs +4 -2
  19. package/lib/adapters/vercel-edge/vite/index.d.ts +2 -2
  20. package/lib/adapters/vercel-edge/vite/index.mjs +18 -15
  21. package/lib/chunks/fs.mjs +28 -25
  22. package/lib/chunks/head.qwik.mjs +731 -448
  23. package/lib/chunks/http-error.qwik.mjs +8 -7
  24. package/lib/chunks/pathname.mjs +9 -8
  25. package/lib/chunks/request-path.mjs +8 -4
  26. package/lib/chunks/route-trie-key.mjs +10 -0
  27. package/lib/chunks/routes.mjs +14 -14
  28. package/lib/chunks/server-error.mjs +28 -6
  29. package/lib/chunks/{url.mjs → static-file.mjs} +12 -2
  30. package/lib/chunks/system.mjs +31 -25
  31. package/lib/chunks/user-response.mjs +455 -348
  32. package/lib/chunks/worker-thread.mjs +90 -88
  33. package/lib/index.d.ts +94 -63
  34. package/lib/index.qwik.mjs +615 -523
  35. package/lib/middleware/aws-lambda/index.mjs +6 -3
  36. package/lib/middleware/azure-swa/index.mjs +4 -2
  37. package/lib/middleware/bun/index.mjs +12 -12
  38. package/lib/middleware/cloudflare-pages/index.mjs +19 -4
  39. package/lib/middleware/deno/index.mjs +12 -12
  40. package/lib/middleware/firebase/index.mjs +4 -2
  41. package/lib/middleware/netlify-edge/index.mjs +4 -2
  42. package/lib/middleware/node/index.mjs +16 -15
  43. package/lib/middleware/request-handler/index.d.ts +102 -2
  44. package/lib/middleware/request-handler/index.mjs +30 -34
  45. package/lib/middleware/vercel-edge/index.mjs +4 -2
  46. package/lib/service-worker/index.mjs +2 -1
  47. package/lib/ssg/index.mjs +23 -18
  48. package/lib/vite/index.d.ts +1 -1
  49. package/lib/vite/index.mjs +669 -604
  50. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @public */
5
5
  export declare function azureSwaAdapter(opts?: AzureSwaAdapterOptions): any;
@@ -1,7 +1,8 @@
1
1
  import { viteAdapter } from "../../shared/vite/index.mjs";
2
2
  import fs from "node:fs";
3
3
  import { join } from "node:path";
4
- /** @public */ function azureSwaAdapter(opts = {}) {
4
+ /** @public */
5
+ function azureSwaAdapter(opts = {}) {
5
6
  const env = process?.env;
6
7
  return viteAdapter({
7
8
  name: "azure-swa",
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @beta */
5
5
  export declare function bunServerAdapter(opts?: bunServerAdapterOptions): any;
@@ -1,5 +1,6 @@
1
1
  import { viteAdapter } from "../../shared/vite/index.mjs";
2
- /** @beta */ function bunServerAdapter(opts = {}) {
2
+ /** @beta */
3
+ function bunServerAdapter(opts = {}) {
3
4
  const env = process?.env;
4
5
  return viteAdapter({
5
6
  name: opts.name || "bun-server",
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @public */
5
5
  export declare function cloudRunAdapter(opts?: CloudRunAdapterOptions): any;
@@ -1,5 +1,6 @@
1
1
  import { viteAdapter } from "../../shared/vite/index.mjs";
2
- /** @public */ function cloudRunAdapter(opts = {}) {
2
+ /** @public */
3
+ function cloudRunAdapter(opts = {}) {
3
4
  const env = process?.env;
4
5
  return viteAdapter({
5
6
  name: "cloud-run",
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @public */
5
5
  export declare function cloudflarePagesAdapter(opts?: CloudflarePagesAdapterOptions): any;
@@ -3,7 +3,8 @@ import { viteAdapter } from "../../shared/vite/index.mjs";
3
3
  import { y as normalizePathSlash } from "../../../chunks/fs.mjs";
4
4
  import fs from "node:fs";
5
5
  import { join, relative } from "node:path";
6
- /** @public */ function cloudflarePagesAdapter(opts = {}) {
6
+ /** @public */
7
+ function cloudflarePagesAdapter(opts = {}) {
7
8
  const env = process?.env;
8
9
  return viteAdapter({
9
10
  name: "cloudflare-pages",
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @beta */
5
5
  export declare function denoServerAdapter(opts?: DenoServerAdapterOptions): any;
@@ -1,5 +1,6 @@
1
1
  import { viteAdapter } from "../../shared/vite/index.mjs";
2
- /** @beta */ function denoServerAdapter(opts = {}) {
2
+ /** @beta */
3
+ function denoServerAdapter(opts = {}) {
3
4
  const env = process?.env;
4
5
  return viteAdapter({
5
6
  name: opts.name || "deno-server",
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @public */
5
5
  export declare function netlifyEdgeAdapter(opts?: NetlifyEdgeAdapterOptions): any;
@@ -1,7 +1,8 @@
1
1
  import { getParentDir, viteAdapter } from "../../shared/vite/index.mjs";
2
2
  import fs, { existsSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- /** @public */ function netlifyEdgeAdapter(opts = {}) {
4
+ /** @public */
5
+ function netlifyEdgeAdapter(opts = {}) {
5
6
  const env = process?.env;
6
7
  return viteAdapter({
7
8
  name: "netlify-edge",
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  /** @beta */
5
5
  export declare function nodeServerAdapter(opts?: NodeServerAdapterOptions): any;
@@ -1,5 +1,6 @@
1
1
  import { viteAdapter } from "../../shared/vite/index.mjs";
2
- /** @beta */ function nodeServerAdapter(opts = {}) {
2
+ /** @beta */
3
+ function nodeServerAdapter(opts = {}) {
3
4
  const env = process?.env;
4
5
  return viteAdapter({
5
6
  name: opts.name || "node-server",
@@ -1,5 +1,5 @@
1
1
  import { Plugin as Plugin_2 } from 'vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
  import { UserConfig } from 'vite';
4
4
 
5
5
  /** @public */
@@ -4,34 +4,8 @@ import fs from "node:fs";
4
4
  import { basename, dirname, join, resolve } from "node:path";
5
5
  import { spawn } from "node:child_process";
6
6
  import { readFile, rm, unlink } from "node:fs/promises";
7
- function createStaticPathsCode(staticPaths) {
8
- return JSON.stringify(Array.from(new Set(staticPaths)).sort()).slice(1, -1);
9
- }
10
- var injectStatics = async (staticPathsCode, outDir) => {
11
- const promises = /* @__PURE__ */ new Set();
12
- const doReplace = async (path) => {
13
- const code = await fs.promises.readFile(path, "utf-8");
14
- let replaced = false;
15
- const newCode = code.replace(/(['"`])__QWIK_ROUTER_STATIC_PATHS_ARRAY__\1/g, () => {
16
- replaced = true;
17
- return staticPathsCode;
18
- });
19
- if (replaced) await fs.promises.writeFile(path, newCode);
20
- };
21
- const walk = async (dir) => {
22
- const entries = await fs.promises.readdir(dir, { withFileTypes: true });
23
- for (const entry of entries) if (entry.isDirectory()) await walk(join(dir, entry.name));
24
- else if (entry.name.endsWith("js")) {
25
- const p = doReplace(join(dir, entry.name)).finally(() => {
26
- promises.delete(p);
27
- });
28
- promises.add(p);
29
- }
30
- };
31
- await walk(outDir);
32
- await Promise.all(promises);
33
- };
34
- /** Cleans the client output SSG results if needed and injects the SSG metadata into the build output */ async function postBuild(clientOutDir, serverOutDir, pathName, userStaticPaths, cleanStatic, noTrailingSlash) {
7
+ /** Cleans the client output SSG results if needed and injects the SSG metadata into the build output */
8
+ async function postBuild(clientOutDir, serverOutDir, pathName, userStaticPaths, cleanStatic, noTrailingSlash) {
35
9
  if (pathName && !pathName.endsWith("/")) pathName = ensureSlash(pathName);
36
10
  const pathNameBase = pathName || "/";
37
11
  const ignorePathnames = /* @__PURE__ */ new Set([pathNameBase + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/", pathNameBase + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"]);
@@ -66,17 +40,46 @@ var injectStatics = async (staticPathsCode, outDir) => {
66
40
  if (fs.existsSync(clientOutDir)) await loadDir(clientOutDir, pathName);
67
41
  await injectStatics(createStaticPathsCode(staticPaths), serverOutDir);
68
42
  }
43
+ function createStaticPathsCode(staticPaths) {
44
+ return JSON.stringify(Array.from(new Set(staticPaths)).sort()).slice(1, -1);
45
+ }
46
+ var injectStatics = async (staticPathsCode, outDir) => {
47
+ const promises = /* @__PURE__ */ new Set();
48
+ const doReplace = async (path) => {
49
+ const code = await fs.promises.readFile(path, "utf-8");
50
+ let replaced = false;
51
+ const newCode = code.replace(/(['"`])__QWIK_ROUTER_STATIC_PATHS_ARRAY__\1/g, () => {
52
+ replaced = true;
53
+ return staticPathsCode;
54
+ });
55
+ if (replaced) await fs.promises.writeFile(path, newCode);
56
+ };
57
+ const walk = async (dir) => {
58
+ const entries = await fs.promises.readdir(dir, { withFileTypes: true });
59
+ for (const entry of entries) if (entry.isDirectory()) await walk(join(dir, entry.name));
60
+ else if (entry.name.endsWith("js")) {
61
+ const p = doReplace(join(dir, entry.name)).finally(() => {
62
+ promises.delete(p);
63
+ });
64
+ promises.add(p);
65
+ }
66
+ };
67
+ await walk(outDir);
68
+ await Promise.all(promises);
69
+ };
69
70
  /**
70
71
  * Implements the SSG after the build is complete. Also provides a `generate(...)` callback that is
71
72
  * called after the SSG is complete, which allows for custom post-processing of the complete build
72
73
  * results.
73
74
  *
74
75
  * @public
75
- */ var QWIK_SSG_ENTRY_ID = "@qwik-ssg-entry";
76
+ */
77
+ var QWIK_SSG_ENTRY_ID = "@qwik-ssg-entry";
76
78
  var QWIK_SSG_ENTRY_RESOLVED = "\0@qwik-ssg-entry";
77
79
  var QWIK_SSG_WORKER_ENTRY_ID = "@qwik-ssg-worker-entry";
78
80
  var QWIK_SSG_WORKER_ENTRY_RESOLVED = "\0@qwik-ssg-worker-entry";
79
- /** @public */ function viteAdapter(opts) {
81
+ /** @public */
82
+ function viteAdapter(opts) {
80
83
  let qwikRouterPlugin = null;
81
84
  let qwikVitePlugin = null;
82
85
  let viteCommand;
@@ -163,7 +166,7 @@ var QWIK_SSG_WORKER_ENTRY_RESOLVED = "\0@qwik-ssg-worker-entry";
163
166
  basePathname,
164
167
  rootDir,
165
168
  ...opts.ssg,
166
- maxWorkers: opts.maxWorkers
169
+ maxWorkers: opts.maxWorkers ?? opts.ssg?.maxWorkers
167
170
  };
168
171
  for (const key of Object.keys(ssgOpts)) if (ssgOpts[key] === void 0) delete ssgOpts[key];
169
172
  return [
@@ -272,7 +275,8 @@ var QWIK_SSG_WORKER_ENTRY_RESOLVED = "\0@qwik-ssg-worker-entry";
272
275
  }
273
276
  }];
274
277
  }
275
- /** @public */ function getParentDir(startDir, dirName) {
278
+ /** @public */
279
+ function getParentDir(startDir, dirName) {
276
280
  const root = resolve("/");
277
281
  let dir = startDir;
278
282
  for (let i = 0; i < 20; i++) {
@@ -1,4 +1,4 @@
1
- import type { SsgRenderOptions } from '../../../ssg';
1
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
2
2
 
3
3
  /** @public */
4
4
  export declare function ssgAdapter(opts: SsgAdapterOptions): any;
@@ -1,5 +1,6 @@
1
1
  import { viteAdapter } from "../../shared/vite/index.mjs";
2
- /** @public */ function ssgAdapter(opts) {
2
+ /** @public */
3
+ function ssgAdapter(opts) {
3
4
  return viteAdapter({
4
5
  name: "static-site-generation",
5
6
  origin: opts.origin,
@@ -9,5 +10,6 @@ import { viteAdapter } from "../../shared/vite/index.mjs";
9
10
  }
10
11
  });
11
12
  }
12
- /** @public @deprecated Use `ssgAdapter` instead. */ var staticAdapter = ssgAdapter;
13
+ /** @public @deprecated Use `ssgAdapter` instead. */
14
+ var staticAdapter = ssgAdapter;
13
15
  export { ssgAdapter, staticAdapter };
@@ -1,5 +1,5 @@
1
- import { ServerAdapterOptions } from '../../shared/vite';
2
- import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
1
+ import { ServerAdapterOptions } from '../../shared/vite/index.js';
2
+ import type { SsgRenderOptions } from '../../../ssg/index.js';
3
3
 
4
4
  export { SsgRenderOptions }
5
5
 
@@ -1,7 +1,8 @@
1
1
  import { getParentDir, viteAdapter } from "../../shared/vite/index.mjs";
2
2
  import fs from "node:fs";
3
3
  import { dirname, join } from "node:path";
4
- /** @public */ function vercelEdgeAdapter(opts = {}) {
4
+ /** @public */
5
+ function vercelEdgeAdapter(opts = {}) {
5
6
  return viteAdapter({
6
7
  name: "vercel-edge",
7
8
  origin: process?.env?.VERCEL_URL || "https://yoursitename.vercel.app",
@@ -10,22 +11,24 @@ import { dirname, join } from "node:path";
10
11
  cleanStaticGenerated: true,
11
12
  config(config) {
12
13
  const outDir = config.build?.outDir || join(".vercel", "output", "functions", "_qwik-router.func");
14
+ const conditions = opts.target === "node" ? [
15
+ "node",
16
+ "import",
17
+ "module",
18
+ "browser",
19
+ "default"
20
+ ] : [
21
+ "edge-light",
22
+ "webworker",
23
+ "worker",
24
+ "browser",
25
+ "module",
26
+ "main"
27
+ ];
13
28
  return {
14
- resolve: { conditions: opts.target === "node" ? [
15
- "node",
16
- "import",
17
- "module",
18
- "browser",
19
- "default"
20
- ] : [
21
- "edge-light",
22
- "webworker",
23
- "worker",
24
- "browser",
25
- "module",
26
- "main"
27
- ] },
29
+ resolve: { conditions },
28
30
  ssr: {
31
+ resolve: { conditions },
29
32
  target: opts.target === "node" ? "node" : "webworker",
30
33
  noExternal: true
31
34
  },
package/lib/chunks/fs.mjs CHANGED
@@ -15,6 +15,18 @@ function parseRouteIndexName(extlessName) {
15
15
  layoutStop
16
16
  };
17
17
  }
18
+ function getPathnameFromDirPath(opts, dirPath) {
19
+ let pathname = normalizePath(relative(opts.routesDir, dirPath));
20
+ pathname = normalizePathname(pathname, opts.basePathname).split("/").filter((segment) => !isGroupedLayoutName(segment)).join("/");
21
+ if (pathname === "") return "/";
22
+ return pathname;
23
+ }
24
+ function getMenuPathname(opts, filePath) {
25
+ let pathname = normalizePath(relative(opts.routesDir, filePath));
26
+ pathname = `/` + normalizePath(dirname(pathname));
27
+ const result = normalizePathname(pathname, opts.basePathname);
28
+ return ensureSlash(result);
29
+ }
18
30
  function getExtension(fileName) {
19
31
  if (typeof fileName === "string") {
20
32
  const parts = fileName.trim().toLowerCase().split(".");
@@ -34,30 +46,25 @@ function removeExtension(fileName) {
34
46
  }
35
47
  return "";
36
48
  }
37
- function normalizePathSlash(path) {
38
- const isExtendedLengthPath = path.startsWith("\\\\?\\");
39
- const hasNonAscii = /[^\u0000-\u0080]+/.test(path);
40
- if (isExtendedLengthPath || hasNonAscii) return path;
41
- path = path.replace(/\\/g, "/");
42
- if (path.endsWith("/")) path = path.slice(0, path.length - 1);
43
- return path;
44
- }
45
49
  function normalizePath(path) {
46
50
  return normalizePathSlash(normalize(path));
47
51
  }
48
- function getMenuPathname(opts, filePath) {
49
- let pathname = normalizePath(relative(opts.routesDir, filePath));
50
- pathname = `/` + normalizePath(dirname(pathname));
51
- const result = normalizePathname(pathname, opts.basePathname);
52
- return ensureSlash(result);
53
- }
54
- /** Normalize equivalent filesystem paths for string-key comparisons. */ function normalizePathKey(path) {
52
+ /** Normalize equivalent filesystem paths for string-key comparisons. */
53
+ function normalizePathKey(path) {
55
54
  if (path.startsWith("\\\\?\\UNC\\")) path = `\\\\${path.slice(8)}`;
56
55
  else if (path.startsWith("\\\\?\\")) path = path.slice(4);
57
56
  else if (path.startsWith("//?/UNC/")) path = `//${path.slice(8)}`;
58
57
  else if (path.startsWith("//?/")) path = path.slice(4);
59
58
  return normalizePath(path).replace(/\\/g, "/");
60
59
  }
60
+ function normalizePathSlash(path) {
61
+ const isExtendedLengthPath = path.startsWith("\\\\?\\");
62
+ const hasNonAscii = /[^\u0000-\u0080]+/.test(path);
63
+ if (isExtendedLengthPath || hasNonAscii) return path;
64
+ path = path.replace(/\\/g, "/");
65
+ if (path.endsWith("/")) path = path.slice(0, path.length - 1);
66
+ return path;
67
+ }
61
68
  /**
62
69
  * Creates an id for the module, based on its path.
63
70
  *
@@ -65,7 +72,8 @@ function getMenuPathname(opts, filePath) {
65
72
  * @param fsPath
66
73
  * @param explicitFileType Add to avoid collisions between different types of modules. `Menu` and
67
74
  * `Layout` files are named based on their path (eg. /routes/about/menu.md => AboutMenu)
68
- */ function createFileId(routesDir, fsPath, explicitFileType) {
75
+ */
76
+ function createFileId(routesDir, fsPath, explicitFileType) {
69
77
  const ids = [];
70
78
  for (let i = 0; i < 25; i++) {
71
79
  let baseName = removeExtension(basename(fsPath));
@@ -121,20 +129,15 @@ function isServiceWorkerName(extlessName) {
121
129
  function isEntryName(extlessName) {
122
130
  return extlessName === "entry";
123
131
  }
124
- /** The boundary kind, ignoring any `@x`/`!` modifier: `'404'`, `'error'`, or undefined. */ function errorBoundaryName(extlessName) {
132
+ /** Which caught error a page renders (`'404'` or `'error'`), ignoring `@x`/`!` modifiers. */
133
+ function caughtErrorName(extlessName) {
125
134
  const match = /^(error|404)(?:|!|@.+)$/.exec(extlessName);
126
135
  return match ? match[1] : void 0;
127
136
  }
128
137
  function isErrorName(extlessName) {
129
- return errorBoundaryName(extlessName) !== void 0;
138
+ return caughtErrorName(extlessName) !== void 0;
130
139
  }
131
140
  function isGroupedLayoutName(dirName, warn = true) {
132
141
  return dirName.startsWith("(") && dirName.endsWith(")");
133
142
  }
134
- function getPathnameFromDirPath(opts, dirPath) {
135
- let pathname = normalizePath(relative(opts.routesDir, dirPath));
136
- pathname = normalizePathname(pathname, opts.basePathname).split("/").filter((segment) => !isGroupedLayoutName(segment)).join("/");
137
- if (pathname === "") return "/";
138
- return pathname;
139
- }
140
- export { normalizePath as _, getPathnameFromDirPath as a, parseRouteIndexName as b, isIndexModule as c, isMenuFileName as d, isModuleExt as f, isServiceWorkerName as g, isPluginModule as h, getMenuPathname as i, isLayoutModule as l, isPageModuleExt as m, errorBoundaryName as n, isEntryName as o, isPageExt as p, getExtension as r, isErrorName as s, createFileId as t, isMarkdownExt as u, normalizePathKey as v, removeExtension as x, normalizePathSlash as y };
143
+ export { normalizePath as _, getPathnameFromDirPath as a, parseRouteIndexName as b, isIndexModule as c, isMenuFileName as d, isModuleExt as f, isServiceWorkerName as g, isPluginModule as h, getMenuPathname as i, isLayoutModule as l, isPageModuleExt as m, createFileId as n, isEntryName as o, isPageExt as p, getExtension as r, isErrorName as s, caughtErrorName as t, isMarkdownExt as u, normalizePathKey as v, removeExtension as x, normalizePathSlash as y };