one 1.19.3 → 1.19.5

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 (66) hide show
  1. package/dist/cjs/hooks.cjs +3 -5
  2. package/dist/cjs/hooks.native.js +3 -5
  3. package/dist/cjs/hooks.native.js.map +1 -1
  4. package/dist/cjs/router/Route.cjs +2 -1
  5. package/dist/cjs/router/Route.native.js +2 -1
  6. package/dist/cjs/router/Route.native.js.map +1 -1
  7. package/dist/cjs/router/path.cjs +73 -0
  8. package/dist/cjs/router/path.native.js +98 -0
  9. package/dist/cjs/router/path.native.js.map +1 -0
  10. package/dist/cjs/router/path.test.cjs +62 -0
  11. package/dist/cjs/router/path.test.native.js +65 -0
  12. package/dist/cjs/router/path.test.native.js.map +1 -0
  13. package/dist/cjs/router/router.cjs +7 -12
  14. package/dist/cjs/router/router.native.js +7 -12
  15. package/dist/cjs/router/router.native.js.map +1 -1
  16. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +26 -0
  17. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +26 -0
  18. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  19. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.cjs +125 -0
  20. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js +129 -0
  21. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  22. package/dist/esm/hooks.mjs +3 -5
  23. package/dist/esm/hooks.mjs.map +1 -1
  24. package/dist/esm/hooks.native.js +3 -5
  25. package/dist/esm/hooks.native.js.map +1 -1
  26. package/dist/esm/router/Route.mjs +2 -1
  27. package/dist/esm/router/Route.mjs.map +1 -1
  28. package/dist/esm/router/Route.native.js +2 -1
  29. package/dist/esm/router/Route.native.js.map +1 -1
  30. package/dist/esm/router/path.mjs +42 -0
  31. package/dist/esm/router/path.mjs.map +1 -0
  32. package/dist/esm/router/path.native.js +64 -0
  33. package/dist/esm/router/path.native.js.map +1 -0
  34. package/dist/esm/router/path.test.mjs +63 -0
  35. package/dist/esm/router/path.test.mjs.map +1 -0
  36. package/dist/esm/router/path.test.native.js +63 -0
  37. package/dist/esm/router/path.test.native.js.map +1 -0
  38. package/dist/esm/router/router.mjs +4 -10
  39. package/dist/esm/router/router.mjs.map +1 -1
  40. package/dist/esm/router/router.native.js +4 -10
  41. package/dist/esm/router/router.native.js.map +1 -1
  42. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +26 -0
  43. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  44. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +26 -0
  45. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  46. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs +125 -0
  47. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs.map +1 -1
  48. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js +129 -0
  49. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  50. package/package.json +9 -9
  51. package/src/hooks.tsx +9 -9
  52. package/src/router/Route.tsx +5 -6
  53. package/src/router/path.test.ts +95 -0
  54. package/src/router/path.ts +69 -0
  55. package/src/router/router.ts +5 -20
  56. package/src/vite/plugins/fileSystemRouterPlugin.test.ts +133 -0
  57. package/src/vite/plugins/fileSystemRouterPlugin.tsx +29 -1
  58. package/types/hooks.d.ts.map +1 -1
  59. package/types/router/Route.d.ts.map +1 -1
  60. package/types/router/path.d.ts +8 -0
  61. package/types/router/path.d.ts.map +1 -0
  62. package/types/router/path.test.d.ts +2 -0
  63. package/types/router/path.test.d.ts.map +1 -0
  64. package/types/router/router.d.ts +1 -1
  65. package/types/router/router.d.ts.map +1 -1
  66. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
@@ -42,6 +42,7 @@ import_vitest.vi.mock("vite", async function () {
42
42
  });
