one 1.2.75 → 1.2.76

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 (143) hide show
  1. package/dist/cjs/cli/build.cjs +22 -6
  2. package/dist/cjs/cli/build.js +20 -3
  3. package/dist/cjs/cli/build.js.map +1 -1
  4. package/dist/cjs/cli/build.native.js +144 -93
  5. package/dist/cjs/cli/build.native.js.map +1 -1
  6. package/dist/cjs/cli/buildPage.cjs +43 -11
  7. package/dist/cjs/cli/buildPage.js +37 -5
  8. package/dist/cjs/cli/buildPage.js.map +1 -1
  9. package/dist/cjs/cli/buildPage.native.js +64 -14
  10. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  11. package/dist/cjs/createApp.cjs +8 -4
  12. package/dist/cjs/createApp.js +8 -4
  13. package/dist/cjs/createApp.js.map +1 -1
  14. package/dist/cjs/index.cjs +6 -0
  15. package/dist/cjs/index.js +6 -1
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/index.native.js +6 -0
  18. package/dist/cjs/index.native.js.map +1 -1
  19. package/dist/cjs/router/Route.js.map +1 -1
  20. package/dist/cjs/router/Route.native.js.map +1 -1
  21. package/dist/cjs/router/router.cjs +29 -4
  22. package/dist/cjs/router/router.js +19 -2
  23. package/dist/cjs/router/router.js.map +1 -1
  24. package/dist/cjs/router/router.native.js +8 -1
  25. package/dist/cjs/router/router.native.js.map +1 -1
  26. package/dist/cjs/server/oneServe.cjs +47 -8
  27. package/dist/cjs/server/oneServe.js +46 -9
  28. package/dist/cjs/server/oneServe.js.map +1 -1
  29. package/dist/cjs/server/oneServe.native.js +57 -10
  30. package/dist/cjs/server/oneServe.native.js.map +1 -1
  31. package/dist/cjs/useMatches.cjs +55 -0
  32. package/dist/cjs/useMatches.js +53 -0
  33. package/dist/cjs/useMatches.js.map +6 -0
  34. package/dist/cjs/useMatches.native.js +87 -0
  35. package/dist/cjs/useMatches.native.js.map +1 -0
  36. package/dist/cjs/useMatches.test.cjs +287 -0
  37. package/dist/cjs/useMatches.test.js +208 -0
  38. package/dist/cjs/useMatches.test.js.map +6 -0
  39. package/dist/cjs/useMatches.test.native.js +313 -0
  40. package/dist/cjs/useMatches.test.native.js.map +1 -0
  41. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +51 -10
  42. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +39 -12
  43. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  44. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +95 -52
  45. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  46. package/dist/esm/cli/build.js +20 -3
  47. package/dist/esm/cli/build.js.map +1 -1
  48. package/dist/esm/cli/build.mjs +22 -6
  49. package/dist/esm/cli/build.mjs.map +1 -1
  50. package/dist/esm/cli/build.native.js +144 -93
  51. package/dist/esm/cli/build.native.js.map +1 -1
  52. package/dist/esm/cli/buildPage.js +37 -5
  53. package/dist/esm/cli/buildPage.js.map +1 -1
  54. package/dist/esm/cli/buildPage.mjs +43 -11
  55. package/dist/esm/cli/buildPage.mjs.map +1 -1
  56. package/dist/esm/cli/buildPage.native.js +64 -14
  57. package/dist/esm/cli/buildPage.native.js.map +1 -1
  58. package/dist/esm/createApp.js +8 -3
  59. package/dist/esm/createApp.js.map +1 -1
  60. package/dist/esm/createApp.mjs +8 -4
  61. package/dist/esm/createApp.mjs.map +1 -1
  62. package/dist/esm/index.js +12 -1
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/index.mjs +3 -2
  65. package/dist/esm/index.mjs.map +1 -1
  66. package/dist/esm/index.native.js +3 -2
  67. package/dist/esm/index.native.js.map +1 -1
  68. package/dist/esm/router/Route.js.map +1 -1
  69. package/dist/esm/router/Route.mjs.map +1 -1
  70. package/dist/esm/router/Route.native.js.map +1 -1
  71. package/dist/esm/router/router.js +19 -1
  72. package/dist/esm/router/router.js.map +1 -1
  73. package/dist/esm/router/router.mjs +28 -4
  74. package/dist/esm/router/router.mjs.map +1 -1
  75. package/dist/esm/router/router.native.js +7 -1
  76. package/dist/esm/router/router.native.js.map +1 -1
  77. package/dist/esm/server/oneServe.js +46 -9
  78. package/dist/esm/server/oneServe.js.map +1 -1
  79. package/dist/esm/server/oneServe.mjs +47 -8
  80. package/dist/esm/server/oneServe.mjs.map +1 -1
  81. package/dist/esm/server/oneServe.native.js +57 -10
  82. package/dist/esm/server/oneServe.native.js.map +1 -1
  83. package/dist/esm/useMatches.js +38 -0
  84. package/dist/esm/useMatches.js.map +6 -0
  85. package/dist/esm/useMatches.mjs +29 -0
  86. package/dist/esm/useMatches.mjs.map +1 -0
  87. package/dist/esm/useMatches.native.js +58 -0
  88. package/dist/esm/useMatches.native.js.map +1 -0
  89. package/dist/esm/useMatches.test.js +209 -0
  90. package/dist/esm/useMatches.test.js.map +6 -0
  91. package/dist/esm/useMatches.test.mjs +288 -0
  92. package/dist/esm/useMatches.test.mjs.map +1 -0
  93. package/dist/esm/useMatches.test.native.js +311 -0
  94. package/dist/esm/useMatches.test.native.js.map +1 -0
  95. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +39 -12
  96. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  97. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +51 -10
  98. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  99. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +95 -52
  100. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  101. package/package.json +9 -9
  102. package/src/cli/build.ts +36 -2
  103. package/src/cli/buildPage.ts +52 -2
  104. package/src/createApp.tsx +8 -0
  105. package/src/index.ts +8 -1
  106. package/src/router/Route.tsx +2 -0
  107. package/src/router/router.ts +57 -0
  108. package/src/server/oneServe.ts +89 -9
  109. package/src/types.ts +5 -0
  110. package/src/useMatches.test.ts +317 -0
  111. package/src/useMatches.ts +125 -0
  112. package/src/vite/plugins/fileSystemRouterPlugin.tsx +75 -19
  113. package/src/vite/types.ts +20 -0
  114. package/types/cli/build.d.ts.map +1 -1
  115. package/types/cli/buildPage.d.ts.map +1 -1
  116. package/types/createApp.d.ts.map +1 -1
  117. package/types/index.d.ts +2 -1
  118. package/types/index.d.ts.map +1 -1
  119. package/types/router/Route.d.ts +2 -0
  120. package/types/router/Route.d.ts.map +1 -1
  121. package/types/router/router.d.ts +6 -0
  122. package/types/router/router.d.ts.map +1 -1
  123. package/types/server/oneServe.d.ts.map +1 -1
  124. package/types/types.d.ts +5 -0
  125. package/types/types.d.ts.map +1 -1
  126. package/types/useMatches.d.ts +75 -0
  127. package/types/useMatches.d.ts.map +1 -0
  128. package/types/useMatches.test.d.ts +2 -0
  129. package/types/useMatches.test.d.ts.map +1 -0
  130. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  131. package/types/vite/types.d.ts +19 -0
  132. package/types/vite/types.d.ts.map +1 -1
  133. package/dist/cjs/createRouteConfig.cjs +0 -28
  134. package/dist/cjs/createRouteConfig.js +0 -23
  135. package/dist/cjs/createRouteConfig.js.map +0 -6
  136. package/dist/cjs/createRouteConfig.native.js +0 -31
  137. package/dist/cjs/createRouteConfig.native.js.map +0 -1
  138. package/dist/esm/createRouteConfig.js +0 -7
  139. package/dist/esm/createRouteConfig.js.map +0 -6
  140. package/dist/esm/createRouteConfig.mjs +0 -5
  141. package/dist/esm/createRouteConfig.mjs.map +0 -1
  142. package/dist/esm/createRouteConfig.native.js +0 -5
  143. package/dist/esm/createRouteConfig.native.js.map +0 -1
