UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

116 lines 6.54 kB
var import_vitest = require("vitest"); var import_cleanUrl = require("./cleanUrl.cjs"); function roundtrip(path) { const loaderPath = (0, import_cleanUrl.getLoaderPath)(path, false); return (0, import_cleanUrl.getPathFromLoaderPath)(loaderPath); } (0, import_vitest.describe)("cleanUrl roundtrip", () => { (0, import_vitest.it)("simple path", () => { (0, import_vitest.expect)(roundtrip("/docs/getting-started")).toBe("/docs/getting-started"); }); (0, import_vitest.it)("path with underscore prefix (/_/docs)", () => { (0, import_vitest.expect)(roundtrip("/_/docs/getting-started")).toBe("/_/docs/getting-started"); }); (0, import_vitest.it)("path with underscore prefix (/_/terms)", () => { (0, import_vitest.expect)(roundtrip("/_/terms")).toBe("/_/terms"); }); (0, import_vitest.it)("path with underscore in segment name", () => { (0, import_vitest.expect)(roundtrip("/my_page/test")).toBe("/my_page/test"); }); (0, import_vitest.it)("deeply nested path", () => { (0, import_vitest.expect)(roundtrip("/deep/nested/path/here")).toBe("/deep/nested/path/here"); }); (0, import_vitest.it)("root path", () => { (0, import_vitest.expect)(roundtrip("/")).toBe("/"); }); (0, import_vitest.it)("single segment", () => { (0, import_vitest.expect)(roundtrip("/about")).toBe("/about"); }); (0, import_vitest.it)("path with query string is stripped", () => { const loaderPath = (0, import_cleanUrl.getLoaderPath)("/docs/intro?foo=bar", false); (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)(loaderPath)).toBe("/docs/intro"); }); (0, import_vitest.it)("path with hash is stripped", () => { const loaderPath = (0, import_cleanUrl.getLoaderPath)("/docs/intro#section", false); (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)(loaderPath)).toBe("/docs/intro"); }); (0, import_vitest.it)("path with trailing slash", () => { const loaderPath = (0, import_cleanUrl.getLoaderPath)("/docs/intro/", false); (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)(loaderPath)).toBe("/docs/intro"); }); }); (0, import_vitest.describe)("getLoaderPath format", () => { (0, import_vitest.it)("includes /assets/ prefix", () => { const result = (0, import_cleanUrl.getLoaderPath)("/docs/intro", false); (0, import_vitest.expect)(result).toMatch(/^\/assets\//); }); (0, import_vitest.it)("ends with loader postfix", () => { const result = (0, import_cleanUrl.getLoaderPath)("/docs/intro", false); (0, import_vitest.expect)(result).toMatch(/_\d+_vxrn_loader\.js$/); }); (0, import_vitest.it)("includes /_one prefix in dev mode", () => { const originalEnv = process.env.NODE_ENV; process.env.NODE_ENV = "development"; try { const result = (0, import_cleanUrl.getLoaderPath)("/docs/intro", false); (0, import_vitest.expect)(result).toMatch(/^\/_one\/assets\//); } finally { process.env.NODE_ENV = originalEnv; } }); (0, import_vitest.it)("includes cache bust segment", () => { const result = (0, import_cleanUrl.getLoaderPath)("/docs/intro", false, "12345"); (0, import_vitest.expect)(result).toContain("_refetch_12345_"); }); }); (0, import_vitest.describe)("NTFS-reserved characters in route-derived names", () => { (0, import_vitest.it)("roundtrips a root dynamic route pattern", () => { (0, import_vitest.expect)(roundtrip("/:param")).toBe("/:param"); }); (0, import_vitest.it)("roundtrips a nested dynamic route pattern", () => { (0, import_vitest.expect)(roundtrip("/dashboard/:appId")).toBe("/dashboard/:appId"); }); (0, import_vitest.it)("roundtrips a catch-all pattern", () => { (0, import_vitest.expect)(roundtrip("/*")).toBe("/*"); }); (0, import_vitest.it)("roundtrips hostile concrete param values (chars that survive URL parsing raw)", () => { (0, import_vitest.expect)(roundtrip("/blog/a:b*c")).toBe("/blog/a:b*c"); }); (0, import_vitest.it)("emits filesystem-legal names for the full reserved set via preload paths", () => { (0, import_vitest.expect)((0, import_cleanUrl.getPreloadPath)('/blog/a:b*c"d<e>f|g?h')).not.toMatch(/[<>:"|?*]/); }); (0, import_vitest.it)("roundtrips literal equals signs (self-escape)", () => { (0, import_vitest.expect)(roundtrip("/foo=bar")).toBe("/foo=bar"); }); (0, import_vitest.it)("roundtrips equals followed by hex-looking characters", () => { (0, import_vitest.expect)(roundtrip("/x=3ay")).toBe("/x=3ay"); }); (0, import_vitest.it)("emits no NTFS-reserved characters in loader filenames", () => { (0, import_vitest.expect)((0, import_cleanUrl.getLoaderPath)("/dashboard/:appId", false)).not.toMatch(/[<>:"|?*]/); }); (0, import_vitest.it)("emits no NTFS-reserved characters in preload filenames", () => { (0, import_vitest.expect)((0, import_cleanUrl.getPreloadPath)("/:param")).not.toMatch(/[<>:"|?*]/); (0, import_vitest.expect)((0, import_cleanUrl.getPreloadPath)("/*")).not.toMatch(/[<>:"|?*]/); }); (0, import_vitest.it)("encodeReservedFilenameChars is identity for clean paths", () => { (0, import_vitest.expect)((0, import_cleanUrl.encodeReservedFilenameChars)("/blog/my-slug.html")).toBe("/blog/my-slug.html"); }); (0, import_vitest.it)("encodes the html artifact path for non-prerendered dynamic routes", () => { (0, import_vitest.expect)((0, import_cleanUrl.encodeReservedFilenameChars)("/dashboard/:appId.html")).toBe("/dashboard/=3aappId.html"); (0, import_vitest.expect)((0, import_cleanUrl.encodeReservedFilenameChars)("/*.html")).toBe("/=2a.html"); }); }); (0, import_vitest.describe)("getPathFromLoaderPath", () => { (0, import_vitest.it)("strips /_one/assets prefix", () => { (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)("/_one/assets/docs_intro_999_vxrn_loader.js")).toBe("/docs/intro"); }); (0, import_vitest.it)("strips /assets prefix", () => { (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)("/assets/docs_intro_999_vxrn_loader.js")).toBe("/docs/intro"); }); (0, import_vitest.it)("strips refetch cache bust", () => { (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)("/assets/docs_intro_refetch_12345__999_vxrn_loader.js")).toBe("/docs/intro"); }); (0, import_vitest.it)("decodes escaped underscores back to literal underscores", () => { (0, import_vitest.expect)((0, import_cleanUrl.getPathFromLoaderPath)("/assets/___docs_intro_999_vxrn_loader.js")).toBe("/_/docs/intro"); }); });