43
43
  (0, import_vitest.describe)("createFileSystemRouterPlugin", function () {
44
44
  var previousIsVxrnCli = process.env.IS_VXRN_CLI;
45
+ var previousViteEnvironment = process.env.VITE_ENVIRONMENT;
45
46
  var previousVxrnPluginConfig;
46
47
  var tempRoot;
47
48
  (0, import_vitest.beforeEach)(function () {
@@ -60,6 +61,11 @@ import_vitest.vi.mock("vite", async function () {
60
61
  } else {
61
62
  process.env.IS_VXRN_CLI = previousIsVxrnCli;
62
63
  }
64
+ if (previousViteEnvironment === void 0) {
65
+ delete process.env.VITE_ENVIRONMENT;
66
+ } else {
67
+ process.env.VITE_ENVIRONMENT = previousViteEnvironment;
68
+ }
63
69
  if (previousVxrnPluginConfig === void 0) {
64
70
  delete globalThis.__vxrnPluginConfig__;
65
71
  } else {
@@ -112,5 +118,128 @@ import_vitest.vi.mock("vite", async function () {
112
118
  await (0, import_vitest.expect)(Promise.resolve(watcherListener("add", import_path.default.join(appDir, "new-route.tsx")))).resolves.toBeUndefined();
113
119
  (0, import_vitest.expect)(warn).toHaveBeenCalledWith(import_vitest.expect.stringContaining("[one] Failed to rebuild routes"), import_vitest.expect.any(Error));
114
120
  });
121
+ (0, import_vitest.it)("caches dev ssg html until the module runner is invalidated", async function () {
122
+ process.env.VITE_ENVIRONMENT = "ssr";
123
+ tempRoot = (0, import_fs.mkdtempSync)(import_path.default.join((0, import_os.tmpdir)(), "one-router-ssg-cache-"));
124
+ var appDir = import_path.default.join(tempRoot, "app");
125
+ var routeFile = import_path.default.join(appDir, "index+ssg.tsx");
126
+ (0, import_fs.writeFileSync)(import_path.default.join(tempRoot, "package.json"), "{}\n");
127
+ (0, import_fs.mkdirSync)(appDir);
128
+ (0, import_fs.writeFileSync)(routeFile, "export default function Index() { return null }\n");
129
+ var {
130
+ createServerModuleRunner
131
+ } = await import("vite");
132
+ var {
133
+ createFileSystemRouterPlugin
134
+ } = await import("./fileSystemRouterPlugin");
135
+ var {
136
+ virtualEntryId
137
+ } = await import("./virtualEntryConstants");
138
+ var renderCount = 0;
139
+ var render = import_vitest.vi.fn(async function () {
140
+ return `<html><body>${++renderCount}</body></html>`;
141
+ });
142
+ var runner = {
143
+ clearCache: import_vitest.vi.fn(),
144
+ import: import_vitest.vi.fn(async function (id) {
145
+ if (id === virtualEntryId) {
146
+ return {
147
+ default: {
148
+ render
149
+ }
150
+ };
151
+ }
152
+ if (id === routeFile) {
153
+ return {
154
+ default: function _default() {
155
+ return null;
156
+ }
157
+ };
158
+ }
159
+ return {};
160
+ })
161
+ };
162
+ import_vitest.vi.mocked(createServerModuleRunner).mockReturnValue(runner);
163
+ var middlewareHandlers = [];
164
+ var watcherListeners = /* @__PURE__ */new Map();
165
+ var server = {
166
+ environments: {
167
+ ssr: {}
168
+ },
169
+ hot: {
170
+ send: import_vitest.vi.fn()
171
+ },
172
+ middlewares: {
173
+ use: import_vitest.vi.fn(function (handler) {
174
+ middlewareHandlers.push(handler);
175
+ })
176
+ },
177
+ watcher: {
178
+ add: import_vitest.vi.fn(),
179
+ addListener: import_vitest.vi.fn(function (event, listener) {
180
+ watcherListeners.set(event, [...(watcherListeners.get(event) || []), listener]);
181
+ }),
182
+ on: import_vitest.vi.fn(function (event, listener) {
183
+ watcherListeners.set(event, [...(watcherListeners.get(event) || []), listener]);
184
+ })
185
+ }
186
+ };
187
+ var plugin = createFileSystemRouterPlugin({
188
+ router: {
189
+ root: appDir
190
+ },
191
+ server: {
192
+ loggingEnabled: false
193
+ }
194
+ });
195
+ var installMiddlewares = plugin.configureServer(server);
196
+ installMiddlewares();
197
+ var routeMiddleware = middlewareHandlers.at(-1);
198
+ if (!routeMiddleware) {
199
+ throw new Error("Expected route middleware to be registered");
200
+ }
201
+ var handleRouteRequest = routeMiddleware;
202
+ async function request(pathname) {
203
+ var chunks = [];
204
+ var req = {
205
+ originalUrl: pathname,
206
+ url: pathname,
207
+ headers: {
208
+ host: "localhost"
209
+ },
210
+ method: "GET"
211
+ };
212
+ var res = {
213
+ setHeader: import_vitest.vi.fn(),
214
+ appendHeader: import_vitest.vi.fn(),
215
+ writeHead: import_vitest.vi.fn(),
216
+ write: import_vitest.vi.fn(function (chunk) {
217
+ chunks.push(chunk);
218
+ }),
219
+ end: import_vitest.vi.fn()
220
+ };
221
+ var next = import_vitest.vi.fn(function (error) {
222
+ if (error) {
223
+ throw error;
224
+ }
225
+ throw new Error("Expected One router middleware to handle request");
226
+ });
227
+ await handleRouteRequest(req, res, next);
228
+ (0, import_vitest.expect)(res.end).toHaveBeenCalled();
229
+ return chunks.join("");
230
+ }
231
+ await (0, import_vitest.expect)(request("/")).resolves.toContain("<body>1</body>");
232
+ await (0, import_vitest.expect)(request("/")).resolves.toContain("<body>1</body>");
233
+ (0, import_vitest.expect)(render).toHaveBeenCalledTimes(1);
234
+ var allListeners = watcherListeners.get("all") || [];
235
+ var invalidateRunner = allListeners[0];
236
+ if (!invalidateRunner) {
237
+ throw new Error("Expected runner invalidation listener to be registered");
238
+ }
239
+ invalidateRunner("change", routeFile);
240
+ await (0, import_vitest.expect)(request("/")).resolves.toContain("<body>2</body>");
241
+ (0, import_vitest.expect)(render).toHaveBeenCalledTimes(2);
242
+ (0, import_vitest.expect)(runner.clearCache).toHaveBeenCalledTimes(2);
243
+ });
115
244
  });
116
245
  //# sourceMappingURL=fileSystemRouterPlugin.test.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["import_fs","require","import_os","import_path","__toESM","import_vitest","vi","mock","actual","importActual","createServerModuleRunner","fn","clearCache","import","describe","previousIsVxrnCli","process","env","IS_VXRN_CLI","previousVxrnPluginConfig","tempRoot","beforeEach","globalThis","__vxrnPluginConfig__","afterEach","rmSync","recursive","force","restoreAllMocks","it","mkdtempSync","default","join","tmpdir","appDir","writeFileSync","mkdirSync","web","defaultRenderMode","createFileSystemRouterPlugin","plugin","router","root","watcherListener","server","environments","ssr","watcher","addListener","event","listener","on","configureServer","expect","toBeDefined","warn","spyOn","console","mockImplementation","Error","Promise","resolve","resolves","toBeUndefined","toHaveBeenCalledWith","stringContaining","any"],"sources":["../../../../src/vite/plugins/fileSystemRouterPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["import_fs","require","import_os","import_path","__toESM","import_vitest","vi","mock","actual","importActual","createServerModuleRunner","fn","clearCache","import","describe","previousIsVxrnCli","process","env","IS_VXRN_CLI","previousViteEnvironment","VITE_ENVIRONMENT","previousVxrnPluginConfig","tempRoot","beforeEach","globalThis","__vxrnPluginConfig__","afterEach","rmSync","recursive","force","restoreAllMocks","it","mkdtempSync","default","join","tmpdir","appDir","writeFileSync","mkdirSync","web","defaultRenderMode","createFileSystemRouterPlugin","plugin","router","root","watcherListener","server","environments","ssr","watcher","addListener","event","listener","on","configureServer","expect","toBeDefined","warn","spyOn","console","mockImplementation","Error","Promise","resolve","resolves","toBeUndefined","toHaveBeenCalledWith","stringContaining","any","routeFile","virtualEntryId","renderCount","render","runner","id","_default","mocked","mockReturnValue","middlewareHandlers","watcherListeners","Map","hot","send","middlewares","use","handler","push","add","set","get","loggingEnabled","installMiddlewares","routeMiddleware","at","handleRouteRequest","request","pathname","chunks","req","originalUrl","url","headers","host","method","res","setHeader","appendHeader","writeHead","write","chunk","end","next","error","toHaveBeenCalled"],"sources":["../../../../src/vite/plugins/fileSystemRouterPlugin.test.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;gBAAA;AACA,IAAAA,SAAA,GAAAC,OAAuB;AACvB,IAAAC,SAAA,GAAAD,OAAiB;AACjB,IAAAE,WAAA,GAAAC,OAAgE,CAAAH,OAAA;AAEhE,IAAAI,aAAG,GAAAJ,OAAK,SAAQ;AACdI,aAAM,CAAAC,EAAA,CAASC,IAAA,OAAM,oBAAG;EACxB,IAAAC,MAAO,SAAAH,aAAA,CAAAC,EAAA,CAAAG,YAAA;EAAA,OACF;IACH,GAAAD,MAAA;IAAuCE,wBACzB,EAAAL,aAAM,CAAAC,EAAA,CAAAK,EAAA;MAClB;QACAC,UAAA,EAAAP,aAAA,CAAAC,EAAA,CAAAK,EAAA;QACJE,MAAA,EAAAR,aAAA,CAAAC,EAAA,CAAAK,EAAA;MACD;IAUD;EACE;AACA;AACA,IAAAN,aAAI,CAAAS,QAAA;EACJ,IAAIC,iBAAA,GAAAC,OAAA,CAAAC,GAAA,CAAAC,WAAA;EAEJ,IAAAC,uBAAA,GAAWH,OAAM,CAAAC,GAAA,CAAAG,gBAAA;EACf,IAAAC,wBAAA;EACF,IAACC,QAAA;EAED,IAAAjB,aAAA,CAAAkB,UAAA,EAAU,YAAM;IACdF,wBAAc,GAAAG,UAAA,CAAAC,oBAAA;EACZ;EACA,IAAApB,aAAW,CAAAqB,SAAA;IACb,IAAAJ,QAAA;MAEA,EAAI,EAAAtB,SAAA,CAAA2B,MAAA,EAAAL,QAAsB,EAAW;QACnCM,SAAO,MAAQ;QACjBC,KAAO;MACL;MACFP,QAAA;IACA;IACE,IAAAP,iBAAmB;MACrB,OAAOC,OAAA,CAAAC,GAAA,CAAAC,WAAA;IACL;MACFF,OAAA,CAAAC,GAAA,CAAAC,WAAA,GAAAH,iBAAA;IAEA;IACE,IAAAI,uBAA2B;MAC7B,OAAOH,OAAA,CAAAC,GAAA,CAAAG,gBAAA;IACL;MAAEJ,OAAA,CAAAC,GAAmB,CAAAG,gBAAA,GAAAD,uBAAuB;IAC9C;IACA,IAAAE,wBAAG,KAAgB;MACpB,OAAAG,UAAA,CAAAC,oBAAA;IAED;MACE;MACAD,UAAA,CAAAC,oBAAW,GAAAJ,wBAAY;IACvB;IACAhB,aAAA,CAAAC,EAAA,CAAAwB,eAAA,EAAc;EACd;EACA,IAAAzB,aAAA,CAAA0B,EAAA;IAAAf,OACE,CAAAC,GAAA,CAAAC,WAAA,MAAK;IAAwBI,QAC7B,OAAAtB,SAAA,CAAAgC,WAAA,EAAA7B,WAAA,CAAA8B,OAAA,CAAAC,IAAA,KAAAhC,SAAA,CAAAiC,MAAA;IACF,IAAAC,MAAA,GAAAjC,WAAA,CAAA8B,OAAA,CAAAC,IAAA,CAAAZ,QAAA;IAEE,IAAAtB,SAAmB,CAAAqC,aAAA,EAAAlC,WAAuB,CAAA8B,OAAA,CAAAC,IAAA,CAAAZ,QAAA;IAAA,EAC1C,EAAAtB,SAAK,CAAAsC,SAAA,EAAAF,MAAA;IAAA,IACHpC,SAAA,CAAAqC,aAAmB,EAAAlC,WAAA,CAAA8B,OAAA,CAAAC,IAAA,CAAAE,MAAA;IAAAZ,UACrB,CAAAC,oBAAA;MACFc,GAAA;QAEAC,iBAAQ;MACR;IAA4C;IAClC,IACN;MAAAC;IAAM;IAAA,IACRC,MAAA,GAAAD,4BAAA;MACDE,MAAA;QAEGC,IAAA,EAAAR;MAGJ;IAAe,EACb;IAAc,IACZS,eAAM;IAAA,IACRC,MAAA;MACAC,YAAS;QACPC,GAAA;MACE;MACEC,OAAA;QAAkBC,WACpB,EAAA7C,aAAA,CAAAC,EAAA,CAAAK,EAAA,WAAAwC,KAAA,EAAAC,QAAA;UACD,IAAAD,KAAA;YACGN,eAAA,GAAGO,QAAG;UACZ;QACF;QAEEC,EAAA,EAAehD,aAAA,CAAAC,EAAgB,CAAAK,EAAA;MACjC;IAEA;IAAiE+B,MAAC,CAAAY,eAAA,CAAAR,MAAA;IAClE,IAAAzC,aAAQ,CAAmBkD,MAAA,EAAAV,eAAA,EAAAW,WAAA;IAE3B,IAAIC,IAAC,GAAApD,aAAiB,CAAAC,EAAA,CAAAoD,KAAA,CAAAC,OAAA,UAAAC,kBAAA,cACpB;IACF,OAAApC,UAAA,CAAAC,oBAAA;IAEA,KAAAoB,eAAM;MACJ,UAAQgB,KAAA,CAAQ,kDAA4B;IAC9C;IAEA,UAAAxD,aAAA,CAAAkD,MAAW,EAAEO,OAAA,CAAAC,OAAA,CAAAlB,eAAA,QAAA1C,WAAA,CAAA8B,OAAA,CAAAC,IAAA,CAAAE,MAAA,sBAAA4B,QAAA,CAAAC,aAAA;IAAA,EACX,EAAA5D,aAAA,CAAAkD,MAAO,EAAAE,IAAA,EAAAS,oBAAiB,CAAA7D,aAAA,CAAAkD,MAAgC,CAAAY,gBAAA,oCAAA9D,aAAA,CAAAkD,MAAA,CAAAa,GAAA,CAAAP,KAAA;EAAA;EACxC,EAClB,EAAAxD,aAAA,CAAA0B,EAAA;IACDf,OAAA,CAAAC,GAAA,CAAAG,gBAAA;IAEDE,QAAA,OAAAtB,SAAG,CAAAgC,WAAA,EAAA7B,WAAA,CAAA8B,OAAA,CAAAC,IAAA,KAAAhC,SAAA,CAAAiC,MAA8D,4BAAY;IAC3E,IAAAC,MAAQ,GAAIjC,WAAA,CAAA8B,OAAmB,CAAAC,IAAA,CAAAZ,QAAA;IAC/B,IAAA+C,SAAA,GAAWlE,WAAA,CAAA8B,OAAA,CAAAC,IAAA,CAAAE,MAAY;IACvB,IAAApC,SAAM,CAAAqC,aAAS,EAAAlC,WAAK,CAAA8B,OAAK,CAAAC,IAAA,CAAAZ,QAAe;IACxC,IAAAtB,SAAM,CAAAsC,SAAY,EAAAF,MAAA;IAClB,IAAApC,SAAA,CAAAqC,aAAA,EAAAgC,SAAc,qDAAqC;IACnD;MAAA3D;IAAU,UAAM;IAChB;MAAA+B;IAAc,UAAW;IAEzB;MAAM6B;IAAE,gBAA6B,0BAAmB;IACxD,IAAAC,WAAQ;IACR,IAAAC,MAAQ,GAAAnE,aAAe,CAAIC,EAAA,CAAAK,EAAA,CAAM,kBAAO;MAExC,OAAI,eAAc,EAAA4D,WAAA;IAClB;IACA,IAAAE,MAAM;MACJ7D,UAAA,EAAYP,aAAA,CAAAC,EAAA,CAAGK,EAAA,CAAG;MAClBE,MAAA,EAAQR,aAAA,CAAAC,EAAA,CAAGK,EAAA,CAAG,gBAAsB+D,EAAA;QAClC,IAAIA,EAAA,KAAOJ,cAAA,EAAgB;UACzB,OAAO;YACTrC,OAAA;cACIuC;YACF;UACF;QACA;QACD,IAAAE,EAAA,KAAAL,SAAA;UACH;YACApC,OAAA,EAAG,SAAO0C,SAAA;cAEJ;YACA;UACA;QACJ;QACE,OAAM;MACR;IAAA;IACKtE,aACG,CAAAC,EAAA,CAAAsE,MAAA,CAAAlE,wBAAM,EAAAmE,eAAA,CAAAJ,MAAA;IAAA,IACdK,kBAAA;IAAA,IACAC,gBAAa,sBAAAC,GAAA;IAAA,IACXlC,MAAK;MACHC,YAAA;QACFC,GAAC;MACH;MACAiC,GAAA;QACEC,IAAA,EAAK7E,aAAA,CAAAC,EAAG,CAAAK,EAAG;MAAA;MAETwE,WAAA;QACFC,GAAC,EAAA/E,aAAA,CAAAC,EAAA,CAAAK,EAAA,WAAA0E,OAAA;UACDP,kBAAI,CAAGQ,IAAI,CAAAD,OAAe;QACxB;MAA8E;MAElFpC,OAAA;QACFsC,GAAA,EAAAlF,aAAA,CAAAC,EAAA,CAAAK,EAAA;QAEAuC,WAAe,EAAA7C,aAAA,CAAAC,EAAA,CAAAK,EAAA,WAA6BwC,KAAA,EAAAC,QAAA;UAC1C2B,gBAAQ,CAAAS,GAAA,CAAArC,KAAA,GACN,IAAM4B,gBAAA,CAAAU,GAAA,CAAAtC,KAAA,UACRC,QAAA,CACA;QACE;QACFC,EAAA,EAAAhD,aAAA,CAAAC,EAAA,CAAAK,EAAA,WAAAwC,KAAA,EAAAC,QAAA;UACD2B,gBAAA,CAAAS,GAAA,CAAArC,KAAA,GAEK,IAAA4B,gBAAsB,CAAAU,GAAA,CAAAtC,KAAe,UAC3CC,QAAA,CAEM;QACF,CAAC;MACH;IACF;IACA,IAAAV,MAAM,GAAAD,4BAAqB;MAE3BE,MAAA;QACEC,IAAM,EAAAR;MACN;MAAYU,MACV;QACA4C,cAAK;MAAA;IACI;IACD,IACRC,kBAAA,GAAAjD,MAAA,CAAAY,eAAA,CAAAR,MAAA;IAAA6C,kBACQ;IAAA,IACVC,eAAA,GAAAd,kBAAA,CAAAe,EAAA;IACA,KAAAD,eAAY;MAAA,MACV,IAAA/B,KAAW,6CAAM;IAAA;IACG,IACpBiC,kBAAW,GAAAF,eAAM;IAAA,eACVG,QAAAC,QAAM,EAAC;MACZ,IAAAC,MAAA,GAAO;MAAU,IAClBC,GAAA;QACDC,WAAK,EAAAH,QAAA;QACPI,GAAA,EAAAJ,QAAA;QACAK,OAAM;UACJC,IAAI;QACF;QACFC,MAAA;MACA;MACF,IAACC,GAAA;QAEDC,SAAM,EAAApG,aAAmB,CAAAC,EAAA,CAAKK,EAAA;QAC9B+F,YAAA,EAAArG,aAAO,CAAIC,EAAA,CAAGK,EAAE;QAChBgG,SAAO,EAAAtG,aAAc,CAAAC,EAAA,CAAAK,EAAA;QACvBiG,KAAA,EAAAvG,aAAA,CAAAC,EAAA,CAAAK,EAAA,WAAAkG,KAAA;UAEAZ,MAAM,CAAAX,IAAA,CAAAuB,KAAA;QACN;QACAC,GAAA,EAAAzG,aAAA,CAAAC,EAAA,CAAOK,EAAA;MAEP;MACA,IAAMoG,IAAA,GAAA1G,aAAmB,CAAAC,EAAA,CAAAK,EAAA,WAAcqG,KAAA;QACnC,IAACA,KAAA;UACH,MAAUA,KAAA;QACZ;QACA,UAAAnD,KAAiB,mDAAmB;MAEpC;MACA,MAAAiC,kBAAO,CAAAI,GAAA,EAAMM,GAAE,EAAAO,IAAA;MACf,IAAA1G,aAAA,CAAAkD,MAAO,EAAAiD,GAAA,CAAAM,GAAO,EAAAG,gBAAY;MAC3B,OAAAhB,MAAA,CAAA/D,IAAA;IACF","ignoreList":[]}
@@ -2,6 +2,7 @@ import React, { createContext, useContext } from "react";
2
2
  import { router } from "./router/imperative-api.mjs";
3
3
  import { RouteParamsContext, useRouteNode } from "./router/Route.mjs";
4
4
  import { mergeDynamicParams } from "./router/params.mjs";
5
+ import { getPathnameWithRecoveredDynamicSegment, normalizeRoutePathname } from "./router/path.mjs";
5
6
  import { RouteInfoContext } from "./router/RouteInfoContext.mjs";
6
7
  import { navigationRef, useStoreRootState, useStoreRouteInfo } from "./router/router.mjs";
7
8
  import { getServerContext } from "./vite/one-server-only.mjs";
@@ -36,14 +37,11 @@ function usePathname() {
36
37
  try {
37
38
  const ctx = getServerContext();
38
39
  if (ctx?.loaderProps?.path) {
39
- return stripTrailingSlash(ctx.loaderProps.path);
40
+ return normalizeRoutePathname(ctx.loaderProps.path);
40
41
  }
41
42
  } catch {}
42
43
  }
43
- return stripTrailingSlash(routeInfoPathname);
44
- }
45
- function stripTrailingSlash(path) {
46
- return path.length > 1 && path.endsWith("/") ? path.slice(0, -1) : path;
44
+ return getPathnameWithRecoveredDynamicSegment(routeInfoPathname);
47
45
  }
48
46
  function useActiveParams() {
49
47
  return useRouteInfo().params;
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","router","RouteParamsContext","useRouteNode","mergeDynamicParams","RouteInfoContext","navigationRef","useStoreRootState","useStoreRouteInfo","getServerContext","useRootNavigationState","useRouteInfo","routeInfoFromContext","routeInfoFromRootState","routeNode","type","useNavigationContainerRef","FrozeContext","useRouter","useUnstableGlobalHref","unstable_globalHref","useSegments","segments","usePathname","routeInfoPathname","pathname","import","meta","env","SSR","ctx","loaderProps","path","stripTrailingSlash","length","endsWith","slice","useActiveParams","params","useLocalSearchParams","useParams","useGlobalSearchParams","contextParams","routeInfoParams","useMemo","dynamic","Object","fromEntries","entries","filter","_","value","map","key","Array","isArray","v","decodeURIComponent","ReadOnlyURLSearchParams","URLSearchParams","set","_name","_value","Error","append","delete","useSearchParams","global","globalRef","useRef","process","NODE_ENV","current","console","warn","flatMap","String"],"sources":["../../src/hooks.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useContext","router","RouteParamsContext","useRouteNode","mergeDynamicParams","getPathnameWithRecoveredDynamicSegment","normalizeRoutePathname","RouteInfoContext","navigationRef","useStoreRootState","useStoreRouteInfo","getServerContext","useRootNavigationState","useRouteInfo","routeInfoFromContext","routeInfoFromRootState","routeNode","type","useNavigationContainerRef","FrozeContext","useRouter","useUnstableGlobalHref","unstable_globalHref","useSegments","segments","usePathname","routeInfoPathname","pathname","import","meta","env","SSR","ctx","loaderProps","path","useActiveParams","params","useLocalSearchParams","useParams","useGlobalSearchParams","contextParams","routeInfoParams","useMemo","dynamic","Object","fromEntries","entries","filter","_","value","map","key","Array","isArray","v","decodeURIComponent","ReadOnlyURLSearchParams","URLSearchParams","set","_name","_value","Error","append","delete","useSearchParams","global","globalRef","useRef","process","NODE_ENV","current","console","warn","flatMap","String"],"sources":["../../src/hooks.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@ import React, { createContext, useContext } from "react";
2
2
  import { router } from "./router/imperative-api.native.js";
3
3
  import { RouteParamsContext, useRouteNode } from "./router/Route.native.js";
4
4
  import { mergeDynamicParams } from "./router/params.native.js";
5
+ import { getPathnameWithRecoveredDynamicSegment, normalizeRoutePathname } from "./router/path.native.js";
5
6
  import { RouteInfoContext } from "./router/RouteInfoContext.native.js";
6
7
  import { navigationRef, useStoreRootState, useStoreRouteInfo } from "./router/router.native.js";
7
8
  import { getServerContext } from "./vite/one-server-only.native.js";
@@ -155,14 +156,11 @@ function usePathname() {
155
156
  var _ctx_loaderProps;
156
157
  var ctx = getServerContext();
157
158
  if (ctx === null || ctx === void 0 ? void 0 : (_ctx_loaderProps = ctx.loaderProps) === null || _ctx_loaderProps === void 0 ? void 0 : _ctx_loaderProps.path) {
158
- return stripTrailingSlash(ctx.loaderProps.path);
159
+ return normalizeRoutePathname(ctx.loaderProps.path);
159
160
  }
160
161
  } catch (unused) {}
161
162
  }
162
- return stripTrailingSlash(routeInfoPathname);
163
- }
164
- function stripTrailingSlash(path) {
165
- return path.length > 1 && path.endsWith("/") ? path.slice(0, -1) : path;
163
+ return getPathnameWithRecoveredDynamicSegment(routeInfoPathname);
166
164
  }
167
165
  function useActiveParams() {
168
166
  return useRouteInfo().params;
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","router","RouteParamsContext","useRouteNode","mergeDynamicParams","RouteInfoContext","navigationRef","useStoreRootState","useStoreRouteInfo","getServerContext","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","value","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","Symbol","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper"],"sources":["../../src/hooks.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,IAASC,aAAA,EAAeC,UAAA,QAAkB;AAEjD,SAASC,MAAA,QAAc;AACvB,SAASC,kBAAA,EAAoBC,YAAA,QAAoB;AACjD,SAASC,kBAAA,QAA0B;AACnC,SAASC,gBAAA,QAAwB;AACjC,SAASC,aAAA,EAAeC,iBAAA,EAAmBC,iBAAA,QAAyB;AACpE,SAASC,gBAAA,QAAwB;AAU1B,SAASC,yBAAyBC,IAAA;EACvC,IAAAA,IAAO;IACT,UAAAC,cAAA;EASO;EAIL,OAAMD,IAAA;AAKN;AAEA,SAAME,WAAYA,CAAAC,KAAA,EAAAC,OAAa,EAAAC,IAAA;EAE/BD,OAAI,GAAAE,iBAAoB,CAAAF,OAAU;EAEhC,OAAAG,4BAAO,CAAAJ,KAAA,EAAAK,4BAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAN,OAAA,EAAAC,IAAA,QAAAC,iBAAA,CAAAH,KAAA,EAAAQ,WAAA,IAAAP,OAAA,CAAAQ,KAAA,CAAAT,KAAA,EAAAE,IAAA;AAAA;AAIT,SAAOQ,kBAAAC,QAAwB,EAAAC,WAAA;EACjC,MAAAD,QAAA,YAAAC,WAAA;IAGO,MAAS,IAAAC,SAAA,oCAA4B;EAC1C;AACF;AAEO,SAAMC,WAAAC,MAAe,EAAAb,IAAA,EAAAc,KAAc,EAAK;EAexC,IAAAX,4BAAuC;IAC5CS,UAAO,GAAAR,OAAA,CAAAC,SAAA;EACT;IAMOO,UAAS,YAAAP,SAAgCA,CAAAU,OAAA,EAAAC,KAAA,EAAAC,MAAA;MAC9C,IAAOC,CAAA,IACT,KAuBO;MACLA,CAAA,CAAAC,IAAO,CAAAZ,KAAA,CAAAW,CAAA,EAAaF,KAAE;MACxB,IAAAN,WAAA,GAAAU,QAAA,CAAAC,IAAA,CAAAd,KAAA,CAAAQ,OAAA,EAAAG,CAAA;MAeO,IAAST,QAAA,OAAsBC,WAAA;MACpC,IAAMO,MAAA,EAAAK,iBAAoB,CAAAb,QAAe,EAAAQ,MAAA,CAAAM,SAAA;MACrC,OAAAd,QAAY;IAGd;EACE;EACA,OAAAG,UAAS,CAAAL,KAAA,KAAa,EAAAiB,SAAM;AAC1B;AAA8C,SAChDC,kBAAAC,MAAA,EAAAC,KAAA;EAAA,KACF,IAAAC,CAAQ,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IAER,IAAAE,UAAA,GAAAH,KAAA,CAAAC,CAAA;IACFE,UAAA,CAAAC,UAAA,GAAAD,UAAA,CAAAC,UAAA;IACAD,UAAO,CAAAE,YAAA,GAAmB;IAC5B,eAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA;IAEAC,MAAS,CAAAC,cAAA,CAAAT,MAAmB,EAAsBI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EAChD;AACF;AAYO,SAASO,cAAA3B,WAEM,EAAA4B,UAAA,EAAAC,WAAA;EACpB,IAAAD,UAAO,EAAAb,iBAAe,CAAAf,WAAA,CAAAa,SAAA,EAAAe,UAAA;EACxB,IAAAC,WAAA,EAAAd,iBAAA,CAAAf,WAAA,EAAA6B,WAAA;EAGO,OAAM7B,WAAA;AAGN;AAkBA,SAAST,iBAAqEA,CAAAuC,CAAA;EACnFvC,iBAAM,GAAAiC,MAAgB,CAAAO,cAAiB,GAAAP,MAAA,CAAAQ,cAAwB,YAAAA,eAAAC,EAAA;IAC/D,OAAMA,EAAA,CAAAC,SAAY,IAAAV,MAAa,CAAAQ,cAAA,CAAAC,EAAA;EAC/B;EAEA,OAAM1C,iBAAe,CAAAuC,CAAA;AAAA;AACwD,SAC1EK,UAAAC,QAAe,EAAAC,UAAiB;EACnC,WAAAA,UAAA,mBAAAA,UAAA;IAEA,MAAO,IAAApC,SAAc,qDAAM;EACzB;EAAcmC,QACZ,CAAAvB,SAAO,GAAQW,MACZ,CAAAc,MAAO,CAACD,UAAS,IAAAA,UAAM,CAAUxB,SACjC;IACCjB,WAAI;MACF2C,KAAA,EAAAH,QAAO;MAAAb,QACL;MAAAD,YACM;IACJ;EACE;EAA2B,IAAAe,UAC7B,EAAAzB,iBAAQ,CAAAwB,QAAA,EAAAC,UAAA;AACN;AAAO,SAAAG,mBACTA,CAAAC,EAAA;EAAA,OAAA/B,QACD,CAAAgC,QAAA,CAAAC,IAAA,CAAAF,EAAA,EAAAG,OAAA;AAAA;AACH,SACFpD,6BAAAP,IAAA,EAAA0D,IAAA;EACA,IAAAA,IAAA,KAAIE,QAAA,CAAAF,IAAA,yBAAAA,IAAA;IACF,OAAAA,IAAA;EAAgD;EAEhD,OAAA3D,wBAAkB,CAAAC,IAAA;AAAA;AACpB,SACD2B,kBAAAkB,CAAA,EAAAgB,CAAA;EAAAlC,iBACL,GAAAY,MAAA,CAAAO,cAAA,aAAAA,eAAAE,EAAA,EAAAc,EAAA;IACFd,EAAI,CAAAC,SAAO,GAAAa,EAAA;IACb,OAAAd,EAAA;EAEA;EACW,OAAIrB,iBAAqC,CAAAkB,CAAA,EAAAgB,CAAA;AAChD;AAA4E,SAC9ED,SAAAG,GAAA;EACS,uBAA4C;;EACnD,OAAAA,GAAM,IAAI,OAAMC,MAAA,oBAAAD,GAAA,CAAApD,WAAA,KAAAqD,MAAA,WAA4D,UAAAD,GAAA;AAAA;AAC9E,SACgBE,kBAAsCA,CAAA9C,KAAA;EACpD,IAAA+C,MAAM,GAAI,OAAMC,GAAA,qCAAAA,GAAA;EAClBF,kBAAA,YAAAG,gBAAA9C,MAAA;IACF,IAAAA,MAAA,cAAAiC,mBAAA,CAAAjC,MAAA,UAAAA,MAAA;IAqBO,WAASA,MAAA,KAAgB,UAAW;MACzC,MAAM,IAAAN,SAAY,CAAM,oDAAa;IAErC;IACE,IAAI,OAAAkD,MAAW,gBAAU,EAAS;MAChC,IAAAA,MAAQ,CAAAG,GAAK,CAAA/C,MAAA,UAAA4C,MAAA,CAAAI,GAAA,CAAAhD,MAAA;MACf4C,MAAA,CAAAK,GAAA,CAAAjD,MAAA,EAAAkD,OAAA;IACF;IAGA,SAAMA,OAASA,CAAA;MAEf,OAAOvD,UAAc,CAAAK,MAAM,EAAAO,SAAA,EAAAvB,iBAAA,OAAAK,WAAA;IACzB;IACE6D,OAAI,CAAA5C,SAAU,GAAAW,MAAW,CAAAc,MAAQ,CAAA/B,MAAA,CAAAM,SAAA;MACjCjB,WAAO,EAAM;QAGd2C,KAAA,EAAAkB,OAAA;QACDpC,UAAW;QACTE,QAAO;QACbD,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useContext","router","RouteParamsContext","useRouteNode","mergeDynamicParams","getPathnameWithRecoveredDynamicSegment","normalizeRoutePathname","RouteInfoContext","navigationRef","useStoreRootState","useStoreRouteInfo","getServerContext","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","value","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","Symbol","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper"],"sources":["../../src/hooks.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ import { findFocusedRoute } from "../fork/findFocusedRoute.mjs";
3
3
  import { getResolvedLinking } from "./linkingConfig.mjs";
4
4
  import { getContextKey } from "./matchers.mjs";
5
5
  import { mergeDynamicParams } from "./params.mjs";
6
+ import { getPathWithRecoveredDynamicSegment } from "./path.mjs";
6
7
  import { routeInfo } from "./router.mjs";
7
8
  import { RouteInfoContextProvider } from "./RouteInfoContext.mjs";
8
9
  import { jsx } from "react/jsx-runtime";
@@ -24,7 +25,7 @@ function useContextKey() {
24
25
  function getParamsFromCurrentUrl(route) {
25
26
  const linking = getResolvedLinking();
26
27
  if (!linking?.getStateFromPath) return void 0;
27
- const path = routeInfo?.unstable_globalHref || route?.path || (typeof window !== "undefined" && window.location ? window.location.pathname + window.location.search : void 0);
28
+ const path = getPathWithRecoveredDynamicSegment([routeInfo?.unstable_globalHref, route?.path]);
28
29
  if (!path) return void 0;
29
30
  const state = linking.getStateFromPath(path, linking.config);
30
31
  if (!state) return void 0;
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","findFocusedRoute","getResolvedLinking","getContextKey","mergeDynamicParams","routeInfo","RouteInfoContextProvider","jsx","RouteParamsContext","CurrentRouteContext","process","env","NODE_ENV","displayName","useRouteNode","useContextKey","node","Error","contextKey","getParamsFromCurrentUrl","route","linking","getStateFromPath","path","unstable_globalHref","window","location","pathname","search","state","config","focused","params","Route","children","parentParams","resolvedParams","useMemo","rp","ownParams","dynamic","length","Provider","value"],"sources":["../../../src/router/Route.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,IAASC,aAAA,EAA+BC,UAAA,QAAkB;AACjE,SAASC,gBAAA,QAAwB;AAKjC,SAASC,kBAAA,QAA0B;AACnC,SAASC,aAAA,QAAqB;AAC9B,SAASC,kBAAA,QAA0B;AACnC,SAASC,SAAA,QAAiB;AAC1B,SAASC,wBAAA,QAAgC;AAqMjC,SAAAC,GAAA;AAxFD,MAAMC,kBAAA,GAAqBT,aAAA,CAEhC,CAAC,CAAC;AAEJ,MAAMU,mBAAA,GAAsBX,KAAA,CAAMC,aAAA,CAAgC,IAAI;AAEtE,IAAIW,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;EACzCH,mBAAA,CAAoBI,WAAA,GAAc;AACpC;AAGO,SAASC,aAAA,EAAiC;EAC/C,OAAOd,UAAA,CAAWS,mBAAmB;AACvC;AAEO,SAASM,cAAA,EAAwB;EACtC,MAAMC,IAAA,GAAOF,YAAA,CAAa;EAC1B,IAAIE,IAAA,IAAQ,MAAM;IAChB,MAAM,IAAIC,KAAA,CAAM,oDAAoD;EACtE;EACA,OAAOd,aAAA,CAAca,IAAA,CAAKE,UAAU;AACtC;AAWA,SAASC,wBAAwBC,KAAA,EAGG;EAClC,MAAMC,OAAA,GAAUnB,kBAAA,CAAmB;EACnC,IAAI,CAACmB,OAAA,EAASC,gBAAA,EAAkB,OAAO;EACvC,MAAMC,IAAA,GACJlB,SAAA,EAAWmB,mBAAA,IACXJ,KAAA,EAAOG,IAAA,KACN,OAAOE,MAAA,KAAW,eAAeA,MAAA,CAAOC,QAAA,GACrCD,MAAA,CAAOC,QAAA,CAASC,QAAA,GAAWF,MAAA,CAAOC,QAAA,CAASE,MAAA,GAC3C;EACN,IAAI,CAACL,IAAA,EAAM,OAAO;EAClB,MAAMM,KAAA,GAAQR,OAAA,CAAQC,gBAAA,CAAiBC,IAAA,EAAMF,OAAA,CAAQS,MAAM;EAC3D,IAAI,CAACD,KAAA,EAAO,OAAO;EACnB,MAAME,OAAA,GAAU9B,gBAAA,CAAiB4B,KAAK;EACtC,OAAOE,OAAA,EAASC,MAAA;AAClB;AAGO,SAASC,MAAM;EACpBC,QAAA;EACAlB,IAAA;EACAI;AACF,GAOG;EACD,MAAMe,YAAA,GAAenC,UAAA,CAAWQ,kBAAkB;EAUlD,MAAM4B,cAAA,GAAiBtC,KAAA,CAAMuC,OAAA,CAAQ,MAAM;IACzC,MAAMC,EAAA,GAAKlB,KAAA,EAAOY,MAAA;IAClB,MAAMO,SAAA,GAAYvB,IAAA,CAAKwB,OAAA,EAASC,MAAA,GAC5BrC,kBAAA,CAAmBkC,EAAA,EAAItB,IAAA,CAAKwB,OAAA,EAASrB,uBAAA,CAAwBC,KAAK,CAAC,IACnEkB,EAAA;IAEJ,IAAI,CAACH,YAAA,EAAc,OAAOI,SAAA;IAC1B,IAAI,CAACA,SAAA,EAAW,OAAOJ,YAAA;IACvB,OAAO;MAAE,GAAGA,YAAA;MAAc,GAAGI;IAAU;EACzC,GAAG,CAACvB,IAAA,EAAMmB,YAAA,EAAcf,KAAA,EAAOf,SAAA,EAAWmB,mBAAmB,CAAC;EAE9D,OACE,eAAAjB,GAAA,CAACC,kBAAA,CAAmBkC,QAAA,EAAnB;IAA4BC,KAAA,EAAOP,cAAA;IAClCF,QAAA,iBAAA3B,GAAA,CAACE,mBAAA,CAAoBiC,QAAA,EAApB;MAA6BC,KAAA,EAAO3B,IAAA;MACnCkB,QAAA,iBAAA3B,GAAA,CAACD,wBAAA;QAA0B4B;MAAA,CAAS;IAAA,CACtC;EAAA,CACF;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useContext","findFocusedRoute","getResolvedLinking","getContextKey","mergeDynamicParams","getPathWithRecoveredDynamicSegment","routeInfo","RouteInfoContextProvider","jsx","RouteParamsContext","CurrentRouteContext","process","env","NODE_ENV","displayName","useRouteNode","useContextKey","node","Error","contextKey","getParamsFromCurrentUrl","route","linking","getStateFromPath","path","unstable_globalHref","state","config","focused","params","Route","children","parentParams","resolvedParams","useMemo","rp","ownParams","dynamic","length","Provider","value"],"sources":["../../../src/router/Route.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,IAASC,aAAA,EAA+BC,UAAA,QAAkB;AACjE,SAASC,gBAAA,QAAwB;AAKjC,SAASC,kBAAA,QAA0B;AACnC,SAASC,aAAA,QAAqB;AAC9B,SAASC,kBAAA,QAA0B;AACnC,SAASC,kCAAA,QAA0C;AACnD,SAASC,SAAA,QAAiB;AAC1B,SAASC,wBAAA,QAAgC;AAmMjC,SAAAC,GAAA;AAtFD,MAAMC,kBAAA,GAAqBV,aAAA,CAEhC,CAAC,CAAC;AAEJ,MAAMW,mBAAA,GAAsBZ,KAAA,CAAMC,aAAA,CAAgC,IAAI;AAEtE,IAAIY,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;EACzCH,mBAAA,CAAoBI,WAAA,GAAc;AACpC;AAGO,SAASC,aAAA,EAAiC;EAC/C,OAAOf,UAAA,CAAWU,mBAAmB;AACvC;AAEO,SAASM,cAAA,EAAwB;EACtC,MAAMC,IAAA,GAAOF,YAAA,CAAa;EAC1B,IAAIE,IAAA,IAAQ,MAAM;IAChB,MAAM,IAAIC,KAAA,CAAM,oDAAoD;EACtE;EACA,OAAOf,aAAA,CAAcc,IAAA,CAAKE,UAAU;AACtC;AAWA,SAASC,wBAAwBC,KAAA,EAGG;EAClC,MAAMC,OAAA,GAAUpB,kBAAA,CAAmB;EACnC,IAAI,CAACoB,OAAA,EAASC,gBAAA,EAAkB,OAAO;EACvC,MAAMC,IAAA,GAAOnB,kCAAA,CAAmC,CAC9CC,SAAA,EAAWmB,mBAAA,EACXJ,KAAA,EAAOG,IAAA,CACR;EACD,IAAI,CAACA,IAAA,EAAM,OAAO;EAClB,MAAME,KAAA,GAAQJ,OAAA,CAAQC,gBAAA,CAAiBC,IAAA,EAAMF,OAAA,CAAQK,MAAM;EAC3D,IAAI,CAACD,KAAA,EAAO,OAAO;EACnB,MAAME,OAAA,GAAU3B,gBAAA,CAAiByB,KAAK;EACtC,OAAOE,OAAA,EAASC,MAAA;AAClB;AAGO,SAASC,MAAM;EACpBC,QAAA;EACAd,IAAA;EACAI;AACF,GAOG;EACD,MAAMW,YAAA,GAAehC,UAAA,CAAWS,kBAAkB;EAUlD,MAAMwB,cAAA,GAAiBnC,KAAA,CAAMoC,OAAA,CAAQ,MAAM;IACzC,MAAMC,EAAA,GAAKd,KAAA,EAAOQ,MAAA;IAClB,MAAMO,SAAA,GAAYnB,IAAA,CAAKoB,OAAA,EAASC,MAAA,GAC5BlC,kBAAA,CAAmB+B,EAAA,EAAIlB,IAAA,CAAKoB,OAAA,EAASjB,uBAAA,CAAwBC,KAAK,CAAC,IACnEc,EAAA;IAEJ,IAAI,CAACH,YAAA,EAAc,OAAOI,SAAA;IAC1B,IAAI,CAACA,SAAA,EAAW,OAAOJ,YAAA;IACvB,OAAO;MAAE,GAAGA,YAAA;MAAc,GAAGI;IAAU;EACzC,GAAG,CAACnB,IAAA,EAAMe,YAAA,EAAcX,KAAA,EAAOf,SAAA,EAAWmB,mBAAmB,CAAC;EAE9D,OACE,eAAAjB,GAAA,CAACC,kBAAA,CAAmB8B,QAAA,EAAnB;IAA4BC,KAAA,EAAOP,cAAA;IAClCF,QAAA,iBAAAvB,GAAA,CAACE,mBAAA,CAAoB6B,QAAA,EAApB;MAA6BC,KAAA,EAAOvB,IAAA;MACnCc,QAAA,iBAAAvB,GAAA,CAACD,wBAAA;QAA0BwB;MAAA,CAAS;IAAA,CACtC;EAAA,CACF;AAEJ","ignoreList":[]}
@@ -4,6 +4,7 @@ import { findFocusedRoute } from "../fork/findFocusedRoute.native.js";
4
4
  import { getResolvedLinking } from "./linkingConfig.native.js";
5
5
  import { getContextKey } from "./matchers.native.js";
6
6
  import { mergeDynamicParams } from "./params.native.js";
7
+ import { getPathWithRecoveredDynamicSegment } from "./path.native.js";
7
8
  import { routeInfo } from "./router.native.js";
8
9
  import { RouteInfoContextProvider } from "./RouteInfoContext.native.js";
9
10
  var RouteParamsContext = /* @__PURE__ */createContext({});
@@ -24,7 +25,7 @@ function useContextKey() {
24
25
  function getParamsFromCurrentUrl(route) {
25
26
  var linking = getResolvedLinking();
26
27
  if (!(linking === null || linking === void 0 ? void 0 : linking.getStateFromPath)) return void 0;
27
- var path = (routeInfo === null || routeInfo === void 0 ? void 0 : routeInfo.unstable_globalHref) || (route === null || route === void 0 ? void 0 : route.path) || (typeof window !== "undefined" && window.location ? window.location.pathname + window.location.search : void 0);
28
+ var path = getPathWithRecoveredDynamicSegment([routeInfo === null || routeInfo === void 0 ? void 0 : routeInfo.unstable_globalHref, route === null || route === void 0 ? void 0 : route.path]);
28
29
  if (!path) return void 0;
29
30
  var state = linking.getStateFromPath(path, linking.config);
30
31
  if (!state) return void 0;
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","React","createContext","useContext","findFocusedRoute","getResolvedLinking","getContextKey","mergeDynamicParams","routeInfo","RouteInfoContextProvider","RouteParamsContext","CurrentRouteContext","process","env","NODE_ENV","displayName","useRouteNode","useContextKey","node","Error","contextKey","getParamsFromCurrentUrl","route","linking","getStateFromPath","path","unstable_globalHref","window","location","pathname","search","state","config","focused","params","Route","param","children","parentParams","resolvedParams","useMemo","_node_dynamic","rp","ownParams","dynamic","length"],"sources":["../../../src/router/Route.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAOA,GAAA,IAASC,IAAA,2BAA+B;AAC/C,OAAAC,KAAS,IAAAC,aAAA,EAAAC,UAAwB;AAKjC,SAASC,gBAAA,4CAA0B;AACnC,SAASC,kBAAA,QAAqB;AAC9B,SAASC,aAAA,8BAA0B;AACnC,SAASC,kBAAiB;AAC1B,SAASC,SAAA;AAqMD,SAAAC,wBAAA;AAxFD,IAAAC,kBAAM,kBAEXR,aAAE;AAEJ,IAAAS,mBAAM,kBAA4BV,KAAA,CAAgCC,aAAI;AAEtE,IAAIU,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;EACzCH,mBAAA,CAAoBI,WAAA,GAAc;AACpC;AAGO,SAASC,aAAA,EAAiC;EAC/C,OAAOb,UAAA,CAAWQ,mBAAmB;AACvC;AAEO,SAASM,cAAA,EAAwB;EACtC,IAAAC,IAAM,GAAAF,YAAO;EACb,IAAIE,IAAA,IAAQ,MAAM;IAChB,MAAM,IAAIC,KAAA,CAAM,oDAAoD;EACtE;EACA,OAAOb,aAAA,CAAcY,IAAA,CAAKE,UAAU;AACtC;AAWA,SAASC,wBAAwBC,KAAA,EAGG;EAClC,IAAAC,OAAM,GAAAlB,kBAAU;EAChB,IAAI,EAACkB,OAAA,KAAS,QAAAA,OAAkB,UAAO,aAAAA,OAAA,CAAAC,gBAAA;EACvC,IAAAC,IAAM,IAAAjB,SACJ,KAAW,QAAAA,SAAA,KACX,MAAO,SACN,GAAAA,SAAO,CAAAkB,mBAAW,MAAeJ,KAAO,SACrC,IAAAA,KAAO,UAAS,SAAW,IAAAA,KAAO,CAAAG,IAAS,aAC3CE,MAAA,oBAAAA,MAAA,CAAAC,QAAA,GAAAD,MAAA,CAAAC,QAAA,CAAAC,QAAA,GAAAF,MAAA,CAAAC,QAAA,CAAAE,MAAA;EACN,IAAI,CAACL,IAAA,EAAM,OAAO;EAClB,IAAAM,KAAM,GAAAR,OAAQ,CAAAC,gBAAQ,CAAAC,IAAiB,EAAAF,OAAM,CAAAS,MAAQ;EACrD,IAAI,CAACD,KAAA,EAAO,OAAO;EACnB,IAAAE,OAAM,GAAA7B,gBAAU,CAAA2B,KAAiB;EACjC,OAAOE,OAAA,KAAS,QAAAA,OAAA,uBAAAA,OAAA,CAAAC,MAAA;AAClB;AAGO,SAASC,MAAMC,KAAA;EACpB;IAAAC,QAAA;IAAAnB,IAAA;IAAAI;EAAA,IAAAc,KAAA;EACA,IAAAE,YAAA,GAAAnC,UAAA,CAAAO,kBAAA;EACA,IAAA6B,cAAA,GAAAtC,KAAA,CAAAuC,OAAA;IAQC,IAAAC,aAAA;IACD,IAAMC,EAAA,GAAApB,KAAA,KAAe,QAAAA,KAAW,mBAAkB,IAAAA,KAAA,CAAAY,MAAA;IAUlD,IAAMS,SAAA,KAAAF,aAAuB,GAAAvB,IAAQ,CAAA0B,OAAM,cAAAH,aAAA,uBAAAA,aAAA,CAAAI,MAAA,IAAAtC,kBAAA,CAAAmC,EAAA,EAAAxB,IAAA,CAAA0B,OAAA,EAAAvB,uBAAA,CAAAC,KAAA,KAAAoB,EAAA;IACzC,KAAAJ,YAAW,EAAO,OAAAK,SAAA;IAClB,KAAAA,SAAM,SAAiBL,YAAS;IAIhC,OAAK;MACL,GAAKA,YAAW;MAChB,GAAAK;IACF,CAAG;EAEH,IAOFzB,IAAA,E","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","React","createContext","useContext","findFocusedRoute","getResolvedLinking","getContextKey","mergeDynamicParams","getPathWithRecoveredDynamicSegment","routeInfo","RouteInfoContextProvider","RouteParamsContext","CurrentRouteContext","process","env","NODE_ENV","displayName","useRouteNode","useContextKey","node","Error","contextKey","getParamsFromCurrentUrl","route","linking","getStateFromPath","path","unstable_globalHref","state","config","focused","params","Route","param","children","parentParams","resolvedParams","useMemo","_node_dynamic","rp","ownParams","dynamic","length"],"sources":["../../../src/router/Route.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAOA,GAAA,IAASC,IAAA,2BAA+B;AAC/C,OAAAC,KAAS,IAAAC,aAAA,EAAAC,UAAwB;AAKjC,SAASC,gBAAA,4CAA0B;AACnC,SAASC,kBAAA,QAAqB;AAC9B,SAASC,aAAA,8BAA0B;AACnC,SAASC,kBAAA;AACT,SAASC,kCAAiB;AAC1B,SAASC,SAAA;AAmMD,SAAAC,wBAAA;AAtFD,IAAAC,kBAAM,kBAEXT,aAAE;AAEJ,IAAAU,mBAAM,kBAA4BX,KAAA,CAAgCC,aAAI;AAEtE,IAAIW,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;EACzCH,mBAAA,CAAoBI,WAAA,GAAc;AACpC;AAGO,SAASC,aAAA,EAAiC;EAC/C,OAAOd,UAAA,CAAWS,mBAAmB;AACvC;AAEO,SAASM,cAAA,EAAwB;EACtC,IAAAC,IAAM,GAAAF,YAAO;EACb,IAAIE,IAAA,IAAQ,MAAM;IAChB,MAAM,IAAIC,KAAA,CAAM,oDAAoD;EACtE;EACA,OAAOd,aAAA,CAAca,IAAA,CAAKE,UAAU;AACtC;AAWA,SAASC,wBAAwBC,KAAA,EAGG;EAClC,IAAAC,OAAM,GAAAnB,kBAAU;EAChB,IAAI,EAACmB,OAAA,KAAS,QAAAA,OAAkB,UAAO,aAAAA,OAAA,CAAAC,gBAAA;EACvC,IAAAC,IAAM,GAAAlB,kCAAO,EACXC,SAAA,KAAW,QAAAA,SAAA,uBAAAA,SAAA,CAAAkB,mBAAA,EACXJ,KAAA,KAAO,QAAAA,KAAA,uBAAAA,KAAA,CAAAG,IAAA,CACR;EACD,IAAI,CAACA,IAAA,EAAM,OAAO;EAClB,IAAAE,KAAM,GAAAJ,OAAQ,CAAAC,gBAAQ,CAAAC,IAAiB,EAAAF,OAAM,CAAAK,MAAQ;EACrD,IAAI,CAACD,KAAA,EAAO,OAAO;EACnB,IAAAE,OAAM,GAAA1B,gBAAU,CAAAwB,KAAiB;EACjC,OAAOE,OAAA,KAAS,QAAAA,OAAA,uBAAAA,OAAA,CAAAC,MAAA;AAClB;AAGO,SAASC,MAAMC,KAAA;EACpB;IAAAC,QAAA;IAAAf,IAAA;IAAAI;EAAA,IAAAU,KAAA;EACA,IAAAE,YAAA,GAAAhC,UAAA,CAAAQ,kBAAA;EACA,IAAAyB,cAAA,GAAAnC,KAAA,CAAAoC,OAAA;IAQC,IAAAC,aAAA;IACD,IAAMC,EAAA,GAAAhB,KAAA,KAAe,QAAAA,KAAW,mBAAkB,IAAAA,KAAA,CAAAQ,MAAA;IAUlD,IAAMS,SAAA,KAAAF,aAAuB,GAAAnB,IAAQ,CAAAsB,OAAM,cAAAH,aAAA,uBAAAA,aAAA,CAAAI,MAAA,IAAAnC,kBAAA,CAAAgC,EAAA,EAAApB,IAAA,CAAAsB,OAAA,EAAAnB,uBAAA,CAAAC,KAAA,KAAAgB,EAAA;IACzC,KAAAJ,YAAW,EAAO,OAAAK,SAAA;IAClB,KAAAA,SAAM,SAAiBL,YAAS;IAIhC,OAAK;MACL,GAAKA,YAAW;MAChB,GAAAK;IACF,CAAG;EAEH,IAOFrB,IAAA,E","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ import { stripBaseUrl } from "../fork/getStateFromPath-mods.mjs";
2
+ function stripPathSuffix(path) {
3
+ const queryIndex = path.indexOf("?");
4
+ const hashIndex = path.indexOf("#");
5
+ let end = path.length;
6
+ if (queryIndex >= 0) end = Math.min(end, queryIndex);
7
+ if (hashIndex >= 0) end = Math.min(end, hashIndex);
8
+ return path.slice(0, end);
9
+ }
10
+ function stripTrailingSlash(pathname) {
11
+ return pathname.length > 1 && pathname.endsWith("/") ? pathname.slice(0, -1) : pathname;
12
+ }
13
+ function normalizeRoutePathname(pathname) {
14
+ return stripTrailingSlash(stripBaseUrl(stripPathSuffix(pathname)));
15
+ }
16
+ function hasLostDynamicSegment(path) {
17
+ return stripPathSuffix(path).split("/").includes("undefined");
18
+ }
19
+ function getSafeWindowPathname() {
20
+ if (typeof window === "undefined" || !window.location || typeof window.location.pathname !== "string") {
21
+ return void 0;
22
+ }
23
+ return window.location.pathname;
24
+ }
25
+ function getSafeWindowPath() {
26
+ const pathname = getSafeWindowPathname();
27
+ if (pathname === void 0) return void 0;
28
+ return pathname + (window.location.search || "");
29
+ }
30
+ function getPathWithRecoveredDynamicSegment(paths, fallbackPath = getSafeWindowPath()) {
31
+ for (const path of paths) {
32
+ if (path !== void 0 && !hasLostDynamicSegment(path)) {
33
+ return path;
34
+ }
35
+ }
36
+ return fallbackPath;
37
+ }
38
+ function getPathnameWithRecoveredDynamicSegment(pathname, fallbackPath = getSafeWindowPath()) {
39
+ return normalizeRoutePathname(getPathWithRecoveredDynamicSegment([pathname], fallbackPath) ?? pathname);
40
+ }
41
+ export { getPathWithRecoveredDynamicSegment, getPathnameWithRecoveredDynamicSegment, getSafeWindowPath, getSafeWindowPathname, hasLostDynamicSegment, normalizeRoutePathname, stripTrailingSlash };
42
+ //# sourceMappingURL=path.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stripBaseUrl","stripPathSuffix","path","queryIndex","indexOf","hashIndex","end","length","Math","min","slice","stripTrailingSlash","pathname","endsWith","normalizeRoutePathname","hasLostDynamicSegment","split","includes","getSafeWindowPathname","window","location","getSafeWindowPath","search","getPathWithRecoveredDynamicSegment","paths","fallbackPath","getPathnameWithRecoveredDynamicSegment"],"sources":["../../../src/router/path.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAE7B,SAASC,gBAAgBC,IAAA,EAAsB;EAC7C,MAAMC,UAAA,GAAaD,IAAA,CAAKE,OAAA,CAAQ,GAAG;EACnC,MAAMC,SAAA,GAAYH,IAAA,CAAKE,OAAA,CAAQ,GAAG;EAClC,IAAIE,GAAA,GAAMJ,IAAA,CAAKK,MAAA;EAEf,IAAIJ,UAAA,IAAc,GAAGG,GAAA,GAAME,IAAA,CAAKC,GAAA,CAAIH,GAAA,EAAKH,UAAU;EACnD,IAAIE,SAAA,IAAa,GAAGC,GAAA,GAAME,IAAA,CAAKC,GAAA,CAAIH,GAAA,EAAKD,SAAS;EAEjD,OAAOH,IAAA,CAAKQ,KAAA,CAAM,GAAGJ,GAAG;AAC1B;AAEO,SAASK,mBAAmBC,QAAA,EAA0B;EAC3D,OAAOA,QAAA,CAASL,MAAA,GAAS,KAAKK,QAAA,CAASC,QAAA,CAAS,GAAG,IAAID,QAAA,CAASF,KAAA,CAAM,GAAG,EAAE,IAAIE,QAAA;AACjF;AAEO,SAASE,uBAAuBF,QAAA,EAA0B;EAC/D,OAAOD,kBAAA,CAAmBX,YAAA,CAAaC,eAAA,CAAgBW,QAAQ,CAAC,CAAC;AACnE;AAGO,SAASG,sBAAsBb,IAAA,EAAuB;EAC3D,OAAOD,eAAA,CAAgBC,IAAI,EAAEc,KAAA,CAAM,GAAG,EAAEC,QAAA,CAAS,WAAW;AAC9D;AAKO,SAASC,sBAAA,EAA4C;EAC1D,IACE,OAAOC,MAAA,KAAW,eAClB,CAACA,MAAA,CAAOC,QAAA,IACR,OAAOD,MAAA,CAAOC,QAAA,CAASR,QAAA,KAAa,UACpC;IACA,OAAO;EACT;EACA,OAAOO,MAAA,CAAOC,QAAA,CAASR,QAAA;AACzB;AAEO,SAASS,kBAAA,EAAwC;EACtD,MAAMT,QAAA,GAAWM,qBAAA,CAAsB;EACvC,IAAIN,QAAA,KAAa,QAAW,OAAO;EACnC,OAAOA,QAAA,IAAYO,MAAA,CAAOC,QAAA,CAASE,MAAA,IAAU;AAC/C;AAEO,SAASC,mCACdC,KAAA,EACAC,YAAA,GAAeJ,iBAAA,CAAkB,GACb;EAGpB,WAAWnB,IAAA,IAAQsB,KAAA,EAAO;IACxB,IAAItB,IAAA,KAAS,UAAa,CAACa,qBAAA,CAAsBb,IAAI,GAAG;MACtD,OAAOA,IAAA;IACT;EACF;EAEA,OAAOuB,YAAA;AACT;AAEO,SAASC,uCACdd,QAAA,EACAa,YAAA,GAAeJ,iBAAA,CAAkB,GACzB;EACR,OAAOP,sBAAA,CACLS,kCAAA,CAAmC,CAACX,QAAQ,GAAGa,YAAY,KAAKb,QAClE;AACF","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ import { stripBaseUrl } from "../fork/getStateFromPath-mods.native.js";
2
+ function stripPathSuffix(path) {
3
+ var queryIndex = path.indexOf("?");
4
+ var hashIndex = path.indexOf("#");
5
+ var end = path.length;
6
+ if (queryIndex >= 0) end = Math.min(end, queryIndex);
7
+ if (hashIndex >= 0) end = Math.min(end, hashIndex);
8
+ return path.slice(0, end);
9
+ }
10
+ function stripTrailingSlash(pathname) {
11
+ return pathname.length > 1 && pathname.endsWith("/") ? pathname.slice(0, -1) : pathname;
12
+ }
13
+ function normalizeRoutePathname(pathname) {
14
+ return stripTrailingSlash(stripBaseUrl(stripPathSuffix(pathname)));
15
+ }
16
+ function hasLostDynamicSegment(path) {
17
+ return stripPathSuffix(path).split("/").includes("undefined");
18
+ }
19
+ function getSafeWindowPathname() {
20
+ if (typeof window === "undefined" || !window.location || typeof window.location.pathname !== "string") {
21
+ return void 0;
22
+ }
23
+ return window.location.pathname;
24
+ }
25
+ function getSafeWindowPath() {
26
+ var pathname = getSafeWindowPathname();
27
+ if (pathname === void 0) return void 0;
28
+ return pathname + (window.location.search || "");
29
+ }
30
+ function getPathWithRecoveredDynamicSegment(paths) {
31
+ var fallbackPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getSafeWindowPath();
32
+ var _iteratorNormalCompletion = true,
33
+ _didIteratorError = false,
34
+ _iteratorError = void 0;
35
+ try {
36
+ for (var _iterator = paths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
37
+ var path = _step.value;
38
+ if (path !== void 0 && !hasLostDynamicSegment(path)) {
39
+ return path;
40
+ }
41
+ }
42
+ } catch (err) {
43
+ _didIteratorError = true;
44
+ _iteratorError = err;
45
+ } finally {
46
+ try {
47
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
48
+ _iterator.return();
49
+ }
50
+ } finally {
51
+ if (_didIteratorError) {
52
+ throw _iteratorError;
53
+ }
54
+ }
55
+ }
56
+ return fallbackPath;
57
+ }
58
+ function getPathnameWithRecoveredDynamicSegment(pathname) {
59
+ var fallbackPath = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : getSafeWindowPath();
60
+ var _getPathWithRecoveredDynamicSegment;
61
+ return normalizeRoutePathname((_getPathWithRecoveredDynamicSegment = getPathWithRecoveredDynamicSegment([pathname], fallbackPath)) !== null && _getPathWithRecoveredDynamicSegment !== void 0 ? _getPathWithRecoveredDynamicSegment : pathname);
62
+ }
63
+ export { getPathWithRecoveredDynamicSegment, getPathnameWithRecoveredDynamicSegment, getSafeWindowPath, getSafeWindowPathname, hasLostDynamicSegment, normalizeRoutePathname, stripTrailingSlash };
64
+ //# sourceMappingURL=path.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stripBaseUrl","stripPathSuffix","path","queryIndex","indexOf","hashIndex","end","length","Math","min","slice","stripTrailingSlash","pathname","endsWith","normalizeRoutePathname","hasLostDynamicSegment","split","includes","getSafeWindowPathname","window","location","getSafeWindowPath","search","getPathWithRecoveredDynamicSegment","paths","fallbackPath","arguments","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","value","err"],"sources":["../../../src/router/path.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAE7B,SAASC,gBAAgBC,IAAA,EAAsB;EAC7C,IAAAC,UAAM,GAAAD,IAAa,CAAAE,OAAK,IAAQ;EAChC,IAAAC,SAAM,GAAAH,IAAY,CAAAE,OAAK,IAAQ;EAC/B,IAAIE,GAAA,GAAMJ,IAAA,CAAKK,MAAA;EAEf,IAAIJ,UAAA,IAAc,GAAGG,GAAA,GAAME,IAAA,CAAKC,GAAA,CAAIH,GAAA,EAAKH,UAAU;EACnD,IAAIE,SAAA,IAAa,GAAGC,GAAA,GAAME,IAAA,CAAKC,GAAA,CAAIH,GAAA,EAAKD,SAAS;EAEjD,OAAOH,IAAA,CAAKQ,KAAA,CAAM,GAAGJ,GAAG;AAC1B;AAEO,SAASK,mBAAmBC,QAAA,EAA0B;EAC3D,OAAOA,QAAA,CAASL,MAAA,GAAS,KAAKK,QAAA,CAASC,QAAA,CAAS,GAAG,IAAID,QAAA,CAASF,KAAA,CAAM,GAAG,EAAE,IAAIE,QAAA;AACjF;AAEO,SAASE,uBAAuBF,QAAA,EAA0B;EAC/D,OAAOD,kBAAA,CAAmBX,YAAA,CAAaC,eAAA,CAAgBW,QAAQ,CAAC,CAAC;AACnE;AAGO,SAASG,sBAAsBb,IAAA,EAAuB;EAC3D,OAAOD,eAAA,CAAgBC,IAAI,EAAEc,KAAA,CAAM,GAAG,EAAEC,QAAA,CAAS,WAAW;AAC9D;AAKO,SAASC,sBAAA,EAA4C;EAC1D,IACE,OAAOC,MAAA,KAAW,eAClB,CAACA,MAAA,CAAOC,QAAA,IACR,OAAOD,MAAA,CAAOC,QAAA,CAASR,QAAA,KAAa,UACpC;IACA,OAAO;EACT;EACA,OAAOO,MAAA,CAAOC,QAAA,CAASR,QAAA;AACzB;AAEO,SAASS,kBAAA,EAAwC;EACtD,IAAAT,QAAM,GAAAM,qBAAW;EACjB,IAAIN,QAAA,KAAa,QAAW,OAAO;EACnC,OAAOA,QAAA,IAAYO,MAAA,CAAOC,QAAA,CAASE,MAAA,IAAU;AAC/C;AAEO,SAASC,mCACdC,KAAA,EACA;EAIA,IAAAC,YAAW,GAAQC,SAAO,CAAAnB,MAAA,QAAAmB,SAAA,iBAAAA,SAAA,MAAAL,iBAAA;EACxB,IAAAM,yBAA2B;IAAAC,iBAA6B;IAAAC,cAAA;EACtD;IACF,SAAAC,SAAA,GAAAN,KAAA,CAAAO,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MACF,IAAAzB,IAAA,GAAA+B,KAAA,CAAAG,KAAA;MAEA,IAAOlC,IAAA,gBAAAa,qBAAA,CAAAb,IAAA;QACT,OAAAA,IAAA;MAEO;IAIL;EAAO,EACL,OAAAmC,GAAA;IACFT,iBAAA;IACFC,cAAA,GAAAQ,GAAA","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ import { afterEach, describe, expect, it } from "vitest";
2
+ import { getPathWithRecoveredDynamicSegment, getPathnameWithRecoveredDynamicSegment, hasLostDynamicSegment, normalizeRoutePathname } from "./path.mjs";
3
+ const originalBaseUrl = process.env.EXPO_BASE_URL;
4
+ const originalNodeEnv = process.env.NODE_ENV;
5
+ afterEach(() => {
6
+ if (originalBaseUrl === void 0) {
7
+ delete process.env.EXPO_BASE_URL;
8
+ } else {
9
+ process.env.EXPO_BASE_URL = originalBaseUrl;
10
+ }
11
+ if (originalNodeEnv === void 0) {
12
+ delete process.env.NODE_ENV;
13
+ } else {
14
+ process.env.NODE_ENV = originalNodeEnv;
15
+ }
16
+ });
17
+ describe("hasLostDynamicSegment", () => {
18
+ it('detects a literal "undefined" segment', () => {
19
+ expect(hasLostDynamicSegment("/p/undefined")).toBe(true);
20
+ expect(hasLostDynamicSegment("/users/undefined/posts")).toBe(true);
21
+ expect(hasLostDynamicSegment("/undefined")).toBe(true);
22
+ });
23
+ it('does not match "undefined" inside another segment', () => {
24
+ expect(hasLostDynamicSegment("/p/undefined-things")).toBe(false);
25
+ expect(hasLostDynamicSegment("/p/notundefined")).toBe(false);
26
+ expect(hasLostDynamicSegment("/p/foo-undefined-bar")).toBe(false);
27
+ });
28
+ it("ignores search and hash values", () => {
29
+ expect(hasLostDynamicSegment("/p/undefined?tab=profile")).toBe(true);
30
+ expect(hasLostDynamicSegment("/p/mai1015?x=undefined")).toBe(false);
31
+ expect(hasLostDynamicSegment("/p/mai1015#undefined")).toBe(false);
32
+ });
33
+ });
34
+ describe("normalizeRoutePathname", () => {
35
+ it("strips search, hash, and trailing slash", () => {
36
+ expect(normalizeRoutePathname("/p/mai1015/?tab=profile#top")).toBe("/p/mai1015");
37
+ expect(normalizeRoutePathname("/")).toBe("/");
38
+ });
39
+ it("strips the production base url", () => {
40
+ process.env.NODE_ENV = "production";
41
+ process.env.EXPO_BASE_URL = "/expo/prefix";
42
+ expect(normalizeRoutePathname("/expo/prefix/p/mai1015?tab=profile")).toBe("/p/mai1015");
43
+ });
44
+ });
45
+ describe("getPathWithRecoveredDynamicSegment", () => {
46
+ it("uses the first uncorrupted candidate path", () => {
47
+ expect(getPathWithRecoveredDynamicSegment(["/p/undefined", "/p/mai1015?tab=profile"], "/p/browser?tab=profile")).toBe("/p/mai1015?tab=profile");
48
+ });
49
+ it("keeps an empty uncorrupted candidate path", () => {
50
+ expect(getPathWithRecoveredDynamicSegment([""], "/browser")).toBe("");
51
+ });
52
+ it("falls back when every candidate path is corrupted", () => {
53
+ expect(getPathWithRecoveredDynamicSegment(["/p/undefined"], "/p/browser?tab=profile")).toBe("/p/browser?tab=profile");
54
+ });
55
+ });
56
+ describe("getPathnameWithRecoveredDynamicSegment", () => {
57
+ it("normalizes the recovered browser pathname", () => {
58
+ process.env.NODE_ENV = "production";
59
+ process.env.EXPO_BASE_URL = "/expo/prefix";
60
+ expect(getPathnameWithRecoveredDynamicSegment("/p/undefined", "/expo/prefix/p/mai1015?tab=profile")).toBe("/p/mai1015");
61
+ });
62
+ });
63
+ //# sourceMappingURL=path.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["afterEach","describe","expect","it","getPathWithRecoveredDynamicSegment","getPathnameWithRecoveredDynamicSegment","hasLostDynamicSegment","normalizeRoutePathname","originalBaseUrl","process","env","EXPO_BASE_URL","originalNodeEnv","NODE_ENV","toBe"],"sources":["../../../src/router/path.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AAChD,SACEC,kCAAA,EACAC,sCAAA,EACAC,qBAAA,EACAC,sBAAA,QACK;AAEP,MAAMC,eAAA,GAAkBC,OAAA,CAAQC,GAAA,CAAIC,aAAA;AACpC,MAAMC,eAAA,GAAkBH,OAAA,CAAQC,GAAA,CAAIG,QAAA;AAEpCb,SAAA,CAAU,MAAM;EACd,IAAIQ,eAAA,KAAoB,QAAW;IACjC,OAAOC,OAAA,CAAQC,GAAA,CAAIC,aAAA;EACrB,OAAO;IACLF,OAAA,CAAQC,GAAA,CAAIC,aAAA,GAAgBH,eAAA;EAC9B;EAEA,IAAII,eAAA,KAAoB,QAAW;IACjC,OAAOH,OAAA,CAAQC,GAAA,CAAIG,QAAA;EACrB,OAAO;IACLJ,OAAA,CAAQC,GAAA,CAAIG,QAAA,GAAWD,eAAA;EACzB;AACF,CAAC;AAEDX,QAAA,CAAS,yBAAyB,MAAM;EACtCE,EAAA,CAAG,yCAAyC,MAAM;IAChDD,MAAA,CAAOI,qBAAA,CAAsB,cAAc,CAAC,EAAEQ,IAAA,CAAK,IAAI;IACvDZ,MAAA,CAAOI,qBAAA,CAAsB,wBAAwB,CAAC,EAAEQ,IAAA,CAAK,IAAI;IACjEZ,MAAA,CAAOI,qBAAA,CAAsB,YAAY,CAAC,EAAEQ,IAAA,CAAK,IAAI;EACvD,CAAC;EAEDX,EAAA,CAAG,qDAAqD,MAAM;IAC5DD,MAAA,CAAOI,qBAAA,CAAsB,qBAAqB,CAAC,EAAEQ,IAAA,CAAK,KAAK;IAC/DZ,MAAA,CAAOI,qBAAA,CAAsB,iBAAiB,CAAC,EAAEQ,IAAA,CAAK,KAAK;IAC3DZ,MAAA,CAAOI,qBAAA,CAAsB,sBAAsB,CAAC,EAAEQ,IAAA,CAAK,KAAK;EAClE,CAAC;EAEDX,EAAA,CAAG,kCAAkC,MAAM;IACzCD,MAAA,CAAOI,qBAAA,CAAsB,0BAA0B,CAAC,EAAEQ,IAAA,CAAK,IAAI;IACnEZ,MAAA,CAAOI,qBAAA,CAAsB,wBAAwB,CAAC,EAAEQ,IAAA,CAAK,KAAK;IAClEZ,MAAA,CAAOI,qBAAA,CAAsB,sBAAsB,CAAC,EAAEQ,IAAA,CAAK,KAAK;EAClE,CAAC;AACH,CAAC;AAEDb,QAAA,CAAS,0BAA0B,MAAM;EACvCE,EAAA,CAAG,2CAA2C,MAAM;IAClDD,MAAA,CAAOK,sBAAA,CAAuB,6BAA6B,CAAC,EAAEO,IAAA,CAAK,YAAY;IAC/EZ,MAAA,CAAOK,sBAAA,CAAuB,GAAG,CAAC,EAAEO,IAAA,CAAK,GAAG;EAC9C,CAAC;EAEDX,EAAA,CAAG,kCAAkC,MAAM;IACzCM,OAAA,CAAQC,GAAA,CAAIG,QAAA,GAAW;IACvBJ,OAAA,CAAQC,GAAA,CAAIC,aAAA,GAAgB;IAE5BT,MAAA,CAAOK,sBAAA,CAAuB,oCAAoC,CAAC,EAAEO,IAAA,CACnE,YACF;EACF,CAAC;AACH,CAAC;AAEDb,QAAA,CAAS,sCAAsC,MAAM;EACnDE,EAAA,CAAG,6CAA6C,MAAM;IACpDD,MAAA,CACEE,kCAAA,CACE,CAAC,gBAAgB,wBAAwB,GACzC,wBACF,CACF,EAAEU,IAAA,CAAK,wBAAwB;EACjC,CAAC;EAEDX,EAAA,CAAG,6CAA6C,MAAM;IACpDD,MAAA,CAAOE,kCAAA,CAAmC,CAAC,EAAE,GAAG,UAAU,CAAC,EAAEU,IAAA,CAAK,EAAE;EACtE,CAAC;EAEDX,EAAA,CAAG,qDAAqD,MAAM;IAC5DD,MAAA,CACEE,kCAAA,CAAmC,CAAC,cAAc,GAAG,wBAAwB,CAC/E,EAAEU,IAAA,CAAK,wBAAwB;EACjC,CAAC;AACH,CAAC;AAEDb,QAAA,CAAS,0CAA0C,MAAM;EACvDE,EAAA,CAAG,6CAA6C,MAAM;IACpDM,OAAA,CAAQC,GAAA,CAAIG,QAAA,GAAW;IACvBJ,OAAA,CAAQC,GAAA,CAAIC,aAAA,GAAgB;IAE5BT,MAAA,CACEG,sCAAA,CACE,gBACA,oCACF,CACF,EAAES,IAAA,CAAK,YAAY;EACrB,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ import { afterEach, describe, expect, it } from "vitest";
2
+ import { getPathWithRecoveredDynamicSegment, getPathnameWithRecoveredDynamicSegment, hasLostDynamicSegment, normalizeRoutePathname } from "./path.native.js";
3
+ var originalBaseUrl = process.env.EXPO_BASE_URL;
4
+ var originalNodeEnv = process.env.NODE_ENV;
5
+ afterEach(function () {
6
+ if (originalBaseUrl === void 0) {
7
+ delete process.env.EXPO_BASE_URL;
8
+ } else {
9
+ process.env.EXPO_BASE_URL = originalBaseUrl;
10
+ }
11
+ if (originalNodeEnv === void 0) {
12
+ delete process.env.NODE_ENV;
13
+ } else {
14
+ process.env.NODE_ENV = originalNodeEnv;
15
+ }
16
+ });
17
+ describe("hasLostDynamicSegment", function () {
18
+ it('detects a literal "undefined" segment', function () {
19
+ expect(hasLostDynamicSegment("/p/undefined")).toBe(true);
20
+ expect(hasLostDynamicSegment("/users/undefined/posts")).toBe(true);
21
+ expect(hasLostDynamicSegment("/undefined")).toBe(true);
22
+ });
23
+ it('does not match "undefined" inside another segment', function () {
24
+ expect(hasLostDynamicSegment("/p/undefined-things")).toBe(false);
25
+ expect(hasLostDynamicSegment("/p/notundefined")).toBe(false);
26
+ expect(hasLostDynamicSegment("/p/foo-undefined-bar")).toBe(false);
27
+ });
28
+ it("ignores search and hash values", function () {
29
+ expect(hasLostDynamicSegment("/p/undefined?tab=profile")).toBe(true);
30
+ expect(hasLostDynamicSegment("/p/mai1015?x=undefined")).toBe(false);
31
+ expect(hasLostDynamicSegment("/p/mai1015#undefined")).toBe(false);
32
+ });
33
+ });
34
+ describe("normalizeRoutePathname", function () {
35
+ it("strips search, hash, and trailing slash", function () {
36
+ expect(normalizeRoutePathname("/p/mai1015/?tab=profile#top")).toBe("/p/mai1015");
37
+ expect(normalizeRoutePathname("/")).toBe("/");
38
+ });
39
+ it("strips the production base url", function () {
40
+ process.env.NODE_ENV = "production";
41
+ process.env.EXPO_BASE_URL = "/expo/prefix";
42
+ expect(normalizeRoutePathname("/expo/prefix/p/mai1015?tab=profile")).toBe("/p/mai1015");
43
+ });
44
+ });
45
+ describe("getPathWithRecoveredDynamicSegment", function () {
46
+ it("uses the first uncorrupted candidate path", function () {
47
+ expect(getPathWithRecoveredDynamicSegment(["/p/undefined", "/p/mai1015?tab=profile"], "/p/browser?tab=profile")).toBe("/p/mai1015?tab=profile");
48
+ });
49
+ it("keeps an empty uncorrupted candidate path", function () {
50
+ expect(getPathWithRecoveredDynamicSegment([""], "/browser")).toBe("");
51
+ });
52
+ it("falls back when every candidate path is corrupted", function () {
53
+ expect(getPathWithRecoveredDynamicSegment(["/p/undefined"], "/p/browser?tab=profile")).toBe("/p/browser?tab=profile");
54
+ });
55
+ });
56
+ describe("getPathnameWithRecoveredDynamicSegment", function () {
57
+ it("normalizes the recovered browser pathname", function () {
58
+ process.env.NODE_ENV = "production";
59
+ process.env.EXPO_BASE_URL = "/expo/prefix";
60
+ expect(getPathnameWithRecoveredDynamicSegment("/p/undefined", "/expo/prefix/p/mai1015?tab=profile")).toBe("/p/mai1015");
61
+ });
62
+ });
63
+ //# sourceMappingURL=path.test.native.js.map