@@ -67,39 +67,81 @@ function createFileSystemRouterPlugin(options) {
67
67
  _globalThis,
68
68
  routeFile = path.join(routerRoot, route.file);
69
69
  runner.clearCache(), (_globalThis___vxrnresetState = (_globalThis = globalThis).__vxrnresetState) === null || _globalThis___vxrnresetState === void 0 || _globalThis___vxrnresetState.call(_globalThis);
70
- var exported = routeFile === "" ? {} : await runner.import(routeFile),
71
- loaderData;
72
- if (exported.loader) {
73
- var tracked = await trackLoaderDependencies(function () {
74
- return exported.loader(loaderProps);
75
- });
76
- loaderData = tracked.result;
77
- var routePath = loaderProps?.path || "/",
78
- _iteratorNormalCompletion = !0,
79
- _didIteratorError = !1,
80
- _iteratorError = void 0;
70
+ var exported = routeFile === "" ? {} : await runner.import(routeFile);
71
+ async function runLoaderWithTracking(routeNode, loaderFn) {
72
+ var routeId = routeNode.contextKey;
73
+ if (!loaderFn) return {
74
+ loaderData: void 0,
75
+ routeId
76
+ };
81
77
  try {
82
- for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
83
- var dep = _step.value,
84
- absoluteDep = path.resolve(dep);
85
- loaderFileDependencies.has(absoluteDep) || (loaderFileDependencies.set(absoluteDep, /* @__PURE__ */new Set()), server?.watcher.add(absoluteDep), debugLoaderDeps && console.info(` \u24F5 [loader-dep] watching: ${absoluteDep}`)), loaderFileDependencies.get(absoluteDep).add(routePath);
86
- }
87
- } catch (err) {
88
- _didIteratorError = !0, _iteratorError = err;
89
- } finally {
78
+ var tracked = await trackLoaderDependencies(function () {
79
+ return loaderFn(loaderProps);
80
+ }),
81
+ routePath = loaderProps?.path || "/",
82
+ _iteratorNormalCompletion = !0,
83
+ _didIteratorError = !1,
84
+ _iteratorError = void 0;
90
85
  try {
91
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
86
+ for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
87
+ var dep = _step.value,
88
+ absoluteDep = path.resolve(dep);
89
+ loaderFileDependencies.has(absoluteDep) || (loaderFileDependencies.set(absoluteDep, /* @__PURE__ */new Set()), server?.watcher.add(absoluteDep), debugLoaderDeps && console.info(` \u24F5 [loader-dep] watching: ${absoluteDep}`)), loaderFileDependencies.get(absoluteDep).add(routePath);
90
+ }
91
+ } catch (err) {
92
+ _didIteratorError = !0, _iteratorError = err;
92
93
  } finally {
93
- if (_didIteratorError) throw _iteratorError;
94
+ try {
95
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
96
+ } finally {
97
+ if (_didIteratorError) throw _iteratorError;
98
+ }
94
99
  }
100
+ return {
101
+ loaderData: tracked.result,
102
+ routeId
103
+ };
104
+ } catch (err) {
105
+ if (isResponse(err)) throw err;
106
+ return console.error(`[one] Error running loader for ${routeId}:`, err), {
107
+ loaderData: void 0,
108
+ routeId
109
+ };
95
110
  }
96
111
  }
