UNPKG

one

Version:

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

1,850 lines (1,849 loc) 71.4 kB
var import_immer = require("immer"), import_vitest = require("vitest"), import_findFocusedRoute = require("../findFocusedRoute.cjs"), import_getPathFromState = require("../getPathFromState.cjs"), import_getStateFromPath = require("../getStateFromPath.cjs"); const changePath = (state, path) => (0, import_immer.produce)(state, draftState => { const route = (0, import_findFocusedRoute.findFocusedRoute)(draftState); route.path = path; }); (0, import_vitest.test)("returns undefined for invalid path", () => { (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("//")).toBeUndefined(); }); import_vitest.test.skip("converts path string to initial state", () => { const path = "foo/bar/baz%20qux?author=jane%20%26%20co&valid=true", state = { routes: [{ name: "foo", state: { routes: [{ name: "bar", state: { routes: [{ name: "baz qux", params: { author: "jane & co", valid: "true" }, path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state))).toEqual(changePath(state, "/foo/bar/baz%20qux?author=jane%20%26%20co&valid=true")); }); import_vitest.test.skip("decodes encoded params in path", () => { const path = "/foo/bar/bar_%23_foo", config = { screens: { Foo: { path: "foo", screens: { Bar: { path: "/bar/:id" } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", params: { id: "bar_#_foo" }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getPathFromState.getPathFromState)((0, import_getStateFromPath.getStateFromPath)(path, config), config)).toEqual(path); }); import_vitest.test.skip("decodes encoded params in path that have encoded /", () => { const path = "/foo/bar/bar_%2F_foo", config = { screens: { Foo: { path: "foo", screens: { Bar: { path: "/bar/:id" } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", params: { id: "bar_/_foo" }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getPathFromState.getPathFromState)((0, import_getStateFromPath.getStateFromPath)(path, config), config)).toEqual(path); }); import_vitest.test.skip("converts path string to initial state with config", () => { const path = "/foo/bar/sweet/apple/baz/jane?count=10&answer=42&valid=true", config = { screens: { Foo: { path: "foo", screens: { Bar: { path: "bar/:type/:fruit", screens: { Baz: { path: "baz/:author", parse: { author: author => author.replace(/^\w/, c => c.toUpperCase()), count: Number, valid: Boolean }, stringify: { author: author => author.toLowerCase() } } } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", params: { fruit: "apple", type: "sweet" }, state: { routes: [{ name: "Baz", params: { author: "Jane", count: 10, answer: "42", valid: !0 }, path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles leading slash when converting", () => { const path = "/foo/bar/?count=42"; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path)).toEqual({ routes: [{ name: "foo", state: { routes: [{ name: "bar", params: { count: "42" }, path }] } }] }); }); (0, import_vitest.test)("handles ending slash when converting", () => { const path = "foo/bar/?count=42"; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path)).toEqual({ routes: [{ name: "foo", state: { routes: [{ name: "bar", params: { count: "42" }, path }] } }] }); }); (0, import_vitest.test)("handles route without param", () => { const path = "foo/bar", state = { routes: [{ name: "foo", state: { routes: [{ name: "bar", path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state))).toEqual(changePath(state, "/foo/bar")); }); import_vitest.test.skip("converts path string to initial state with config with nested screens", () => { const path = "/foe/bar/sweet/apple/baz/jane?count=10&answer=42&valid=true", config = { screens: { Foo: { path: "foo", screens: { Foe: { path: "foe", exact: !0, screens: { Bar: { path: "bar/:type/:fruit", screens: { Baz: { path: "baz/:author", parse: { author: author => author.replace(/^\w/, c => c.toUpperCase()), count: Number, valid: Boolean }, stringify: { author: author => author.toLowerCase() } } } } } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Foe", state: { routes: [{ name: "Bar", params: { fruit: "apple", type: "sweet" }, state: { routes: [{ name: "Baz", params: { author: "Jane", count: 10, answer: "42", valid: !0 }, path }] } }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("converts path string to initial state with config with nested screens and unused parse functions", () => { const path = "/foe/baz/jane?count=10&answer=42&valid=true", config = { screens: { Foo: { path: "foo", screens: { Foe: { path: "foe", exact: !0, screens: { Baz: { path: "baz/:author", parse: { author: author => author.replace(/^\w/, c => c.toUpperCase()), count: Number, valid: Boolean, id: Boolean } } } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Foe", state: { routes: [{ name: "Baz", params: { author: "Jane", count: 10, answer: "42", valid: !0 }, path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "/foe/baz/Jane?count=10&answer=42&valid=true")); }); import_vitest.test.skip("handles nested object with unused configs and with parse in it", () => { const path = "/bar/sweet/apple/foe/bis/jane?count=10&answer=42&valid=true", config = { screens: { Bar: { path: "bar/:type/:fruit", screens: { Foo: { screens: { Foe: { path: "foe", screens: { Baz: { screens: { Bos: { path: "bos", exact: !0 }, Bis: { path: "bis/:author", stringify: { author: author => author.replace(/^\w/, c => c.toLowerCase()) }, parse: { author: author => author.replace(/^\w/, c => c.toUpperCase()), count: Number, valid: Boolean } } } } } } } } } } } }, state = { routes: [{ name: "Bar", params: { fruit: "apple", type: "sweet" }, state: { routes: [{ name: "Foo", state: { routes: [{ name: "Foe", state: { routes: [{ name: "Baz", state: { routes: [{ name: "Bis", params: { author: "Jane", count: 10, answer: "42", valid: !0 }, path }] } }] } }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles parse in nested object for second route depth", () => { const path = "/baz", config = { screens: { Foo: { path: "foo", screens: { Foe: { path: "foe", exact: !0 }, Bar: { path: "bar", exact: !0, screens: { Baz: { path: "baz", exact: !0 } } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", state: { routes: [{ name: "Baz", path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles parse in nested object for second route depth and and path and parse in roots", () => { const path = "/baz", config = { screens: { Foo: { path: "foo/:id", parse: { id: Number }, stringify: { id: id => `id=${id}` }, screens: { Foe: "foe", Bar: { screens: { Baz: { path: "baz", exact: !0 } } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", state: { routes: [{ name: "Baz", path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles path at top level", () => { const path = "/foo/fruits/apple", config = { path: "foo", screens: { Foo: { screens: { Fruits: "fruits/:fruit" } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Fruits", params: { fruit: "apple" }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles initialRouteName at top level", () => { const path = "/baz", config = { initialRouteName: "Boo", screens: { Foo: { screens: { Foe: "foe", Bar: { screens: { Baz: "baz" } } } } } }, state = { index: 1, routes: [{ name: "Boo" }, { name: "Foo", state: { routes: [{ name: "Bar", state: { routes: [{ name: "Baz", path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles initialRouteName inside a screen", () => { const path = "/baz", config = { screens: { Foo: { initialRouteName: "Foe", screens: { Foe: "foe", Bar: { screens: { Baz: "baz" } } } } } }, state = { routes: [{ name: "Foo", state: { index: 1, routes: [{ name: "Foe" }, { name: "Bar", state: { routes: [{ name: "Baz", path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles initialRouteName included in path", () => { const path = "/baz", config = { screens: { Foo: { initialRouteName: "Foe", screens: { Foe: { screens: { Baz: "baz" } }, Bar: "bar" } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Foe", state: { routes: [{ name: "Baz", path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles two initialRouteNames", () => { const path = "/bar/sweet/apple/foe/bis/jane?answer=42&count=10&valid=true", config = { screens: { Bar: { path: "bar/:type/:fruit", screens: { Foo: { screens: { Foe: { path: "foe", screens: { Baz: { initialRouteName: "Bos", screens: { Bos: { path: "bos", exact: !0 }, Bis: { path: "bis/:author", stringify: { author: author => author.replace(/^\w/, c => c.toLowerCase()) }, parse: { author: author => author.replace(/^\w/, c => c.toUpperCase()), count: Number, valid: Boolean } } } } } } } } } } } }, state = { routes: [{ name: "Bar", params: { fruit: "apple", type: "sweet" }, state: { routes: [{ name: "Foo", state: { routes: [{ name: "Foe", state: { routes: [{ name: "Baz", state: { index: 1, routes: [{ name: "Bos" }, { name: "Bis", params: { answer: "42", author: "Jane", count: 10, valid: !0 }, path }] } }] } }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("accepts initialRouteName without config for it", () => { const path = "/bar/sweet/apple/foe/bis/jane?answer=42&count=10&valid=true", config = { screens: { Bar: { path: "bar/:type/:fruit", screens: { Foo: { screens: { Foe: { path: "foe", screens: { Baz: { initialRouteName: "Bas", screens: { Bos: { path: "bos", exact: !0 }, Bis: { path: "bis/:author", stringify: { author: author => author.replace(/^\w/, c => c.toLowerCase()) }, parse: { author: author => author.replace(/^\w/, c => c.toUpperCase()), count: Number, valid: Boolean } } } } } } } } } } } }, state = { routes: [{ name: "Bar", params: { fruit: "apple", type: "sweet" }, state: { routes: [{ name: "Foo", state: { routes: [{ name: "Foe", state: { routes: [{ name: "Baz", state: { index: 1, routes: [{ name: "Bas" }, { name: "Bis", params: { answer: "42", author: "Jane", count: 10, valid: !0 }, path }] } }] } }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("returns undefined if no matching screen is present (top level path)", () => { (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("/foo/bar", { path: "qux", screens: { Foo: { screens: { Foe: "foo", Bar: { screens: { Baz: "bar" } } } } } })).toBeUndefined(); }); (0, import_vitest.test)("returns undefined if no matching screen is present", () => { (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("/baz", { screens: { Foo: { path: "foo", screens: { Foe: "foe", Bar: { screens: { Baz: "baz" } } } } } })).toBeUndefined(); }); (0, import_vitest.test)("returns undefined if path is empty and no matching screen is present", () => { (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("", { screens: { Foo: { screens: { Foe: "foe", Bar: { screens: { Baz: "baz" } } } } } })).toBeUndefined(); }); import_vitest.test.skip("returns matching screen if path is empty", () => { const config = { screens: { Foo: { screens: { Foe: "foe", Bar: { screens: { Qux: "", Baz: "baz" } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", state: { routes: [{ name: "Qux", path: "" }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("", config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "")); }); import_vitest.test.skip("returns matching screen if path is only slash", () => { const config = { screens: { Foo: { screens: { Foe: "foe", Bar: { screens: { Qux: "", Baz: "baz" } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", state: { routes: [{ name: "Qux", path: "" }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("/", config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "")); }); (0, import_vitest.test)("returns matching screen with params if path is empty", () => { const path = "?foo=42", config = { screens: { Foo: { screens: { Foe: "foe", Bar: { screens: { Qux: { path: "", parse: { foo: Number } }, Baz: "baz" } } } } } }, state = { routes: [{ name: "Foo", state: { routes: [{ name: "Bar", state: { routes: [{ name: "Qux", params: { foo: 42 }, path }] } }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "/?foo=42")); }); (0, import_vitest.test)("doesn't match nested screen if path is empty", () => { (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)("", { screens: { Foo: { screens: { Foe: "foe", Bar: { path: "bar", screens: { Qux: { path: "", parse: { foo: Number } } } } } } } })).toBeUndefined(); }); import_vitest.test.skip("chooses more exhaustive pattern", () => { const path = "/foo/5", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bis", params: { id: 5 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); (0, import_vitest.test)("handles same paths beginnings", () => { const path = "/foos", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos" } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bis", path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles same paths beginnings with params", () => { const path = "/foos/5", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos/:id", parse: { id: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bis", params: { id: 5 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles not taking path with too many segments", () => { const path = "/foos/5", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip", parse: { id: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bis", params: { id: 5 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles differently ordered params v1", () => { const path = "/foos/5/res/20", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos/:id", parse: { id: Number } }, Bas: { path: "foos/:id/res/:pwd", parse: { id: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, pwd: 20 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles differently ordered params v2", () => { const path = "/5/20/foos/res", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos/:id", parse: { id: Number } }, Bas: { path: ":id/:pwd/foos/res", parse: { id: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, pwd: 20 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles differently ordered params v3", () => { const path = "/foos/5/20/res", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:pwd/res", parse: { id: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, pwd: 20 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handles differently ordered params v4", () => { const path = "5/foos/res/20", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foos/:id", parse: { id: Number } }, Bas: { path: ":id/foos/res/:pwd", parse: { id: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, pwd: 20 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "/5/foos/res/20")); }); import_vitest.test.skip("handles simple optional params", () => { const path = "/foos/5", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?", parse: { id: Number, nip: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle 2 optional params at the end v1", () => { const path = "/foos/5", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?/:pwd?", parse: { id: Number, nip: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle 2 optional params at the end v2", () => { const path = "/foos/5/10", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?/:pwd?", parse: { id: Number, nip: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, nip: 10 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle 2 optional params at the end v3", () => { const path = "/foos/5/10/15", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?/:pwd?", parse: { id: Number, nip: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, nip: 10, pwd: 15 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle optional params in the middle v1", () => { const path = "/foos/5/10", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?/:pwd", parse: { id: Number, nip: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, pwd: 10 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle optional params in the middle v2", () => { const path = "/foos/5/10/15", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?/:pwd", parse: { id: Number, nip: Number, pwd: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, nip: 10, pwd: 15 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle optional params in the middle v3", () => { const path = "/foos/5/10/15", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:id/:nip?/:pwd/:smh", parse: { id: Number, nip: Number, pwd: Number, smh: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { id: 5, pwd: 10, smh: 15 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle optional params in the middle v4", () => { const path = "/foos/5/10", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:nip?/:pwd/:smh?/:id", parse: { id: Number, nip: Number, pwd: Number, smh: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { pwd: 5, id: 10 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle optional params in the middle v5", () => { const path = "/foos/5/10/15", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: "foos/:nip?/:pwd/:smh?/:id", parse: { id: Number, nip: Number, pwd: Number, smh: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { nip: 5, pwd: 10, id: 15 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(state); }); import_vitest.test.skip("handle optional params in the beginning v1", () => { const path = "5/10/foos/15", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: ":nip?/:pwd/foos/:smh?/:id", parse: { id: Number, nip: Number, pwd: Number, smh: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { nip: 5, pwd: 10, id: 15 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "/5/10/foos/15")); }); import_vitest.test.skip("handle optional params in the beginning v2", () => { const path = "5/10/foos/15", config = { screens: { Foe: { path: "/", initialRouteName: "Foo", screens: { Foo: "foo", Bis: { path: "foo/:id", parse: { id: Number } }, Bas: { path: ":nip?/:smh?/:pwd/foos/:id", parse: { id: Number, nip: Number, pwd: Number, smh: Number } } } } } }, state = { routes: [{ name: "Foe", state: { index: 1, routes: [{ name: "Foo" }, { name: "Bas", params: { nip: 5, pwd: 10, id: 15 }, path }] } }] }; (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)(path, config)).toEqual(state), (0, import_vitest.expect)((0, import_getStateFromPath.getStateFromPath)((0, import_getPathFromState.getPathFromState)(state, config), config)).toEqual(changePath(state, "/5/10/foos/15")); }); import_vitest.test.skip("merges parent patterns if needed", () => { const path = "foo/42/baz/babel", config = { screens: { Foo: { path: "foo/:bar", parse: { bar: Number }, screens: { Baz: "baz/:qux" } } } }, state = { routes: [{ name: "Foo", params: { bar: 42 }, state: { routes: [{ name: "Baz", params: {