one 1.9.7 → 1.9.8
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/dist/cjs/cli/build.cjs +25 -19
- package/dist/cjs/cli/build.js +36 -24
- package/dist/cjs/cli/build.js.map +2 -2
- package/dist/cjs/cli/build.native.js +153 -117
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +12 -1
- package/dist/cjs/createApp.js +11 -1
- package/dist/cjs/createApp.js.map +1 -1
- package/dist/cjs/createHandleRequest.cjs +1 -1
- package/dist/cjs/createHandleRequest.js +1 -1
- package/dist/cjs/createHandleRequest.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js +1 -1
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/createHandleRequest.test.cjs +13 -7
- package/dist/cjs/createHandleRequest.test.js +6 -3
- package/dist/cjs/createHandleRequest.test.js.map +1 -1
- package/dist/cjs/createHandleRequest.test.native.js +13 -7
- package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
- package/dist/cjs/notFoundState.cjs +103 -0
- package/dist/cjs/notFoundState.js +99 -0
- package/dist/cjs/notFoundState.js.map +6 -0
- package/dist/cjs/notFoundState.native.js +176 -0
- package/dist/cjs/notFoundState.native.js.map +1 -0
- package/dist/cjs/router/router.cjs +10 -3
- package/dist/cjs/router/router.js +9 -3
- package/dist/cjs/router/router.js.map +1 -1
- package/dist/cjs/router/router.native.js +10 -3
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/server/oneServe.cjs +21 -16
- package/dist/cjs/server/oneServe.js +24 -15
- package/dist/cjs/server/oneServe.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js +28 -26
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/useLoader.cjs +26 -9
- package/dist/cjs/useLoader.js +26 -11
- package/dist/cjs/useLoader.js.map +1 -1
- package/dist/cjs/useLoader.native.js +44 -17
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.cjs +2 -2
- package/dist/cjs/utils/cleanUrl.js +2 -2
- package/dist/cjs/utils/cleanUrl.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.native.js +4 -2
- package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.test.cjs +64 -0
- package/dist/cjs/utils/cleanUrl.test.js +72 -0
- package/dist/cjs/utils/cleanUrl.test.js.map +6 -0
- package/dist/cjs/utils/cleanUrl.test.native.js +67 -0
- package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -0
- package/dist/cjs/utils/getPathnameFromFilePath.test.cjs +60 -0
- package/dist/cjs/utils/getPathnameFromFilePath.test.js +72 -0
- package/dist/cjs/utils/getPathnameFromFilePath.test.js.map +6 -0
- package/dist/cjs/utils/getPathnameFromFilePath.test.native.js +65 -0
- package/dist/cjs/utils/getPathnameFromFilePath.test.native.js.map +1 -0
- package/dist/cjs/views/Navigator.cjs +18 -3
- package/dist/cjs/views/Navigator.js +13 -4
- package/dist/cjs/views/Navigator.js.map +2 -2
- package/dist/cjs/views/Navigator.native.js +21 -6
- package/dist/cjs/views/Navigator.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +23 -36
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +28 -34
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +30 -40
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/cli/build.js +36 -24
- package/dist/esm/cli/build.js.map +2 -2
- package/dist/esm/cli/build.mjs +25 -19
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +153 -117
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/createApp.js +11 -1
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/createApp.mjs +12 -1
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/createHandleRequest.js +1 -1
- package/dist/esm/createHandleRequest.js.map +1 -1
- package/dist/esm/createHandleRequest.mjs +1 -1
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +1 -1
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/createHandleRequest.test.js +6 -3
- package/dist/esm/createHandleRequest.test.js.map +1 -1
- package/dist/esm/createHandleRequest.test.mjs +13 -7
- package/dist/esm/createHandleRequest.test.mjs.map +1 -1
- package/dist/esm/createHandleRequest.test.native.js +13 -7
- package/dist/esm/createHandleRequest.test.native.js.map +1 -1
- package/dist/esm/notFoundState.js +75 -0
- package/dist/esm/notFoundState.js.map +6 -0
- package/dist/esm/notFoundState.mjs +64 -0
- package/dist/esm/notFoundState.mjs.map +1 -0
- package/dist/esm/notFoundState.native.js +134 -0
- package/dist/esm/notFoundState.native.js.map +1 -0
- package/dist/esm/router/router.js +13 -2
- package/dist/esm/router/router.js.map +1 -1
- package/dist/esm/router/router.mjs +9 -2
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +9 -2
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/server/oneServe.js +24 -15
- package/dist/esm/server/oneServe.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +21 -16
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +28 -26
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/useLoader.js +27 -11
- package/dist/esm/useLoader.js.map +1 -1
- package/dist/esm/useLoader.mjs +27 -10
- package/dist/esm/useLoader.mjs.map +1 -1
- package/dist/esm/useLoader.native.js +45 -18
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/utils/cleanUrl.js +2 -2
- package/dist/esm/utils/cleanUrl.js.map +1 -1
- package/dist/esm/utils/cleanUrl.mjs +2 -2
- package/dist/esm/utils/cleanUrl.mjs.map +1 -1
- package/dist/esm/utils/cleanUrl.native.js +4 -2
- package/dist/esm/utils/cleanUrl.native.js.map +1 -1
- package/dist/esm/utils/cleanUrl.test.js +73 -0
- package/dist/esm/utils/cleanUrl.test.js.map +6 -0
- package/dist/esm/utils/cleanUrl.test.mjs +65 -0
- package/dist/esm/utils/cleanUrl.test.mjs.map +1 -0
- package/dist/esm/utils/cleanUrl.test.native.js +65 -0
- package/dist/esm/utils/cleanUrl.test.native.js.map +1 -0
- package/dist/esm/utils/getPathnameFromFilePath.test.js +73 -0
- package/dist/esm/utils/getPathnameFromFilePath.test.js.map +6 -0
- package/dist/esm/utils/getPathnameFromFilePath.test.mjs +61 -0
- package/dist/esm/utils/getPathnameFromFilePath.test.mjs.map +1 -0
- package/dist/esm/utils/getPathnameFromFilePath.test.native.js +63 -0
- package/dist/esm/utils/getPathnameFromFilePath.test.native.js.map +1 -0
- package/dist/esm/views/Navigator.js +16 -1
- package/dist/esm/views/Navigator.js.map +1 -1
- package/dist/esm/views/Navigator.mjs +16 -1
- package/dist/esm/views/Navigator.mjs.map +1 -1
- package/dist/esm/views/Navigator.native.js +18 -3
- package/dist/esm/views/Navigator.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +28 -34
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +23 -36
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +30 -40
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/package.json +9 -9
- package/src/cli/build.ts +43 -30
- package/src/createApp.tsx +22 -0
- package/src/createHandleRequest.test.ts +11 -3
- package/src/createHandleRequest.ts +3 -1
- package/src/notFoundState.ts +158 -0
- package/src/router/router.ts +15 -1
- package/src/server/oneServe.ts +37 -14
- package/src/useLoader.ts +25 -12
- package/src/utils/cleanUrl.test.ts +120 -0
- package/src/utils/cleanUrl.ts +12 -11
- package/src/utils/getPathnameFromFilePath.test.ts +118 -0
- package/src/views/Navigator.tsx +28 -0
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +31 -45
- package/types/cli/build.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/notFoundState.d.ts +13 -0
- package/types/notFoundState.d.ts.map +1 -0
- package/types/router/router.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/useLoader.d.ts.map +1 -1
- package/types/utils/cleanUrl.d.ts.map +1 -1
- package/types/utils/cleanUrl.test.d.ts +2 -0
- package/types/utils/cleanUrl.test.d.ts.map +1 -0
- package/types/utils/getPathnameFromFilePath.test.d.ts +2 -0
- package/types/utils/getPathnameFromFilePath.test.d.ts.map +1 -0
- package/types/views/Navigator.d.ts +2 -2
- package/types/views/Navigator.d.ts.map +1 -1
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getLoaderPath, getPathFromLoaderPath } from "./cleanUrl.native.js";
|
|
3
|
+
function roundtrip(path) {
|
|
4
|
+
var loaderPath = getLoaderPath(path, !1);
|
|
5
|
+
return getPathFromLoaderPath(loaderPath);
|
|
6
|
+
}
|
|
7
|
+
describe("cleanUrl roundtrip", function () {
|
|
8
|
+
it("simple path", function () {
|
|
9
|
+
expect(roundtrip("/docs/getting-started")).toBe("/docs/getting-started");
|
|
10
|
+
}), it("path with underscore prefix (/_/docs)", function () {
|
|
11
|
+
expect(roundtrip("/_/docs/getting-started")).toBe("/_/docs/getting-started");
|
|
12
|
+
}), it("path with underscore prefix (/_/terms)", function () {
|
|
13
|
+
expect(roundtrip("/_/terms")).toBe("/_/terms");
|
|
14
|
+
}), it("path with underscore in segment name", function () {
|
|
15
|
+
expect(roundtrip("/my_page/test")).toBe("/my_page/test");
|
|
16
|
+
}), it("deeply nested path", function () {
|
|
17
|
+
expect(roundtrip("/deep/nested/path/here")).toBe("/deep/nested/path/here");
|
|
18
|
+
}), it("root path", function () {
|
|
19
|
+
expect(roundtrip("/")).toBe("/");
|
|
20
|
+
}), it("single segment", function () {
|
|
21
|
+
expect(roundtrip("/about")).toBe("/about");
|
|
22
|
+
}), it("path with query string is stripped", function () {
|
|
23
|
+
var loaderPath = getLoaderPath("/docs/intro?foo=bar", !1);
|
|
24
|
+
expect(getPathFromLoaderPath(loaderPath)).toBe("/docs/intro");
|
|
25
|
+
}), it("path with hash is stripped", function () {
|
|
26
|
+
var loaderPath = getLoaderPath("/docs/intro#section", !1);
|
|
27
|
+
expect(getPathFromLoaderPath(loaderPath)).toBe("/docs/intro");
|
|
28
|
+
}), it("path with trailing slash", function () {
|
|
29
|
+
var loaderPath = getLoaderPath("/docs/intro/", !1);
|
|
30
|
+
expect(getPathFromLoaderPath(loaderPath)).toBe("/docs/intro");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("getLoaderPath format", function () {
|
|
34
|
+
it("includes /assets/ prefix", function () {
|
|
35
|
+
var result = getLoaderPath("/docs/intro", !1);
|
|
36
|
+
expect(result).toMatch(/^\/assets\//);
|
|
37
|
+
}), it("ends with loader postfix", function () {
|
|
38
|
+
var result = getLoaderPath("/docs/intro", !1);
|
|
39
|
+
expect(result).toMatch(/_\d+_vxrn_loader\.js$/);
|
|
40
|
+
}), it("includes /_one prefix in dev mode", function () {
|
|
41
|
+
var originalEnv = process.env.NODE_ENV;
|
|
42
|
+
process.env.NODE_ENV = "development";
|
|
43
|
+
try {
|
|
44
|
+
var result = getLoaderPath("/docs/intro", !1);
|
|
45
|
+
expect(result).toMatch(/^\/_one\/assets\//);
|
|
46
|
+
} finally {
|
|
47
|
+
process.env.NODE_ENV = originalEnv;
|
|
48
|
+
}
|
|
49
|
+
}), it("includes cache bust segment", function () {
|
|
50
|
+
var result = getLoaderPath("/docs/intro", !1, "12345");
|
|
51
|
+
expect(result).toContain("_refetch_12345_");
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe("getPathFromLoaderPath", function () {
|
|
55
|
+
it("strips /_one/assets prefix", function () {
|
|
56
|
+
expect(getPathFromLoaderPath("/_one/assets/docs_intro_999_vxrn_loader.js")).toBe("/docs/intro");
|
|
57
|
+
}), it("strips /assets prefix", function () {
|
|
58
|
+
expect(getPathFromLoaderPath("/assets/docs_intro_999_vxrn_loader.js")).toBe("/docs/intro");
|
|
59
|
+
}), it("strips refetch cache bust", function () {
|
|
60
|
+
expect(getPathFromLoaderPath("/assets/docs_intro_refetch_12345__999_vxrn_loader.js")).toBe("/docs/intro");
|
|
61
|
+
}), it("decodes escaped underscores back to literal underscores", function () {
|
|
62
|
+
expect(getPathFromLoaderPath("/assets/___docs_intro_999_vxrn_loader.js")).toBe("/_/docs/intro");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=cleanUrl.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","getLoaderPath","getPathFromLoaderPath","roundtrip","path","loaderPath","toBe","result","toMatch","originalEnv","process","env","NODE_ENV","toContain"],"sources":["../../../src/utils/cleanUrl.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getPathnameFromFilePath } from "./getPathnameFromFilePath";
|
|
3
|
+
describe("getPathnameFromFilePath", () => {
|
|
4
|
+
it("index route", () => {
|
|
5
|
+
expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/");
|
|
6
|
+
}), it("simple page", () => {
|
|
7
|
+
expect(getPathnameFromFilePath("/about+ssg.tsx")).toBe("/about");
|
|
8
|
+
}), it("dynamic param", () => {
|
|
9
|
+
expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
|
|
10
|
+
}), it("nested dynamic params", () => {
|
|
11
|
+
expect(getPathnameFromFilePath("/[serverId]/[channelId]/index+spa.tsx")).toBe(
|
|
12
|
+
"/:serverId/:channelId/"
|
|
13
|
+
);
|
|
14
|
+
}), it("catch-all route without params", () => {
|
|
15
|
+
expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx")).toBe("/docs/*");
|
|
16
|
+
}), it("catch-all route with params", () => {
|
|
17
|
+
expect(
|
|
18
|
+
getPathnameFromFilePath("/docs/[...slug]+ssg.tsx", { slug: "intro/basics" })
|
|
19
|
+
).toBe("/docs/intro/basics");
|
|
20
|
+
}), it("route groups are stripped", () => {
|
|
21
|
+
expect(getPathnameFromFilePath("/(site)/(legal)/terms+ssg.tsx")).toBe("/terms");
|
|
22
|
+
}), it("nested path", () => {
|
|
23
|
+
expect(getPathnameFromFilePath("/dashboard/settings/index+ssr.tsx")).toBe(
|
|
24
|
+
"/dashboard/settings/"
|
|
25
|
+
);
|
|
26
|
+
}), it("folder render mode suffix stripped", () => {
|
|
27
|
+
expect(getPathnameFromFilePath("/folder+ssr/page+ssg.tsx")).toBe("/folder/page");
|
|
28
|
+
}), it("+not-found route", () => {
|
|
29
|
+
expect(getPathnameFromFilePath("/not-found/+not-found+ssg.tsx")).toBe(
|
|
30
|
+
"/not-found/+not-found"
|
|
31
|
+
);
|
|
32
|
+
}), it("dynamic param with +not-found", () => {
|
|
33
|
+
expect(getPathnameFromFilePath("/[slug]/+not-found+ssr.tsx")).toBe(
|
|
34
|
+
"/:slug/+not-found"
|
|
35
|
+
);
|
|
36
|
+
}), it("underscore-prefixed path segment", () => {
|
|
37
|
+
expect(getPathnameFromFilePath("/_/home/index+spa.tsx")).toBe("/_/home/");
|
|
38
|
+
}), describe("input must start with / not ./", () => {
|
|
39
|
+
it('"./" prefix produces wrong keys', () => {
|
|
40
|
+
const broken = getPathnameFromFilePath("./[serverId]/index+spa.tsx");
|
|
41
|
+
expect(broken).toBe("./:serverId/"), expect(broken).not.toBe("/:serverId/");
|
|
42
|
+
}), it('"/" prefix produces correct keys', () => {
|
|
43
|
+
expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
|
|
44
|
+
}), it('"./" root produces wrong key', () => {
|
|
45
|
+
const broken = getPathnameFromFilePath("./index+spa.tsx");
|
|
46
|
+
expect(broken).toBe("./"), expect(broken).not.toBe("/");
|
|
47
|
+
}), it('"/" root produces correct key', () => {
|
|
48
|
+
expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/");
|
|
49
|
+
});
|
|
50
|
+
}), describe("with params substitution", () => {
|
|
51
|
+
it("substitutes dynamic param", () => {
|
|
52
|
+
expect(getPathnameFromFilePath("/ssr/[param]+ssr.tsx", { param: "hello" })).toBe(
|
|
53
|
+
"/ssr/hello"
|
|
54
|
+
);
|
|
55
|
+
}), it("substitutes filename param, dirname params become placeholders", () => {
|
|
56
|
+
expect(
|
|
57
|
+
getPathnameFromFilePath("/servers/[serverId]/[channelId]+spa.tsx", {
|
|
58
|
+
serverId: "abc",
|
|
59
|
+
channelId: "123"
|
|
60
|
+
})
|
|
61
|
+
).toBe("/servers/:serverId/123");
|
|
62
|
+
});
|
|
63
|
+
}), describe("strict mode", () => {
|
|
64
|
+
it("throws on missing param in strict mode", () => {
|
|
65
|
+
expect(() => getPathnameFromFilePath("/[id]+ssr.tsx", {}, !0)).toThrow(
|
|
66
|
+
"Params doesn't fit route"
|
|
67
|
+
);
|
|
68
|
+
}), it("returns placeholder in non-strict mode", () => {
|
|
69
|
+
expect(getPathnameFromFilePath("/[id]+ssr.tsx", {}, !1)).toBe("/:id");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=getPathnameFromFilePath.test.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/utils/getPathnameFromFilePath.test.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getPathnameFromFilePath } from "./getPathnameFromFilePath.mjs";
|
|
3
|
+
describe("getPathnameFromFilePath", () => {
|
|
4
|
+
it("index route", () => {
|
|
5
|
+
expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/");
|
|
6
|
+
}), it("simple page", () => {
|
|
7
|
+
expect(getPathnameFromFilePath("/about+ssg.tsx")).toBe("/about");
|
|
8
|
+
}), it("dynamic param", () => {
|
|
9
|
+
expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
|
|
10
|
+
}), it("nested dynamic params", () => {
|
|
11
|
+
expect(getPathnameFromFilePath("/[serverId]/[channelId]/index+spa.tsx")).toBe("/:serverId/:channelId/");
|
|
12
|
+
}), it("catch-all route without params", () => {
|
|
13
|
+
expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx")).toBe("/docs/*");
|
|
14
|
+
}), it("catch-all route with params", () => {
|
|
15
|
+
expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx", {
|
|
16
|
+
slug: "intro/basics"
|
|
17
|
+
})).toBe("/docs/intro/basics");
|
|
18
|
+
}), it("route groups are stripped", () => {
|
|
19
|
+
expect(getPathnameFromFilePath("/(site)/(legal)/terms+ssg.tsx")).toBe("/terms");
|
|
20
|
+
}), it("nested path", () => {
|
|
21
|
+
expect(getPathnameFromFilePath("/dashboard/settings/index+ssr.tsx")).toBe("/dashboard/settings/");
|
|
22
|
+
}), it("folder render mode suffix stripped", () => {
|
|
23
|
+
expect(getPathnameFromFilePath("/folder+ssr/page+ssg.tsx")).toBe("/folder/page");
|
|
24
|
+
}), it("+not-found route", () => {
|
|
25
|
+
expect(getPathnameFromFilePath("/not-found/+not-found+ssg.tsx")).toBe("/not-found/+not-found");
|
|
26
|
+
}), it("dynamic param with +not-found", () => {
|
|
27
|
+
expect(getPathnameFromFilePath("/[slug]/+not-found+ssr.tsx")).toBe("/:slug/+not-found");
|
|
28
|
+
}), it("underscore-prefixed path segment", () => {
|
|
29
|
+
expect(getPathnameFromFilePath("/_/home/index+spa.tsx")).toBe("/_/home/");
|
|
30
|
+
}), describe("input must start with / not ./", () => {
|
|
31
|
+
it('"./" prefix produces wrong keys', () => {
|
|
32
|
+
const broken = getPathnameFromFilePath("./[serverId]/index+spa.tsx");
|
|
33
|
+
expect(broken).toBe("./:serverId/"), expect(broken).not.toBe("/:serverId/");
|
|
34
|
+
}), it('"/" prefix produces correct keys', () => {
|
|
35
|
+
expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
|
|
36
|
+
}), it('"./" root produces wrong key', () => {
|
|
37
|
+
const broken = getPathnameFromFilePath("./index+spa.tsx");
|
|
38
|
+
expect(broken).toBe("./"), expect(broken).not.toBe("/");
|
|
39
|
+
}), it('"/" root produces correct key', () => {
|
|
40
|
+
expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/");
|
|
41
|
+
});
|
|
42
|
+
}), describe("with params substitution", () => {
|
|
43
|
+
it("substitutes dynamic param", () => {
|
|
44
|
+
expect(getPathnameFromFilePath("/ssr/[param]+ssr.tsx", {
|
|
45
|
+
param: "hello"
|
|
46
|
+
})).toBe("/ssr/hello");
|
|
47
|
+
}), it("substitutes filename param, dirname params become placeholders", () => {
|
|
48
|
+
expect(getPathnameFromFilePath("/servers/[serverId]/[channelId]+spa.tsx", {
|
|
49
|
+
serverId: "abc",
|
|
50
|
+
channelId: "123"
|
|
51
|
+
})).toBe("/servers/:serverId/123");
|
|
52
|
+
});
|
|
53
|
+
}), describe("strict mode", () => {
|
|
54
|
+
it("throws on missing param in strict mode", () => {
|
|
55
|
+
expect(() => getPathnameFromFilePath("/[id]+ssr.tsx", {}, !0)).toThrow("Params doesn't fit route");
|
|
56
|
+
}), it("returns placeholder in non-strict mode", () => {
|
|
57
|
+
expect(getPathnameFromFilePath("/[id]+ssr.tsx", {}, !1)).toBe("/:id");
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=getPathnameFromFilePath.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","getPathnameFromFilePath","toBe","slug","broken","not","param","serverId","channelId","toThrow"],"sources":["../../../src/utils/getPathnameFromFilePath.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getPathnameFromFilePath } from "./getPathnameFromFilePath.native.js";
|
|
3
|
+
describe("getPathnameFromFilePath", function () {
|
|
4
|
+
it("index route", function () {
|
|
5
|
+
expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/");
|
|
6
|
+
}), it("simple page", function () {
|
|
7
|
+
expect(getPathnameFromFilePath("/about+ssg.tsx")).toBe("/about");
|
|
8
|
+
}), it("dynamic param", function () {
|
|
9
|
+
expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
|
|
10
|
+
}), it("nested dynamic params", function () {
|
|
11
|
+
expect(getPathnameFromFilePath("/[serverId]/[channelId]/index+spa.tsx")).toBe("/:serverId/:channelId/");
|
|
12
|
+
}), it("catch-all route without params", function () {
|
|
13
|
+
expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx")).toBe("/docs/*");
|
|
14
|
+
}), it("catch-all route with params", function () {
|
|
15
|
+
expect(getPathnameFromFilePath("/docs/[...slug]+ssg.tsx", {
|
|
16
|
+
slug: "intro/basics"
|
|
17
|
+
})).toBe("/docs/intro/basics");
|
|
18
|
+
}), it("route groups are stripped", function () {
|
|
19
|
+
expect(getPathnameFromFilePath("/(site)/(legal)/terms+ssg.tsx")).toBe("/terms");
|
|
20
|
+
}), it("nested path", function () {
|
|
21
|
+
expect(getPathnameFromFilePath("/dashboard/settings/index+ssr.tsx")).toBe("/dashboard/settings/");
|
|
22
|
+
}), it("folder render mode suffix stripped", function () {
|
|
23
|
+
expect(getPathnameFromFilePath("/folder+ssr/page+ssg.tsx")).toBe("/folder/page");
|
|
24
|
+
}), it("+not-found route", function () {
|
|
25
|
+
expect(getPathnameFromFilePath("/not-found/+not-found+ssg.tsx")).toBe("/not-found/+not-found");
|
|
26
|
+
}), it("dynamic param with +not-found", function () {
|
|
27
|
+
expect(getPathnameFromFilePath("/[slug]/+not-found+ssr.tsx")).toBe("/:slug/+not-found");
|
|
28
|
+
}), it("underscore-prefixed path segment", function () {
|
|
29
|
+
expect(getPathnameFromFilePath("/_/home/index+spa.tsx")).toBe("/_/home/");
|
|
30
|
+
}), describe("input must start with / not ./", function () {
|
|
31
|
+
it('"./" prefix produces wrong keys', function () {
|
|
32
|
+
var broken = getPathnameFromFilePath("./[serverId]/index+spa.tsx");
|
|
33
|
+
expect(broken).toBe("./:serverId/"), expect(broken).not.toBe("/:serverId/");
|
|
34
|
+
}), it('"/" prefix produces correct keys', function () {
|
|
35
|
+
expect(getPathnameFromFilePath("/[serverId]/index+spa.tsx")).toBe("/:serverId/");
|
|
36
|
+
}), it('"./" root produces wrong key', function () {
|
|
37
|
+
var broken = getPathnameFromFilePath("./index+spa.tsx");
|
|
38
|
+
expect(broken).toBe("./"), expect(broken).not.toBe("/");
|
|
39
|
+
}), it('"/" root produces correct key', function () {
|
|
40
|
+
expect(getPathnameFromFilePath("/index+spa.tsx")).toBe("/");
|
|
41
|
+
});
|
|
42
|
+
}), describe("with params substitution", function () {
|
|
43
|
+
it("substitutes dynamic param", function () {
|
|
44
|
+
expect(getPathnameFromFilePath("/ssr/[param]+ssr.tsx", {
|
|
45
|
+
param: "hello"
|
|
46
|
+
})).toBe("/ssr/hello");
|
|
47
|
+
}), it("substitutes filename param, dirname params become placeholders", function () {
|
|
48
|
+
expect(getPathnameFromFilePath("/servers/[serverId]/[channelId]+spa.tsx", {
|
|
49
|
+
serverId: "abc",
|
|
50
|
+
channelId: "123"
|
|
51
|
+
})).toBe("/servers/:serverId/123");
|
|
52
|
+
});
|
|
53
|
+
}), describe("strict mode", function () {
|
|
54
|
+
it("throws on missing param in strict mode", function () {
|
|
55
|
+
expect(function () {
|
|
56
|
+
return getPathnameFromFilePath("/[id]+ssr.tsx", {}, !0);
|
|
57
|
+
}).toThrow("Params doesn't fit route");
|
|
58
|
+
}), it("returns placeholder in non-strict mode", function () {
|
|
59
|
+
expect(getPathnameFromFilePath("/[id]+ssr.tsx", {}, !1)).toBe("/:id");
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=getPathnameFromFilePath.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","getPathnameFromFilePath","toBe","slug","broken","not","param","serverId","channelId","toThrow"],"sources":["../../../src/utils/getPathnameFromFilePath.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,SAASC,uBAAA,QAA+B;AAExCH,QAAA,CAAS,2BAA2B,YAAM;EACxCE,EAAA,CAAG,eAAe,YAAM;IACtBD,MAAA,CAAOE,uBAAA,CAAwB,gBAAgB,CAAC,EAAEC,IAAA,CAAK,GAAG;EAC5D,CAAC,GAEDF,EAAA,CAAG,eAAe,YAAM;IACtBD,MAAA,CAAOE,uBAAA,CAAwB,gBAAgB,CAAC,EAAEC,IAAA,CAAK,QAAQ;EACjE,CAAC,GAEDF,EAAA,CAAG,iBAAiB,YAAM;IACxBD,MAAA,CAAOE,uBAAA,CAAwB,2BAA2B,CAAC,EAAEC,IAAA,CAAK,aAAa;EACjF,CAAC,GAEDF,EAAA,CAAG,yBAAyB,YAAM;IAChCD,MAAA,CAAOE,uBAAA,CAAwB,uCAAuC,CAAC,EAAEC,IAAA;EAAA,IACvEF,EAAA;IACFD,MAAA,CAAAE,uBAAA,6BAAAC,IAAA;EACF,CAAC,GAEDF,EAAA,CAAG,2CAAwC;IACzCD,MAAA,CAAOE,uBAAA,CAAwB,yBAAyB,EAAC;MAG3DE,IAAG;IACD,IAAAD,IAAA;EAAA,IACEF,EAAA,4BAAwB;IAC1BD,MAAE,CAAKE,uBAAoB,mCAAAC,IAAA;EAC7B,CAAC,GAEDF,EAAA,CAAG;IACDD,MAAA,CAAOE,uBAAA,CAAwB,mCAAkC,GAAAC,IAAK,uBAAQ;EAChF,CAAC,GAEDF,EAAA,CAAG,oCAAqB;IACtBD,MAAA,CAAOE,uBAAA,CAAwB,6BAAAC,IAAA,eAAsC;EAAA,IACnEF,EAAA;IACFD,MAAA,CAAAE,uBAAA,mCAAAC,IAAA;EACF,CAAC,GAEDF,EAAA,CAAG,6CAA4C;IAC7CD,MAAA,CAAOE,uBAAA,CAAwB,4BAA2B,CAAE,EAAAC,IAAK,oBAAc;EACjF,CAAC,GAEDF,EAAA,CAAG,kCAA0B;IAC3BD,MAAA,CAAOE,uBAAA,CAAwB,0BAAAC,IAAA,CAA+B,UAAG;EAAA,IAC/DJ,QAAA;IACFE,EAAA;MAGF,IAAGI,MAAA,GAAAH,uBAAiC,6BAAM;MACxCF,MAAO,CAAAK,MAAA,EAAAF,IAAA,eAAwB,GAAAH,MAAA,CAAAK,MAAA,EAAAC,GAAA,CAAAH,IAA+B;IAAA,EAC5D,EAAAF,EAAA;MACFD,MAAA,CAAAE,uBAAA,+BAAAC,IAAA;IACD,EAED,EAAAF,EAAG,6CAA0C;MAC3C,IAAAI,MAAO,GAAAH,uBAAwB,kBAAwB,CAAE;MAG3DF,MAAA,CAAAK,MAAS,EAAAF,IAAA,QAAAH,MAAA,CAAAK,MAAA,EAAAC,GAAkC,CAAAH,IAAM;IAI/C,IAAGF,EAAA,gCAAmC,cAAM;MAC1CD,MAAM,CAAAE,uBAAS,iBAAwB,GAAAC,IAAA;IACvC;EACqC,EACvC,EAACJ,QAEE,yCAA0C;IAC3CE,EAAA,4BAAO,cAAwB;MAChCD,MAEE,CAAAE,uBAAA,uBAAsC;QACvCK,KAAM;MACN,IAAAJ,IAAO,aAAa;IAEtB,CAAC,GAEDF,EAAA,CAAG,gEAAuC;MACxCD,MAAA,CAAOE,uBAAA,CAAwB,yCAA2B;QAC3DM,QAAA;QAGHC,SAAS;MACP,CAAG,GAAAN,IAAA,yBAA6B;IAC9B;EAA4E,IAAAJ,QAC1E;IAAAE,EACF;MACDD,MAEE;QAGD,OAAAE,uBAAA;MAAA,EACE,CAAAQ,OAAA,2BAAwB;IAA2C,IAAAT,EACjE,yCAAU;MAAAD,MACV,CAAAE,uBAAW,2BAAAC,IAAA;IAAA;EACZ;AAC4B","ignoreList":[]}
|
|
@@ -5,7 +5,13 @@ import {
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
7
7
|
import { useFilterScreenChildren } from "../layouts/withLayoutContext";
|
|
8
|
+
import {
|
|
9
|
+
findNearestNotFoundRoute,
|
|
10
|
+
findRouteNodeByPath,
|
|
11
|
+
useNotFoundState
|
|
12
|
+
} from "../notFoundState";
|
|
8
13
|
import { useContextKey } from "../router/Route";
|
|
14
|
+
import { routeNode as globalRouteNode } from "../router/router";
|
|
9
15
|
import { registerProtectedRoutes, unregisterProtectedRoutes } from "../router/router";
|
|
10
16
|
import { useSortedScreens, getQualifiedRouteComponent } from "../router/useScreens";
|
|
11
17
|
import { Screen } from "./Screen";
|
|
@@ -96,7 +102,16 @@ function useNavigatorContext() {
|
|
|
96
102
|
return context;
|
|
97
103
|
}
|
|
98
104
|
function useSlot() {
|
|
99
|
-
const context = useNavigatorContext(), { state, descriptorsRef } = context,
|
|
105
|
+
const context = useNavigatorContext(), { state, descriptorsRef } = context, notFoundState = useNotFoundState();
|
|
106
|
+
if (notFoundState) {
|
|
107
|
+
const notFoundRouteNode = notFoundState.notFoundRouteNode || findRouteNodeByPath(notFoundState.notFoundPath, globalRouteNode) || findNearestNotFoundRoute(notFoundState.originalPath, globalRouteNode);
|
|
108
|
+
if (notFoundRouteNode) {
|
|
109
|
+
const NotFoundComponent = getQualifiedRouteComponent(notFoundRouteNode);
|
|
110
|
+
return /* @__PURE__ */ jsx(NotFoundComponent, { route: { params: {} } }, "one-not-found-inline");
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const current = state.routes.find((route, i) => state.index === i);
|
|
100
115
|
if (!current)
|
|
101
116
|
return null;
|
|
102
117
|
const renderedElement = descriptorsRef.current[current.key]?.render() ?? null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/views/Navigator.tsx"],
|
|
4
|
-
"mappings": "AACA;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AACP,YAAY,WAAW;AACvB,SAAS,oBAAoB;AAC7B,SAAS,+BAA+B;AACxC,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB,iCAAiC;AACnE,SAAS,kBAAkB,kCAAkC;AAC7D,SAAS,cAAc;AAWvB,SAAS,yBAAyB,4BAA4B;AA4H1D,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -2,7 +2,9 @@ import { StackRouter, useNavigationBuilder } from "@react-navigation/native";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
4
4
|
import { useFilterScreenChildren } from "../layouts/withLayoutContext.mjs";
|
|
5
|
+
import { findNearestNotFoundRoute, findRouteNodeByPath, useNotFoundState } from "../notFoundState.mjs";
|
|
5
6
|
import { useContextKey } from "../router/Route.mjs";
|
|
7
|
+
import { routeNode as globalRouteNode } from "../router/router.mjs";
|
|
6
8
|
import { registerProtectedRoutes, unregisterProtectedRoutes } from "../router/router.mjs";
|
|
7
9
|
import { useSortedScreens, getQualifiedRouteComponent } from "../router/useScreens.mjs";
|
|
8
10
|
import { Screen } from "./Screen.mjs";
|
|
@@ -107,7 +109,20 @@ function useSlot() {
|
|
|
107
109
|
state,
|
|
108
110
|
descriptorsRef
|
|
109
111
|
} = context,
|
|
110
|
-
|
|
112
|
+
notFoundState = useNotFoundState();
|
|
113
|
+
if (notFoundState) {
|
|
114
|
+
const notFoundRouteNode = notFoundState.notFoundRouteNode || findRouteNodeByPath(notFoundState.notFoundPath, globalRouteNode) || findNearestNotFoundRoute(notFoundState.originalPath, globalRouteNode);
|
|
115
|
+
if (notFoundRouteNode) {
|
|
116
|
+
const NotFoundComponent = getQualifiedRouteComponent(notFoundRouteNode);
|
|
117
|
+
return /* @__PURE__ */jsx(NotFoundComponent, {
|
|
118
|
+
route: {
|
|
119
|
+
params: {}
|
|
120
|
+
}
|
|
121
|
+
}, "one-not-found-inline");
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const current = state.routes.find((route, i) => state.index === i);
|
|
111
126
|
if (!current) return null;
|
|
112
127
|
const renderedElement = descriptorsRef.current[current.key]?.render() ?? null;
|
|
113
128
|
return renderedElement !== null ? React.cloneElement(renderedElement, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StackRouter","useNavigationBuilder","React","SafeAreaView","useFilterScreenChildren","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","getQualifiedRouteComponent","Screen","registerClearSlotStates","registerSetSlotState","Fragment","jsx","SLOT_STATIC_KEY","globalSlotState","Map","slotStateListeners","Set","getSlotState","slotName","get","setSlotState","state","delete","set","forEach","listener","clearAllSlotStates","clear","useSlotStateSubscription","forceUpdate","useReducer","x","useEffect","add","NavigatorContext","createContext","process","env","NODE_ENV","displayName","Navigator","initialRouteName","screenOptions","children","router","contextKey","screens","otherSlot","protectedScreens","isCustomNavigator","sorted","length","QualifiedNavigator","console","warn","navigation","descriptors","NavigationContent","id","descriptorsRef","useRef","current","value","useMemo","Provider","useNavigatorContext","context","useContext","Error","useSlot","
|
|
1
|
+
{"version":3,"names":["StackRouter","useNavigationBuilder","React","SafeAreaView","useFilterScreenChildren","findNearestNotFoundRoute","findRouteNodeByPath","useNotFoundState","useContextKey","routeNode","globalRouteNode","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","getQualifiedRouteComponent","Screen","registerClearSlotStates","registerSetSlotState","Fragment","jsx","SLOT_STATIC_KEY","globalSlotState","Map","slotStateListeners","Set","getSlotState","slotName","get","setSlotState","state","delete","set","forEach","listener","clearAllSlotStates","clear","useSlotStateSubscription","forceUpdate","useReducer","x","useEffect","add","NavigatorContext","createContext","process","env","NODE_ENV","displayName","Navigator","initialRouteName","screenOptions","children","router","contextKey","screens","otherSlot","protectedScreens","isCustomNavigator","sorted","length","QualifiedNavigator","console","warn","navigation","descriptors","NavigationContent","id","descriptorsRef","useRef","current","value","useMemo","Provider","useNavigatorContext","context","useContext","Error","useSlot","notFoundState","notFoundRouteNode","notFoundPath","originalPath","NotFoundComponent","route","params","routes","find","i","index","renderedElement","key","render","cloneElement","Slot","memo","props","QualifiedSlot","DefaultNavigator","style","flex","getScopedSlotKey","layoutContextKey","useNamedSlot","scopedKey","slotState","activeRouteKey","isIntercepted","activeRouteNode","Component","NamedSlot","name","slotContent"],"sources":["../../../src/views/Navigator.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,9 @@ import { StackRouter, useNavigationBuilder } from "@react-navigation/native";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
5
5
|
import { useFilterScreenChildren } from "../layouts/withLayoutContext.native.js";
|
|
6
|
+
import { findNearestNotFoundRoute, findRouteNodeByPath, useNotFoundState } from "../notFoundState.native.js";
|
|
6
7
|
import { useContextKey } from "../router/Route.native.js";
|
|
8
|
+
import { routeNode as globalRouteNode } from "../router/router.native.js";
|
|
7
9
|
import { registerProtectedRoutes, unregisterProtectedRoutes } from "../router/router.native.js";
|
|
8
10
|
import { useSortedScreens, getQualifiedRouteComponent } from "../router/useScreens.native.js";
|
|
9
11
|
import { Screen } from "./Screen.native.js";
|
|
@@ -123,9 +125,22 @@ function useSlot() {
|
|
|
123
125
|
state,
|
|
124
126
|
descriptorsRef
|
|
125
127
|
} = context,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
128
|
+
notFoundState = useNotFoundState();
|
|
129
|
+
if (notFoundState) {
|
|
130
|
+
var notFoundRouteNode = notFoundState.notFoundRouteNode || findRouteNodeByPath(notFoundState.notFoundPath, globalRouteNode) || findNearestNotFoundRoute(notFoundState.originalPath, globalRouteNode);
|
|
131
|
+
if (notFoundRouteNode) {
|
|
132
|
+
var NotFoundComponent = getQualifiedRouteComponent(notFoundRouteNode);
|
|
133
|
+
return /* @__PURE__ */_jsx(NotFoundComponent, {
|
|
134
|
+
route: {
|
|
135
|
+
params: {}
|
|
136
|
+
}
|
|
137
|
+
}, "one-not-found-inline");
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
var current = state.routes.find(function (route, i) {
|
|
142
|
+
return state.index === i;
|
|
143
|
+
});
|
|
129
144
|
if (!current) return null;
|
|
130
145
|
var renderedElement = (_ref = (_descriptorsRef_current_current_key = descriptorsRef.current[current.key]) === null || _descriptorsRef_current_current_key === void 0 ? void 0 : _descriptorsRef_current_current_key.render()) !== null && _ref !== void 0 ? _ref : null;
|
|
131
146
|
return renderedElement !== null ? /* @__PURE__ */React.cloneElement(renderedElement, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","Fragment","_Fragment","StackRouter","useNavigationBuilder","React","SafeAreaView","useFilterScreenChildren","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","getQualifiedRouteComponent","Screen","registerClearSlotStates","registerSetSlotState","SLOT_STATIC_KEY","globalSlotState","Map","slotStateListeners","Set","getSlotState","slotName","get","setSlotState","state","delete","set","forEach","listener","clearAllSlotStates","clear","useSlotStateSubscription","forceUpdate","useReducer","x","useEffect","add","NavigatorContext","createContext","process","env","NODE_ENV","displayName","Navigator","param","initialRouteName","screenOptions","children","router","contextKey","screens","otherSlot","protectedScreens","isCustomNavigator","sorted","length","QualifiedNavigator","console","warn","navigation","descriptors","NavigationContent","id","descriptorsRef","useRef","current","value","useMemo","Provider","useNavigatorContext","context","useContext","Error","useSlot","_ref","_descriptorsRef_current_current_key","
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","Fragment","_Fragment","StackRouter","useNavigationBuilder","React","SafeAreaView","useFilterScreenChildren","findNearestNotFoundRoute","findRouteNodeByPath","useNotFoundState","useContextKey","routeNode","globalRouteNode","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","getQualifiedRouteComponent","Screen","registerClearSlotStates","registerSetSlotState","SLOT_STATIC_KEY","globalSlotState","Map","slotStateListeners","Set","getSlotState","slotName","get","setSlotState","state","delete","set","forEach","listener","clearAllSlotStates","clear","useSlotStateSubscription","forceUpdate","useReducer","x","useEffect","add","NavigatorContext","createContext","process","env","NODE_ENV","displayName","Navigator","param","initialRouteName","screenOptions","children","router","contextKey","screens","otherSlot","protectedScreens","isCustomNavigator","sorted","length","QualifiedNavigator","console","warn","navigation","descriptors","NavigationContent","id","descriptorsRef","useRef","current","value","useMemo","Provider","useNavigatorContext","context","useContext","Error","useSlot","_ref","_descriptorsRef_current_current_key","notFoundState","notFoundRouteNode","notFoundPath","originalPath","NotFoundComponent","route","params","routes","find","i","index","renderedElement","key","render","cloneElement","Slot","memo","props","QualifiedSlot","DefaultNavigator","style","flex","getScopedSlotKey","layoutContextKey","useNamedSlot","scopedKey","slotState","activeRouteKey","isIntercepted","activeRouteNode","Component"],"sources":["../../../src/views/Navigator.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -141,60 +141,54 @@ function createFileSystemRouterPlugin(options) {
|
|
|
141
141
|
(sp) => Object.keys(sp).every((key) => sp[key] === currentParams[key])
|
|
142
142
|
);
|
|
143
143
|
}
|
|
144
|
-
const is404 = route.isNotFound || !getPageExport(exported) || isMissingSsgSlug
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
const is404 = route.isNotFound || !getPageExport(exported) || isMissingSsgSlug;
|
|
145
|
+
let notFoundRoutePath = null;
|
|
146
|
+
if (isMissingSsgSlug) {
|
|
147
|
+
let searchDir = route.file.replace(/^\.\//, "").replace(/\/[^/]+$/, "");
|
|
147
148
|
for (; ; ) {
|
|
148
149
|
for (const ext of [".tsx", ".ts", ".jsx", ".js"]) {
|
|
149
150
|
const candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);
|
|
150
151
|
try {
|
|
151
|
-
if (
|
|
152
|
+
if ((await runner.import(candidate))?.default) {
|
|
152
153
|
notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : "/+not-found";
|
|
153
154
|
break;
|
|
154
155
|
}
|
|
155
156
|
} catch {
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
|
-
if (
|
|
159
|
+
if (notFoundRoutePath || !searchDir) break;
|
|
159
160
|
const parent = searchDir.replace(/\/[^/]+$/, "");
|
|
160
161
|
parent === searchDir ? searchDir = "" : searchDir = parent;
|
|
161
162
|
}
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
loaderData: void 0,
|
|
171
|
-
loaderProps,
|
|
172
|
-
path: notFoundRoutePath,
|
|
173
|
-
preloads,
|
|
174
|
-
matches: []
|
|
175
|
-
});
|
|
176
|
-
return new Response(notFoundHtml, {
|
|
177
|
-
status: 404,
|
|
178
|
-
headers: { "Content-Type": "text/html" }
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
return new Response("<html><body><h1>404 - Not Found</h1></body></html>", {
|
|
182
|
-
status: 404,
|
|
183
|
-
headers: { "Content-Type": "text/html" }
|
|
184
|
-
});
|
|
163
|
+
if (!notFoundRoutePath)
|
|
164
|
+
return new Response(
|
|
165
|
+
"<html><body><h1>404 - Not Found</h1></body></html>",
|
|
166
|
+
{
|
|
167
|
+
status: 404,
|
|
168
|
+
headers: { "Content-Type": "text/html" }
|
|
169
|
+
}
|
|
170
|
+
);
|
|
185
171
|
}
|
|
186
|
-
const
|
|
172
|
+
const renderPath = notFoundRoutePath || loaderProps?.path || "/";
|
|
173
|
+
let html = await render({
|
|
187
174
|
mode: isSpaShell ? "spa-shell" : route.type === "ssg" ? "ssg" : route.type === "ssr" ? "ssr" : "spa",
|
|
188
175
|
loaderData,
|
|
189
176
|
loaderProps,
|
|
190
|
-
path:
|
|
177
|
+
path: renderPath,
|
|
191
178
|
preloads,
|
|
192
179
|
matches
|
|
193
180
|
});
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
181
|
+
if (is404) {
|
|
182
|
+
if (notFoundRoutePath) {
|
|
183
|
+
const originalPath = loaderProps?.path || "/", notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;
|
|
184
|
+
html = html.includes("</head>") ? html.replace("</head>", `${notFoundMarker}</head>`) : html.replace("<body", `${notFoundMarker}<body`);
|
|
185
|
+
}
|
|
186
|
+
return new Response(html, {
|
|
187
|
+
status: 404,
|
|
188
|
+
headers: { "Content-Type": "text/html" }
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return html;
|
|
198
192
|
} catch (err) {
|
|
199
193
|
if (isResponse(err))
|
|
200
194
|
return err;
|