112
+ var layoutRoutes = route.layouts || [],
113
+ pageRoute = {
114
+ contextKey: route.file,
115
+ file: route.file
116
+ },
117
+ layoutLoaderPromises = layoutRoutes.map(async function (layout) {
118
+ var layoutFile = path.join(routerRoot, layout.contextKey),
119
+ layoutExported = await runner.import(layoutFile);
120
+ return runLoaderWithTracking(layout, layoutExported.loader);
121
+ }),
122
+ pageLoaderPromise = runLoaderWithTracking(pageRoute, exported.loader),
123
+ [layoutResults, pageResult] = await Promise.all([Promise.all(layoutLoaderPromises), pageLoaderPromise]),
124
+ matches = [...layoutResults.map(function (result) {
125
+ return {
126
+ routeId: result.routeId,
127
+ pathname: loaderProps?.path || "/",
128
+ params: loaderProps?.params || {},
129
+ loaderData: result.loaderData
130
+ };
131
+ }), {
132
+ routeId: pageResult.routeId,
133
+ pathname: loaderProps?.path || "/",
134
+ params: loaderProps?.params || {},
135
+ loaderData: pageResult.loaderData
136
+ }],
137
+ loaderData = pageResult.loaderData;
97
138
  eval("process.env.TAMAGUI_IS_SERVER = '1'");
98
139
  var entry = await runner.import(virtualEntryId),
99
140
  render = entry.default.render;
100
141
  setServerContext({
101
142
  loaderData,
102
- loaderProps
143
+ loaderProps,
144
+ matches
103
145
  }), LoaderDataCache[route.file] = loaderData;
104
146
  var is404 = route.isNotFound || !exported.default,
105
147
  html = await render({
@@ -107,7 +149,8 @@ function createFileSystemRouterPlugin(options) {
107
149
  loaderData,
108
150
  loaderProps,
109
151
  path: loaderProps?.path || "/",
110
- preloads
152
+ preloads,
153
+ matches
111
154
  });
112
155
  return is404 ? new Response(html, {
113
156
  status: 404,
@@ -161,27 +204,27 @@ ${stack}
161
204
  var exported2 = await runner.import(routeFile2),
162
205
  loaderData2;
163
206
  if (exported2.loader) {
164
- var tracked2 = await trackLoaderDependencies(function () {
207
+ var tracked = await trackLoaderDependencies(function () {
165
208
  return exported2.loader(loaderProps2);
166
209
  });
167
- loaderData2 = tracked2.result;
168
- var routePath2 = loaderProps2?.path || "/",
169
- _iteratorNormalCompletion2 = !0,
170
- _didIteratorError2 = !1,
171
- _iteratorError2 = void 0;
210
+ loaderData2 = tracked.result;
211
+ var routePath = loaderProps2?.path || "/",
212
+ _iteratorNormalCompletion = !0,
213
+ _didIteratorError = !1,
214
+ _iteratorError = void 0;
172
215
  try {
173
- for (var _iterator2 = tracked2.dependencies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
174
- var dep2 = _step2.value,
175
- absoluteDep2 = path.resolve(dep2);
176
- loaderFileDependencies.has(absoluteDep2) || (loaderFileDependencies.set(absoluteDep2, /* @__PURE__ */new Set()), server?.watcher.add(absoluteDep2), debugLoaderDeps && console.info(` \u24F5 [loader-dep] watching: ${absoluteDep2}`)), loaderFileDependencies.get(absoluteDep2).add(routePath2);
216
+ for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
217
+ var dep = _step.value,
218
+ absoluteDep = path.resolve(dep);
219
+ loaderFileDependencies.has(absoluteDep) || (loaderFileDependencies.set(absoluteDep, /* @__PURE__ */new Set()), server?.watcher.add(absoluteDep), debugLoaderDeps && console.info(` \u24F5 [loader-dep] watching: ${absoluteDep}`)), loaderFileDependencies.get(absoluteDep).add(routePath);
177
220
  }
178
221
  } catch (err) {
179
- _didIteratorError2 = !0, _iteratorError2 = err;
222
+ _didIteratorError = !0, _iteratorError = err;
180
223
  } finally {
181
224
  try {
182
- !_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
225
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
183
226
  } finally {
184
- if (_didIteratorError2) throw _iteratorError2;
227
+ if (_didIteratorError) throw _iteratorError;
185
228
  }
186
229
  }
187
230
  }
@@ -307,12 +350,12 @@ ${stack}
307
350
  redirects = (_options_web = options.web) === null || _options_web === void 0 ? void 0 : _options_web.redirects;
308
351
  if (redirects) {
309
352
  var url2 = new URL(req.url || "", `http://${req.headers.host}`),
310
- _iteratorNormalCompletion2 = !0,
311
- _didIteratorError2 = !1,
312
- _iteratorError2 = void 0;
353
+ _iteratorNormalCompletion = !0,
354
+ _didIteratorError = !1,
355
+ _iteratorError = void 0;
313
356
  try {
314
357
  for (var _loop = function () {
315
- var redirect = _step2.value,
358
+ var redirect = _step.value,
316
359
  regexStr = `^${redirect.source.replace(/:\w+/g, "([^/]+)")}$`,
317
360
  match = url2.pathname.match(new RegExp(regexStr));
318
361
  if (match) {
@@ -326,17 +369,17 @@ ${stack}
326
369
  v: void 0
327
370
  };
328
371
  }
329
- }, _iterator2 = redirects[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
372
+ }, _iterator = redirects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
330
373
  var _ret = _loop();
331
374
  if (_type_of(_ret) === "object") return _ret.v;
332
375
  }
333
376
  } catch (err) {
334
- _didIteratorError2 = !0, _iteratorError2 = err;
377
+ _didIteratorError = !0, _iteratorError = err;
335
378
  } finally {
336
379
  try {
337
- !_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
380
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
338
381
  } finally {
339
- if (_didIteratorError2) throw _iteratorError2;
382
+ if (_didIteratorError) throw _iteratorError;
340
383
  }
341
384
  }
342
385
  }
@@ -352,21 +395,21 @@ ${stack}
352
395
  if (reply.headers.forEach(function (value, key) {
353
396
  if (key === "set-cookie") {
354
397
  var cookies = value.split(", "),
355
- _iteratorNormalCompletion3 = !0,
356
- _didIteratorError3 = !1,
357
- _iteratorError3 = void 0;
398
+ _iteratorNormalCompletion2 = !0,
399
+ _didIteratorError2 = !1,
400
+ _iteratorError2 = void 0;
358
401
  try {
359
- for (var _iterator3 = cookies[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = !0) {
360
- var cookie = _step3.value;
402
+ for (var _iterator2 = cookies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
403
+ var cookie = _step2.value;
361
404
  res.appendHeader("Set-Cookie", cookie);
362
405
  }
363
406
  } catch (err) {
364
- _didIteratorError3 = !0, _iteratorError3 = err;
407
+ _didIteratorError2 = !0, _iteratorError2 = err;
365
408
  } finally {
366
409
  try {
367
- !_iteratorNormalCompletion3 && _iterator3.return != null && _iterator3.return();
410
+ !_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
368
411
  } finally {
369
- if (_didIteratorError3) throw _iteratorError3;
412
+ if (_didIteratorError2) throw _iteratorError2;
370
413
  }
371
414
  }
372
415
  } else res.setHeader(key, value);
@@ -1 +1 @@
1
- {"version":3,"names":["path","Readable","debounce","createServerModuleRunner","getSpaHeaderElements","createHandleRequest","getRouterRootFromOneOptions","isResponse","isStatusRedirect","promiseWithResolvers","trackLoaderDependencies","LoaderDataCache","replaceLoader","setServerContext","virtalEntryIdClient","virtualEntryId","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","debugRouter","process","env","ONE_DEBUG_ROUTER","debugLoaderDeps","ONE_DEBUG_LOADER_DEPS","USE_SERVER_ENV","createFileSystemRouterPlugin","options","preloads","runner","server","loaderFileDependencies","Map","handleRequest","createRequestHandler","renderPromise","routerRoot","handlePage","param","route","url","loaderProps","console","info","type","isNotFound","file","slice","serverContext","mode","promise","resolve","resolveRender","_globalThis___vxrnresetState","_globalThis","routeFile","join","clearCache","globalThis","__vxrnresetState","call","exported","import","loaderData","loader","tracked","result","routePath","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","dependencies","iterator","_step","next","done","dep","value","absoluteDep","has","set","Set","watcher","add","get","err","return","eval","entry","render","default","is404","html","Response","status","headers","error","href","title","pathname","message","Error","stack","isDuplicateReactError","test","subMessage","handleLoader","param2","request","route2","url2","loaderProps2","_this","routeFile2","transformedJS","transformRequest","code","exported2","loaderData2","tracked2","routePath2","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","dep2","absoluteDep2","platform","searchParams","environment","environments","nativeTransformedJS","JSON","stringify","handleAPI","loadMiddleware","contextKey","name","enforce","apply","config","userConfig","_ref","_options_optimization","setting","optimization","autoEntriesScanning","manifest","pageRoutes","routesAndLayouts","flatMap","_route_layouts","split","filter","x","startsWith","length","layouts","layout","optimizeDeps","entries","configureServer","serverIn","ssr","appDir","cwd","fileWatcherChangeListener","changedPath","absolutePath","addListener","loaderDepChangeListener","routePaths","size","hot","send","event","data","on","middlewares","use","req","res","_options_web","redirects","web","URL","host","_loop","redirect","regexStr","source","replace","match","RegExp","destination","params","forEach","index","writeHead","permanent","Location","end","v","_ret"],"sources":["../../../../src/vite/plugins/fileSystemRouterPlugin.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["path","Readable","debounce","createServerModuleRunner","getSpaHeaderElements","createHandleRequest","getRouterRootFromOneOptions","isResponse","isStatusRedirect","promiseWithResolvers","trackLoaderDependencies","LoaderDataCache","replaceLoader","setServerContext","virtalEntryIdClient","virtualEntryId","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","debugRouter","process","env","ONE_DEBUG_ROUTER","debugLoaderDeps","ONE_DEBUG_LOADER_DEPS","USE_SERVER_ENV","createFileSystemRouterPlugin","options","preloads","runner","server","loaderFileDependencies","Map","handleRequest","createRequestHandler","renderPromise","routerRoot","handlePage","param","route","url","loaderProps","console","info","type","isNotFound","file","slice","serverContext","mode","promise","resolve","resolveRender","_globalThis___vxrnresetState","_globalThis","routeFile","join","clearCache","globalThis","__vxrnresetState","call","exported","import","runLoaderWithTracking","routeNode","loaderFn","routeId","contextKey","loaderData","tracked","routePath","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","dependencies","iterator","_step","next","done","dep","value","absoluteDep","has","set","Set","watcher","add","get","err","return","result","error","layoutRoutes","layouts","pageRoute","layoutLoaderPromises","map","layout","layoutFile","layoutExported","loader","pageLoaderPromise","layoutResults","pageResult","Promise","all","matches","pathname","params","eval","entry","render","default","is404","html","Response","status","headers","href","title","message","Error","stack","isDuplicateReactError","test","subMessage","handleLoader","param2","request","route2","url2","loaderProps2","_this","routeFile2","transformedJS","transformRequest","code","exported2","loaderData2","platform","searchParams","environment","environments","nativeTransformedJS","JSON","stringify","handleAPI","loadMiddleware","name","enforce","apply","config","userConfig","_ref","_options_optimization","setting","optimization","autoEntriesScanning","manifest","pageRoutes","routesAndLayouts","flatMap","_route_layouts","split","filter","x","startsWith","length","optimizeDeps","entries","configureServer","serverIn","ssr","appDir","cwd","fileWatcherChangeListener","changedPath","absolutePath","addListener","loaderDepChangeListener","routePaths","size","hot","send","event","data","on","middlewares","use","req","res","_options_web","redirects","web","URL","host","_loop"],"sources":["../../../../src/vite/plugins/fileSystemRouterPlugin.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.2.75",
3
+ "version": "1.2.76",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -139,17 +139,17 @@
139
139
  "@react-navigation/routers": "~7.5.1",
140
140
  "@swc/core": "^1.14.0",
141
141
  "@ungap/structured-clone": "^1.2.0",
142
- "@vxrn/color-scheme": "1.2.75",
143
- "@vxrn/compiler": "1.2.75",
144
- "@vxrn/resolve": "1.2.75",
145
- "@vxrn/tslib-lite": "1.2.75",
146
- "@vxrn/use-isomorphic-layout-effect": "1.2.75",
147
- "@vxrn/vite-plugin-metro": "1.2.75",
142
+ "@vxrn/color-scheme": "1.2.76",
143
+ "@vxrn/compiler": "1.2.76",
144
+ "@vxrn/resolve": "1.2.76",
145
+ "@vxrn/tslib-lite": "1.2.76",
146
+ "@vxrn/use-isomorphic-layout-effect": "1.2.76",
147
+ "@vxrn/vite-plugin-metro": "1.2.76",
148
148
  "babel-dead-code-elimination": "1.0.10",
149
149
  "babel-plugin-module-resolver": "^5.0.2",
150
150
  "citty": "^0.1.6",
151
151
  "core-js": "^3.38.1",
152
- "create-vxrn": "1.2.75",
152
+ "create-vxrn": "1.2.76",
153
153
  "escape-string-regexp": "^5.0.0",
154
154
  "expo-linking": "~8.0.8",
155
155
  "expo-modules-core": "~3.0.24",
@@ -177,7 +177,7 @@
177
177
  "vite": "^7.1.12",
178
178
  "vite-plugin-barrel": "^0.4.1",
179
179
  "vite-tsconfig-paths": "^5.1.4",
180
- "vxrn": "1.2.75",
180
+ "vxrn": "1.2.76",
181
181
  "ws": "^8.18.0",
182
182
  "xxhashjs": "^0.2.2"
183
183
  },
package/src/cli/build.ts CHANGED
@@ -261,6 +261,22 @@ export async function build(args: {
261
261
 
262
262
  const outputEntries = [...vxrnOutput.serverOutput.entries()]
263
263
 
264
+ // build a map of layout contextKey -> server output fileName
265
+ // this is used to run layout loaders in production
266
+ const layoutServerPaths = new Map<string, string>()
267
+ for (const [, output] of outputEntries) {
268
+ if (output.type === 'asset') continue
269
+ const id = output.facadeModuleId || ''
270
+ const file = Path.basename(id)
271
+ // layout files start with _layout
272
+ if (file.startsWith('_layout') && id.includes(`/${routerRoot}/`)) {
273
+ // contextKey format is "./_layout.tsx" or "./subdir/_layout.tsx"
274
+ const relativePath = relative(process.cwd(), id).replace(`${routerRoot}/`, '')
275
+ const contextKey = `./${relativePath}`
276
+ layoutServerPaths.set(contextKey, output.fileName)
277
+ }
278
+ }
279
+
264
280
  for (const [index, output] of outputEntries) {
265
281
  if (output.type === 'asset') {
266
282
  assets.push(output)
@@ -318,6 +334,16 @@ export async function build(args: {
318
334
 
319
335
  foundRoute.loaderServerPath = output.fileName
320
336
 
337
+ // attach layout server paths for running layout loaders in production
338
+ if (foundRoute.layouts) {
339
+ for (const layout of foundRoute.layouts) {
340
+ const serverPath = layoutServerPaths.get(layout.contextKey)
341
+ if (serverPath) {
342
+ layout.loaderServerPath = serverPath
343
+ }
344
+ }
345
+ }
346
+
321
347
  function collectImports(
322
348
  { imports = [], css }: ClientManifestEntry,
323
349
  { type = 'js' }: { type?: 'js' | 'css' } = {}
@@ -637,10 +663,18 @@ export async function build(args: {
637
663
  }
638
664
 
639
665
  function createBuildManifestRoute(route: RouteInfo) {
640
- // remove layouts, they are huge due to keeping all children, not needed after build
641
- // TODO would be clean it up in manifst
666
+ // remove the full layouts (they're huge with all children), but keep minimal info
667
+ // needed for running layout loaders in production
642
668
  const { layouts, ...built } = route
643
669
 
670
+ // keep simplified layout info for loader execution
671
+ if (layouts?.length) {
672
+ ;(built as any).layouts = layouts.map((layout) => ({
673
+ contextKey: layout.contextKey,
674
+ loaderServerPath: (layout as any).loaderServerPath,
675
+ }))
676
+ }
677
+
644
678
  // swap out for the built middleware path
645
679
  const buildInfo = builtRoutes.find((x) => x.routeFile === route.file)
646
680
  if (built.middlewares && buildInfo?.middlewares) {
@@ -145,10 +145,52 @@ prefetchCSS()
145
145
  )
146
146
 
147
147
  const exported = await import(toAbsolute(serverJsPath))
148
+ const loaderProps: LoaderProps = { path, params }
149
+
150
+ // Build matches array for useMatches() hook
151
+ const matches: One.RouteMatch[] = []
152
+
153
+ // Run layout loaders in parallel
154
+ if (foundRoute.layouts?.length) {
155
+ const layoutResults = await Promise.all(
156
+ foundRoute.layouts.map(async (layout) => {
157
+ try {
158
+ const layoutServerPath = layout.loaderServerPath
159
+ if (!layoutServerPath) {
160
+ return { contextKey: layout.contextKey, loaderData: undefined }
161
+ }
162
+ const layoutExported = await import(
163
+ toAbsolute(join('./', 'dist/server', layoutServerPath))
164
+ )
165
+ const layoutLoaderData = await layoutExported?.loader?.(loaderProps)
166
+ return { contextKey: layout.contextKey, loaderData: layoutLoaderData }
167
+ } catch (err) {
168
+ if (isResponse(err)) {
169
+ throw err
170
+ }
171
+ console.warn(
172
+ `[one] Warning: layout loader failed for ${layout.contextKey}:`,
173
+ err
174
+ )
175
+ return { contextKey: layout.contextKey, loaderData: undefined }
176
+ }
177
+ })
178
+ )
179
+
180
+ for (const result of layoutResults) {
181
+ matches.push({
182
+ routeId: result.contextKey,
183
+ pathname: path,
184
+ params: params || {},
185
+ loaderData: result.loaderData,
186
+ })
187
+ }
188
+ }
148
189
 
190
+ // Run page loader
149
191
  if (exported.loader) {
150
192
  try {
151
- loaderData = (await exported.loader?.({ path, params })) ?? null
193
+ loaderData = (await exported.loader?.(loaderProps)) ?? null
152
194
  } catch (err) {
153
195
  // Handle thrown responses (e.g., redirect) - skip loader data generation for this page
154
196
  // The redirect will happen at runtime instead
@@ -177,9 +219,16 @@ if (typeof document === 'undefined') globalThis.document = {}
177
219
  }
178
220
  }
179
221
 
222
+ // Add page match
223
+ matches.push({
224
+ routeId: foundRoute.file,
225
+ pathname: path,
226
+ params: params || {},
227
+ loaderData,
228
+ })
229
+
180
230
  // ssr, we basically skip at build-time and just compile it the js we need
181
231
  if (foundRoute.type !== 'ssr') {
182
- const loaderProps: LoaderProps = { path, params }
183
232
  // importing resetState causes issues :/
184
233
  globalThis['__vxrnresetState']?.()
185
234
 
@@ -200,6 +249,7 @@ if (typeof document === 'undefined') globalThis.document = {}
200
249
  cssContents: allCSSContents,
201
250
  mode: 'ssg',
202
251
  routePreloads,
252
+ matches,
203
253
  })
204
254
 
205
255
  // Apply after-LCP script loading if enabled
package/src/createApp.tsx CHANGED
@@ -5,6 +5,7 @@ import { AppRegistry } from 'react-native'
5
5
  import { resolveClientLoader } from './clientLoaderResolver'
6
6
  import { Root } from './Root'
7
7
  import { render } from './render'
8
+ import { initClientMatches } from './router/router'
8
9
  import { registerPreloadedRoute } from './router/useViteRoutes'
9
10
  import type { RenderAppProps } from './types'
10
11
  import { getServerHeadInsertions } from './useServerHeadInsertion'
@@ -49,6 +50,7 @@ export function createApp(options: CreateAppProps) {
49
50
  mode,
50
51
  loaderServerData,
51
52
  routePreloads,
53
+ matches,
52
54
  } = props
53
55
 
54
56
  setServerContext({
@@ -59,6 +61,7 @@ export function createApp(options: CreateAppProps) {
59
61
  css,
60
62
  cssContents,
61
63
  routePreloads,
64
+ matches,
62
65
  })
63
66
 
64
67
  let renderId: string | undefined
@@ -148,6 +151,11 @@ export function createApp(options: CreateAppProps) {
148
151
  const serverContext = getServerContext() || {}
149
152
  const routePreloads = serverContext.routePreloads
150
153
 
154
+ // initialize client matches from server context for useMatches hook
155
+ if (serverContext.matches) {
156
+ initClientMatches(serverContext.matches)
157
+ }
158
+
151
159
  // Wait for setup file to complete first (if provided)
152
160
  // This ensures setup code (error handlers, analytics, etc.) runs before the app
153
161
  const setupComplete = options.setupPromise || Promise.resolve()
package/src/index.ts CHANGED
@@ -47,7 +47,7 @@ export * from '@vxrn/color-scheme'
47
47
  // TODO breaking due to react-native-gesture-handler
48
48
  // export { Drawer } from './layouts/Drawer'
49
49
  // export { Unmatched } from './fallbackViews/Unmatched'
50
- export { SafeAreaView } from 'react-native-safe-area-context'
50
+ export { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context'
51
51
  export { onClientLoaderResolve } from './clientLoaderResolver'
52
52
 
53
53
  // middleware
@@ -128,6 +128,13 @@ export {
128
128
  useLoaderState,
129
129
  type LoaderTimingEntry,
130
130
  } from './useLoader'
131
+ export {
132
+ useMatches,
133
+ useMatch,
134
+ usePageMatch,
135
+ setClientMatches,
136
+ type RouteMatch,
137
+ } from './useMatches'
131
138
  export {
132
139
  type ServerHeadInsertionCallback,
133
140
  useServerHeadInsertion,
@@ -77,6 +77,8 @@ export type RouteNode = {
77
77
  layouts?: RouteNode[]
78
78
  /** Parent middlewares */
79
79
  middlewares?: RouteNode[]
80
+ /** Server-side path to the compiled loader module (set during build) */
81
+ loaderServerPath?: string
80
82
  }
81
83
 
82
84
  export const RouteParamsContext = createContext<
@@ -48,6 +48,8 @@ import { sortRoutes } from './sortRoutes'
48
48
  import { getQualifiedRouteComponent } from './useScreens'
49
49
  import { preloadRouteModules } from './useViteRoutes'
50
50
  import { getNavigateAction } from './utils/getNavigateAction'
51
+ import { setClientMatches } from '../useMatches'
52
+ import type { RouteMatch } from '../useMatches'
51
53
 
52
54
  // Module-scoped variables
53
55
  export let routeNode: RouteNode | null = null
@@ -125,6 +127,9 @@ const rootStateSubscribers = new Set<OneRouter.RootStateListener>()
125
127
  const loadingStateSubscribers = new Set<OneRouter.LoadingStateListener>()
126
128
  const storeSubscribers = new Set<() => void>()
127
129
 
130
+ // current matches for useMatches hook (cached on client)
131
+ let currentMatches: RouteMatch[] = []
132
+
128
133
  // Validation state tracking
129
134
  export type ValidationState = {
130
135
  status: 'idle' | 'validating' | 'error' | 'valid'
@@ -760,6 +765,47 @@ function normalizeLoaderPath(href: string): string {
760
765
  return url.pathname.replace(/\/index$/, '').replace(/\/$/, '') || '/'
761
766
  }
762
767
 
768
+ /**
769
+ * Build matches array for client-side navigation.
770
+ * Preserves layout matches (cached from SSR) and updates page match with fresh data.
771
+ *
772
+ * Strategy: Since layouts don't re-run on client navigation, we keep all layout matches
773
+ * from the current cached matches and only update the page match.
774
+ */
775
+ function buildClientMatches(
776
+ href: string,
777
+ matchingNode: RouteNode | null,
778
+ params: Record<string, string | string[]>,
779
+ loaderData: unknown
780
+ ): RouteMatch[] {
781
+ const pathname = extractPathnameFromHref(href)
782
+ const routeId = matchingNode?.contextKey || pathname
783
+
784
+ // preserve all layout matches (those with _layout in routeId) from current state
785
+ // since layout loaders don't re-run on client navigation
786
+ const layoutMatches = currentMatches.filter((m) => m.routeId.includes('_layout'))
787
+
788
+ // create the new page match with fresh loader data
789
+ const pageMatch: RouteMatch = {
790
+ routeId,
791
+ pathname,
792
+ params,
793
+ loaderData,
794
+ }
795
+
796
+ // return layouts + new page match
797
+ return [...layoutMatches, pageMatch]
798
+ }
799
+
800
+ /**
801
+ * Initialize client matches from server context during hydration.
802
+ * Called from createApp when hydrating.
803
+ */
804
+ export function initClientMatches(matches: RouteMatch[]) {
805
+ currentMatches = matches
806
+ setClientMatches(matches)
807
+ }
808
+
763
809
  export async function linkTo(
764
810
  href: string,
765
811
  event?: string,
@@ -911,6 +957,17 @@ export async function linkTo(
911
957
  }
912
958
  }
913
959
 
960
+ // Update client matches for useMatches hook
961
+ // This runs after preload so loaderData is available
962
+ if (process.env.TAMAGUI_TARGET !== 'native') {
963
+ const normalizedPath = normalizeLoaderPath(href)
964
+ const loaderData = preloadedLoaderData[normalizedPath]
965
+ const params = extractParamsFromState(state)
966
+ const newMatches = buildClientMatches(href, matchingRouteNode, params, loaderData)
967
+ currentMatches = newMatches
968
+ setClientMatches(newMatches)
969
+ }
970
+
914
971
  const rootState = navigationRef.getRootState()
915
972
 
916
973
  const hash = href.indexOf('#')