one 1.2.18 → 1.2.20

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 (97) hide show
  1. package/dist/cjs/createHandleRequest.cjs +7 -2
  2. package/dist/cjs/createHandleRequest.js +8 -3
  3. package/dist/cjs/createHandleRequest.js.map +1 -1
  4. package/dist/cjs/createHandleRequest.native.js +8 -2
  5. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  6. package/dist/cjs/experimental-useLoaderState.cjs +64 -0
  7. package/dist/cjs/experimental-useLoaderState.js +44 -0
  8. package/dist/cjs/experimental-useLoaderState.js.map +6 -0
  9. package/dist/cjs/experimental-useLoaderState.native.js +69 -0
  10. package/dist/cjs/experimental-useLoaderState.native.js.map +1 -0
  11. package/dist/cjs/index.cjs +1 -0
  12. package/dist/cjs/index.js +1 -0
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/index.native.js +1 -0
  15. package/dist/cjs/index.native.js.map +1 -1
  16. package/dist/cjs/router/router.cjs +35 -5
  17. package/dist/cjs/router/router.js +26 -5
  18. package/dist/cjs/router/router.js.map +1 -1
  19. package/dist/cjs/router/router.native.js +32 -5
  20. package/dist/cjs/router/router.native.js.map +1 -1
  21. package/dist/cjs/server/oneServe.cjs +8 -6
  22. package/dist/cjs/server/oneServe.js +10 -5
  23. package/dist/cjs/server/oneServe.js.map +1 -1
  24. package/dist/cjs/server/oneServe.native.js +8 -6
  25. package/dist/cjs/server/oneServe.native.js.map +1 -1
  26. package/dist/cjs/useLoader.cjs +117 -36
  27. package/dist/cjs/useLoader.js +108 -33
  28. package/dist/cjs/useLoader.js.map +2 -2
  29. package/dist/cjs/useLoader.native.js +151 -55
  30. package/dist/cjs/useLoader.native.js.map +1 -1
  31. package/dist/cjs/utils/cleanUrl.cjs +6 -5
  32. package/dist/cjs/utils/cleanUrl.js +4 -8
  33. package/dist/cjs/utils/cleanUrl.js.map +1 -1
  34. package/dist/cjs/utils/cleanUrl.native.js +6 -3
  35. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  36. package/dist/esm/createHandleRequest.js +8 -3
  37. package/dist/esm/createHandleRequest.js.map +1 -1
  38. package/dist/esm/createHandleRequest.mjs +7 -2
  39. package/dist/esm/createHandleRequest.mjs.map +1 -1
  40. package/dist/esm/createHandleRequest.native.js +8 -2
  41. package/dist/esm/createHandleRequest.native.js.map +1 -1
  42. package/dist/esm/experimental-useLoaderState.js +32 -0
  43. package/dist/esm/experimental-useLoaderState.js.map +6 -0
  44. package/dist/esm/experimental-useLoaderState.mjs +41 -0
  45. package/dist/esm/experimental-useLoaderState.mjs.map +1 -0
  46. package/dist/esm/experimental-useLoaderState.native.js +43 -0
  47. package/dist/esm/experimental-useLoaderState.native.js.map +1 -0
  48. package/dist/esm/index.js +2 -1
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/index.mjs +2 -2
  51. package/dist/esm/index.mjs.map +1 -1
  52. package/dist/esm/index.native.js +2 -2
  53. package/dist/esm/index.native.js.map +1 -1
  54. package/dist/esm/router/router.js +26 -5
  55. package/dist/esm/router/router.js.map +1 -1
  56. package/dist/esm/router/router.mjs +35 -5
  57. package/dist/esm/router/router.mjs.map +1 -1
  58. package/dist/esm/router/router.native.js +32 -5
  59. package/dist/esm/router/router.native.js.map +1 -1
  60. package/dist/esm/server/oneServe.js +10 -5
  61. package/dist/esm/server/oneServe.js.map +1 -1
  62. package/dist/esm/server/oneServe.mjs +7 -5
  63. package/dist/esm/server/oneServe.mjs.map +1 -1
  64. package/dist/esm/server/oneServe.native.js +7 -5
  65. package/dist/esm/server/oneServe.native.js.map +1 -1
  66. package/dist/esm/useLoader.js +110 -35
  67. package/dist/esm/useLoader.js.map +2 -2
  68. package/dist/esm/useLoader.mjs +117 -38
  69. package/dist/esm/useLoader.mjs.map +1 -1
  70. package/dist/esm/useLoader.native.js +151 -57
  71. package/dist/esm/useLoader.native.js.map +1 -1
  72. package/dist/esm/utils/cleanUrl.js +4 -8
  73. package/dist/esm/utils/cleanUrl.js.map +1 -1
  74. package/dist/esm/utils/cleanUrl.mjs +6 -5
  75. package/dist/esm/utils/cleanUrl.mjs.map +1 -1
  76. package/dist/esm/utils/cleanUrl.native.js +6 -3
  77. package/dist/esm/utils/cleanUrl.native.js.map +1 -1
  78. package/package.json +10 -10
  79. package/src/createHandleRequest.ts +6 -2
  80. package/src/index.ts +1 -1
  81. package/src/router/router.ts +45 -0
  82. package/src/server/oneServe.ts +12 -6
  83. package/src/types.ts +1 -0
  84. package/src/useLoader.ts +206 -90
  85. package/src/utils/cleanUrl.ts +7 -10
  86. package/types/createHandleRequest.d.ts.map +1 -1
  87. package/types/experimental-useLoaderState.d.ts.map +1 -0
  88. package/types/index.d.ts +1 -1
  89. package/types/index.d.ts.map +1 -1
  90. package/types/router/router.d.ts.map +1 -1
  91. package/types/server/oneServe.d.ts.map +1 -1
  92. package/types/types.d.ts +1 -0
  93. package/types/types.d.ts.map +1 -1
  94. package/types/useLoader.d.ts +9 -0
  95. package/types/useLoader.d.ts.map +1 -1
  96. package/types/utils/cleanUrl.d.ts +1 -1
  97. package/types/utils/cleanUrl.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useActiveParams","useParams","usePathname","resolveHref","preloadingLoader","getLoaderPath","dynamicImport","weakKey","useServerContext","_instanceof","left","right","Symbol","hasInstance","promises","errors","loadedData","useLoader","loader","loaderProps","loaderPropsFromServerContext","loaderData","loaderDataFromServerContext","window","useAsyncFn","path","params","pathname","currentPath","replace","preloadedData","currentData","loaded","then","val","catch","err","console","error","getData","loaderJSUrl","response","nativeLoaderJSUrl","loaderJsCodeResp","fetch","ok","Error","status","loaderJsCode","text","result","eval","e"],"sources":["../../src/useLoader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useSyncExternalStore","useParams","usePathname","resolveHref","preloadingLoader","getLoaderPath","dynamicImport","weakKey","useServerContext","_instanceof","left","right","Symbol","hasInstance","loaderState","subscribers","Set","updateState","path","updates","forEach","callback","subscribe","add","delete","getLoaderState","preloadedData2","data","error","promise","state","hasLoadedOnce","refetchLoader","pathname2","cacheBust","Date","now","loaderJSUrl2","module2","result2","loader","timestamp","err","useLoaderState","loaderProps","loaderPropsFromServerContext","loaderData","loaderDataFromServerContext","params","pathname","currentPath","replace","window","serverData","useAsyncFn","refetch","preloadedData","loaderStateEntry","then","val","catch","console","loadData","loaderJSUrl","nativeLoaderJSUrl","loaderJsCodeResp","fetch","ok","Error","status","loaderJsCode","text","result","eval","e","module"],"sources":["../../src/useLoader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -13,16 +13,12 @@ const isClient = typeof window < "u", clientSideURL = isClient ? getURL() : "";
13
13
  function getPreloadPath(currentPath) {
14
14
  return `${clientSideURL}/assets/${cleanUrl(currentPath.slice(1))}${PRELOAD_JS_POSTFIX}`;
15
15
  }
16
- function getLoaderPath(currentPath, includeUrl = isNative) {
17
- const baseURL = includeUrl ? getURL() : "", devPath = process.env.NODE_ENV === "development" ? "/_one" : "", currentPathUrl = new URL(
18
- currentPath,
19
- "http://example.com"
20
- /* not important, just for `new URL()` to work */
21
- );
22
- return `${baseURL}${devPath}/assets/${cleanUrl(currentPathUrl.pathname.slice(1))}${LOADER_JS_POSTFIX}`;
16
+ function getLoaderPath(currentPath, includeUrl = isNative, cacheBust) {
17
+ const baseURL = includeUrl ? getURL() : "", devPath = process.env.NODE_ENV === "development" ? "/_one" : "", currentPathUrl = new URL(currentPath, "http://example.com"), cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)), cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : "";
18
+ return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
23
19
  }
24
20
  function getPathFromLoaderPath(loaderPath) {
25
- return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replaceAll(/_/g, "/");
21
+ return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_/, "").replaceAll(/_/g, "/");
26
22
  }
27
23
  export {
28
24
  getLoaderPath,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/cleanUrl.ts"],
4
- "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAE7B,SAAS,SAAS,MAAc;AAC9B,SACE,aAAa,IAAI,EACd,WAAW,KAAK,GAAG,EAEnB,QAAQ,MAAM,EAAE;AAEvB;AAEA,MAAM,WAAW,OAAO,SAAW,KAC7B,gBAAgB,WAAW,OAAO,IAAI;AAErC,SAAS,eAAe,aAAqB;AAClD,SAAO,GAAG,aAAa,WAAW,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB;AACvF;AAEO,SAAS,cACd,aAEA,aAAa,UACb;AACA,QAAM,UAAU,aAAa,OAAO,IAAI,IAClC,UAAU,QAAQ,IAAI,aAAa,gBAAgB,UAAU,IAE7D,iBAAiB,IAAI;AAAA,IACzB;AAAA,IACA;AAAA;AAAA,EACF;AAEA,SAAO,GAAG,OAAO,GAAG,OAAO,WAAW,SAAS,eAAe,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,iBAAiB;AACtG;AAEO,SAAS,sBAAsB,YAAoB;AACxD,SAAO,WACJ,QAAQ,yBAAyB,EAAE,EACnC,QAAQ,sBAAsB,EAAE,EAChC,WAAW,MAAM,GAAG;AACzB;",
4
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAE7B,SAAS,SAAS,MAAc;AAC9B,SACE,aAAa,IAAI,EACd,WAAW,KAAK,GAAG,EAEnB,QAAQ,MAAM,EAAE;AAEvB;AAEA,MAAM,WAAW,OAAO,SAAW,KAC7B,gBAAgB,WAAW,OAAO,IAAI;AAErC,SAAS,eAAe,aAAqB;AAClD,SAAO,GAAG,aAAa,WAAW,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB;AACvF;AAEO,SAAS,cAAc,aAAqB,aAAa,UAAU,WAAoB;AAC5F,QAAM,UAAU,aAAa,OAAO,IAAI,IAClC,UAAU,QAAQ,IAAI,aAAa,gBAAgB,UAAU,IAE7D,iBAAiB,IAAI,IAAI,aAAa,oBAAoB,GAE1D,aAAa,SAAS,eAAe,SAAS,MAAM,CAAC,CAAC,GACtD,mBAAmB,YAAY,YAAY,SAAS,MAAM;AAEhE,SAAO,GAAG,OAAO,GAAG,OAAO,WAAW,UAAU,GAAG,gBAAgB,GAAG,iBAAiB;AACzF;AAEO,SAAS,sBAAsB,YAAoB;AACxD,SAAO,WACJ,QAAQ,yBAAyB,EAAE,EACnC,QAAQ,sBAAsB,EAAE,EAChC,QAAQ,iBAAiB,EAAE,EAC3B,WAAW,MAAM,GAAG;AACzB;",
5
5
  "names": []
6
6
  }
@@ -9,15 +9,16 @@ const isClient = typeof window < "u",
9
9
  function getPreloadPath(currentPath) {
10
10
  return `${clientSideURL}/assets/${cleanUrl(currentPath.slice(1))}${PRELOAD_JS_POSTFIX}`;
11
11
  }
12
- function getLoaderPath(currentPath, includeUrl = isNative) {
12
+ function getLoaderPath(currentPath, includeUrl = isNative, cacheBust) {
13
13
  const baseURL = includeUrl ? getURL() : "",
14
14
  devPath = process.env.NODE_ENV === "development" ? "/_one" : "",
15
- currentPathUrl = new URL(currentPath, "http://example.com"
16
- /* not important, just for `new URL()` to work */);
17
- return `${baseURL}${devPath}/assets/${cleanUrl(currentPathUrl.pathname.slice(1))}${LOADER_JS_POSTFIX}`;
15
+ currentPathUrl = new URL(currentPath, "http://example.com"),
16
+ cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)),
17
+ cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : "";
18
+ return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
18
19
  }
19
20
  function getPathFromLoaderPath(loaderPath) {
20
- return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replaceAll(/_/g, "/");
21
+ return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_/, "").replaceAll(/_/g, "/");
21
22
  }
22
23
  export { getLoaderPath, getPathFromLoaderPath, getPreloadPath };
23
24
  //# sourceMappingURL=cleanUrl.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","pathname","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,QAAA,EACAC,iBAAA,EACAC,uBAAA,EACAC,kBAAA,QACK;AACP,SAASC,MAAA,QAAc;AACvB,SAASC,YAAA,QAAoB;AAE7B,SAASC,SAASC,IAAA,EAAc;EAC9B,OACEF,YAAA,CAAaE,IAAI,EACdC,UAAA,CAAW,KAAK,GAAG,EAEnBC,OAAA,CAAQ,MAAM,EAAE;AAEvB;AAEA,MAAMC,QAAA,GAAW,OAAOC,MAAA,GAAW;EAC7BC,aAAA,GAAgBF,QAAA,GAAWN,MAAA,CAAO,IAAI;AAErC,SAASS,eAAeC,WAAA,EAAqB;EAClD,OAAO,GAAGF,aAAa,WAAWN,QAAA,CAASQ,WAAA,CAAYC,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGZ,kBAAkB;AACvF;AAEO,SAASa,cACdF,WAAA,EAEAG,UAAA,GAAajB,QAAA,EACb;EACA,MAAMkB,OAAA,GAAUD,UAAA,GAAab,MAAA,CAAO,IAAI;IAClCe,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAAgB,UAAU;IAE7DC,cAAA,GAAiB,IAAIC,GAAA,CACzBV,WAAA,EACA;IAAA,iDACF;EAEA,OAAO,GAAGI,OAAO,GAAGC,OAAO,WAAWb,QAAA,CAASiB,cAAA,CAAeE,QAAA,CAASV,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGd,iBAAiB;AACtG;AAEO,SAASyB,sBAAsBC,UAAA,EAAoB;EACxD,OAAOA,UAAA,CACJlB,OAAA,CAAQP,uBAAA,EAAyB,EAAE,EACnCO,OAAA,CAAQ,sBAAsB,EAAE,EAChCD,UAAA,CAAW,MAAM,GAAG;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","cacheBust","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","cleanedUrl","pathname","cacheBustSegment","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,QAAA,EACAC,iBAAA,EACAC,uBAAA,EACAC,kBAAA,QACK;AACP,SAASC,MAAA,QAAc;AACvB,SAASC,YAAA,QAAoB;AAE7B,SAASC,SAASC,IAAA,EAAc;EAC9B,OACEF,YAAA,CAAaE,IAAI,EACdC,UAAA,CAAW,KAAK,GAAG,EAEnBC,OAAA,CAAQ,MAAM,EAAE;AAEvB;AAEA,MAAMC,QAAA,GAAW,OAAOC,MAAA,GAAW;EAC7BC,aAAA,GAAgBF,QAAA,GAAWN,MAAA,CAAO,IAAI;AAErC,SAASS,eAAeC,WAAA,EAAqB;EAClD,OAAO,GAAGF,aAAa,WAAWN,QAAA,CAASQ,WAAA,CAAYC,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGZ,kBAAkB;AACvF;AAEO,SAASa,cAAcF,WAAA,EAAqBG,UAAA,GAAajB,QAAA,EAAUkB,SAAA,EAAoB;EAC5F,MAAMC,OAAA,GAAUF,UAAA,GAAab,MAAA,CAAO,IAAI;IAClCgB,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAAgB,UAAU;IAE7DC,cAAA,GAAiB,IAAIC,GAAA,CAAIX,WAAA,EAAa,oBAAoB;IAE1DY,UAAA,GAAapB,QAAA,CAASkB,cAAA,CAAeG,QAAA,CAASZ,KAAA,CAAM,CAAC,CAAC;IACtDa,gBAAA,GAAmBV,SAAA,GAAY,YAAYA,SAAS,MAAM;EAEhE,OAAO,GAAGC,OAAO,GAAGC,OAAO,WAAWM,UAAU,GAAGE,gBAAgB,GAAG3B,iBAAiB;AACzF;AAEO,SAAS4B,sBAAsBC,UAAA,EAAoB;EACxD,OAAOA,UAAA,CACJrB,OAAA,CAAQP,uBAAA,EAAyB,EAAE,EACnCO,OAAA,CAAQ,sBAAsB,EAAE,EAChCA,OAAA,CAAQ,iBAAiB,EAAE,EAC3BD,UAAA,CAAW,MAAM,GAAG;AACzB","ignoreList":[]}
@@ -11,13 +11,16 @@ function getPreloadPath(currentPath) {
11
11
  }
12
12
  function getLoaderPath(currentPath) {
13
13
  var includeUrl = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : isNative,
14
+ cacheBust = arguments.length > 2 ? arguments[2] : void 0,
14
15
  baseURL = includeUrl ? getURL() : "",
15
16
  devPath = process.env.NODE_ENV === "development" ? "/_one" : "",
16
- currentPathUrl = new URL(currentPath, "http://example.com");
17
- return `${baseURL}${devPath}/assets/${cleanUrl(currentPathUrl.pathname.slice(1))}${LOADER_JS_POSTFIX}`;
17
+ currentPathUrl = new URL(currentPath, "http://example.com"),
18
+ cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)),
19
+ cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : "";
20
+ return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
18
21
  }
19
22
  function getPathFromLoaderPath(loaderPath) {
20
- return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replaceAll(/_/g, "/");
23
+ return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_/, "").replaceAll(/_/g, "/");
21
24
  }
22
25
  export { getLoaderPath, getPathFromLoaderPath, getPreloadPath };
23
26
  //# sourceMappingURL=cleanUrl.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","arguments","length","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","pathname","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,QAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,kBAAA;AAAA,SACEC,MAAA;AAAA,SACAC,YAAA;AAAA,SACAC,SAAAC,IAAA;EACA,OAAAF,YAAA,CAAAE,IAAA,EAAAC,UAAA,WAAAC,OAAA;AAAA;AAEF,IAAAC,QAAS,UAAAC,MAAc;EAAAC,aAAA,GAAAF,QAAA,GAAAN,MAAA;AACvB,SAASS,eAAAC,WAAoB;EAE7B,OAAS,GAAAF,aAAuB,WAAAN,QAAA,CAAAQ,WAAA,CAAAC,KAAA,OAAAZ,kBAAA;AAC9B;AAMF,SAAAa,cAAAF,WAAA;EAEA,IAAMG,UAAA,GAAWC,SAAO,CAAAC,MAAW,GAC7B,KAAAD,SAAA,EAAgB,WAAW,IAAAA,SAAW,MAAAlB,QAAA;IAAAoB,OAAA,GAAAH,UAAA,GAAAb,MAAA;IAAAiB,OAAA,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;IAAAC,cAAA,OAAAC,GAAA,CAAAZ,WAAA;EAErC,OAAS,GAAAM,OAAA,GAAAC,OAAe,WAAqBf,QAAA,CAAAmB,cAAA,CAAAE,QAAA,CAAAZ,KAAA,OAAAd,iBAAA;AAClD;AACF,SAAA2B,sBAAAC,UAAA;EAEO,OAASA,UAAA,CAAApB,OACd,CAAAP,uBAEa,MAAAO,OACb,2BAAAD,UAAA;AACA;AAG2B,SACzBQ,aACA,EAAAY,qBAAA,EACFf,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","arguments","length","cacheBust","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","cleanedUrl","pathname","cacheBustSegment","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,QAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,kBAAA;AAAA,SACEC,MAAA;AAAA,SACAC,YAAA;AAAA,SACAC,SAAAC,IAAA;EACA,OAAAF,YAAA,CAAAE,IAAA,EAAAC,UAAA,WAAAC,OAAA;AAAA;AAEF,IAAAC,QAAS,UAAAC,MAAc;EAAAC,aAAA,GAAAF,QAAA,GAAAN,MAAA;AACvB,SAASS,eAAAC,WAAoB;EAE7B,OAAS,GAAAF,aAAuB,WAAAN,QAAA,CAAAQ,WAAA,CAAAC,KAAA,OAAAZ,kBAAA;AAC9B;AAMF,SAAAa,cAAAF,WAAA;EAEA,IAAMG,UAAA,GAAWC,SAAO,CAAAC,MAAW,GAC7B,KAAAD,SAAA,EAAgB,WAAW,IAAAA,SAAW,MAAAlB,QAAA;IAAAoB,SAAA,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA;IAAAG,OAAA,GAAAJ,UAAA,GAAAb,MAAA;IAAAkB,OAAA,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;IAAAC,cAAA,OAAAC,GAAA,CAAAb,WAAA;IAAAc,UAAA,GAAAtB,QAAA,CAAAoB,cAAA,CAAAG,QAAA,CAAAd,KAAA;IAAAe,gBAAA,GAAAV,SAAA,eAAAA,SAAA;EAErC,OAAS,GAAAC,OAAA,GAAAC,OAAe,WAAqBM,UAAA,GAAAE,gBAAA,GAAA7B,iBAAA;AAClD;AACF,SAAA8B,sBAAAC,UAAA;EAEO,OAASA,UAAA,CAAAvB,OAAc,CAAAP,uBAAkC,MAAAO,OAAU,qBAAoB,MAAAA,OAAA,sBAAAD,UAAA;AAC5F;AAQA,SACFQ,aAAA,EAEOe,qBAAS,EACdlB,cAAO","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.2.18",
3
+ "version": "1.2.20",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -121,17 +121,17 @@
121
121
  "@react-navigation/routers": "~7.5.1",
122
122
  "@swc/core": "^1.14.0",
123
123
  "@ungap/structured-clone": "^1.2.0",
124
- "@vxrn/compiler": "1.2.18",
125
- "@vxrn/resolve": "1.2.18",
126
- "@vxrn/tslib-lite": "1.2.18",
127
- "@vxrn/universal-color-scheme": "1.2.18",
128
- "@vxrn/use-isomorphic-layout-effect": "1.2.18",
129
- "@vxrn/vite-plugin-metro": "1.2.18",
124
+ "@vxrn/compiler": "1.2.20",
125
+ "@vxrn/resolve": "1.2.20",
126
+ "@vxrn/tslib-lite": "1.2.20",
127
+ "@vxrn/universal-color-scheme": "1.2.20",
128
+ "@vxrn/use-isomorphic-layout-effect": "1.2.20",
129
+ "@vxrn/vite-plugin-metro": "1.2.20",
130
130
  "babel-dead-code-elimination": "^1.0.10",
131
131
  "babel-plugin-module-resolver": "^5.0.2",
132
132
  "citty": "^0.1.6",
133
133
  "core-js": "^3.38.1",
134
- "create-vxrn": "1.2.18",
134
+ "create-vxrn": "1.2.20",
135
135
  "escape-string-regexp": "^5.0.0",
136
136
  "expo-linking": "~8.0.8",
137
137
  "expo-modules-core": "~3.0.24",
@@ -157,7 +157,7 @@
157
157
  "vite": "^7.1.12",
158
158
  "vite-plugin-barrel": "^0.4.1",
159
159
  "vite-tsconfig-paths": "^5.1.4",
160
- "vxrn": "1.2.18",
160
+ "vxrn": "1.2.20",
161
161
  "ws": "^8.18.0",
162
162
  "xxhashjs": "^0.2.2"
163
163
  },
@@ -175,7 +175,7 @@
175
175
  "devDependencies": {
176
176
  "@react-navigation/core": "^7.13.0",
177
177
  "@react-navigation/native": "~7.1.19",
178
- "@tamagui/build": "^1.137.3",
178
+ "@tamagui/build": "^1.138.6",
179
179
  "@types/node": "^24.10.0",
180
180
  "@types/react-dom": "^19.2.2",
181
181
  "@types/xxhashjs": "^0.2.4",
@@ -96,6 +96,7 @@ export async function resolveAPIRoute(
96
96
  url,
97
97
  loaderProps: {
98
98
  path: pathname,
99
+ search: url.search,
99
100
  params,
100
101
  },
101
102
  }),
@@ -139,6 +140,7 @@ export async function resolveLoaderRoute(
139
140
  url,
140
141
  loaderProps: {
141
142
  path: url.pathname,
143
+ search: url.search,
142
144
  request: route.type === 'ssr' ? request : undefined,
143
145
  params: getLoaderParams(url, route),
144
146
  },
@@ -176,7 +178,8 @@ export async function resolvePageRoute(
176
178
  route,
177
179
  url,
178
180
  loaderProps: {
179
- path: pathname + search,
181
+ path: pathname,
182
+ search: search,
180
183
  // Ensure SSR loaders receive the original request
181
184
  request: route.type === 'ssr' ? request : undefined,
182
185
  params: getLoaderParams(url, route),
@@ -265,7 +268,8 @@ export function createHandleRequest(
265
268
  continue
266
269
  }
267
270
 
268
- return resolveLoaderRoute(handlers, request, finalUrl, route)
271
+ const cleanedRequest = new Request(finalUrl, request)
272
+ return resolveLoaderRoute(handlers, cleanedRequest, finalUrl, route)
269
273
  }
270
274
 
271
275
  if (process.env.NODE_ENV === 'development') {
package/src/index.ts CHANGED
@@ -69,7 +69,7 @@ export { useNavigation } from './router/useNavigation'
69
69
  export type { Endpoint, LoaderProps } from './types'
70
70
  // React Navigation
71
71
  export { useFocusEffect } from './useFocusEffect'
72
- export { useLoader } from './useLoader'
72
+ export { useLoader, useLoaderState } from './useLoader'
73
73
  export { type ServerHeadInsertionCallback, useServerHeadInsertion } from './useServerHeadInsertion'
74
74
  export { isResponse } from './utils/isResponse'
75
75
  export { redirect } from './utils/redirect'
@@ -65,6 +65,30 @@ export function initialize(
65
65
  throw new Error('No routes found')
66
66
  }
67
67
 
68
+ if (process.env.NODE_ENV === 'development' && process.env.ONE_DEBUG_ROUTER && routeNode) {
69
+ const formatRouteTree = (node: RouteNode, indent = '', isLast = true): string => {
70
+ const prefix = indent + (isLast ? '└─ ' : '├─ ')
71
+ const childIndent = indent + (isLast ? ' ' : '│ ')
72
+
73
+ const dynamicBadge = node.dynamic ? ` [${node.dynamic.map((d) => d.name).join(', ')}]` : ''
74
+ const typeBadge = node.type !== 'layout' ? ` (${node.type})` : ''
75
+ const routeName = node.route || '/'
76
+
77
+ let line = `${prefix}${routeName}${dynamicBadge}${typeBadge}`
78
+
79
+ const visibleChildren = node.children.filter((child) => !child.internal)
80
+ for (let i = 0; i < visibleChildren.length; i++) {
81
+ const child = visibleChildren[i]
82
+ const childIsLast = i === visibleChildren.length - 1
83
+ line += '\n' + formatRouteTree(child, childIndent, childIsLast)
84
+ }
85
+
86
+ return line
87
+ }
88
+
89
+ console.info(`[one] 📍 Route structure:\n${formatRouteTree(routeNode)}`)
90
+ }
91
+
68
92
  navigationRef = ref
69
93
  setupLinkingAndRouteInfo(initialLocation)
70
94
  subscribeToNavigationChanges()
@@ -156,6 +180,9 @@ export function push(url: OneRouter.Href, options?: OneRouter.LinkToOptions) {
156
180
  }
157
181
 
158
182
  export function dismiss(count?: number) {
183
+ if (process.env.NODE_ENV === 'development' && process.env.ONE_DEBUG_ROUTER) {
184
+ console.info(`[one] 🔙 dismiss${count ? ` (${count})` : ''}`)
185
+ }
159
186
  navigationRef?.dispatch(StackActions.pop(count))
160
187
  }
161
188
 
@@ -172,10 +199,16 @@ export function setParams(params: OneRouter.InpurRouteParamsGeneric = {}) {
172
199
  }
173
200
 
174
201
  export function dismissAll() {
202
+ if (process.env.NODE_ENV === 'development' && process.env.ONE_DEBUG_ROUTER) {
203
+ console.info(`[one] 🔙 dismissAll`)
204
+ }
175
205
  navigationRef?.dispatch(StackActions.popToTop())
176
206
  }
177
207
 
178
208
  export function goBack() {
209
+ if (process.env.NODE_ENV === 'development' && process.env.ONE_DEBUG_ROUTER) {
210
+ console.info(`[one] 🔙 goBack`)
211
+ }
179
212
  assertIsReady(navigationRef)
180
213
  navigationRef?.current?.goBack()
181
214
  }
@@ -217,6 +250,14 @@ export function updateState(state: OneRouter.ResultState, nextStateParam = state
217
250
  const nextRouteInfo = getRouteInfo(state)
218
251
 
219
252
  if (!deepEqual(routeInfo, nextRouteInfo)) {
253
+ if (process.env.NODE_ENV === 'development' && process.env.ONE_DEBUG_ROUTER) {
254
+ const from = routeInfo?.pathname || '(initial)'
255
+ const to = nextRouteInfo.pathname
256
+ const params = Object.keys(nextRouteInfo.params || {}).length
257
+ ? nextRouteInfo.params
258
+ : undefined
259
+ console.info(`[one] 🧭 ${from} → ${to}`, params ? { params } : '')
260
+ }
220
261
  routeInfo = nextRouteInfo
221
262
  }
222
263
  }
@@ -361,6 +402,10 @@ export function preloadRoute(href: string) {
361
402
  }
362
403
 
363
404
  export async function linkTo(href: string, event?: string, options?: OneRouter.LinkToOptions) {
405
+ if (process.env.NODE_ENV === 'development' && process.env.ONE_DEBUG_ROUTER) {
406
+ console.info(`[one] 🔗 ${event || 'NAVIGATE'} ${href}`)
407
+ }
408
+
364
409
  if (href[0] === '#') {
365
410
  // this is just linking to a section of the current page on web
366
411
  return
@@ -1,9 +1,9 @@
1
- import { extname, join } from 'node:path'
2
1
  import { default as FSExtra } from 'fs-extra'
3
2
  import type { Hono, MiddlewareHandler } from 'hono'
4
3
  import type { BlankEnv } from 'hono/types'
4
+ import { extname, join } from 'node:path'
5
5
  import { serveStaticAssets } from 'vxrn'
6
- import { getServerEntry, serveStatic } from 'vxrn/serve'
6
+ import { getServerEntry } from 'vxrn/serve'
7
7
  import { LOADER_JS_POSTFIX_UNCACHED, PRELOAD_JS_POSTFIX } from '../constants'
8
8
  import {
9
9
  compileManifest,
@@ -170,12 +170,12 @@ url: ${url}`)
170
170
  const url = getURLfromRequestURL(request)
171
171
 
172
172
  const response = await (() => {
173
- // this handles the ...rest style routes
174
- // where to put this best? can likely be after some of the switch?
173
+ // this handles all loader refetches or fetches due to navigation
175
174
  if (url.pathname.endsWith(LOADER_JS_POSTFIX_UNCACHED)) {
176
175
  const originalUrl = getPathFromLoaderPath(url.pathname)
177
176
  const finalUrl = new URL(originalUrl, url.origin)
178
- return resolveLoaderRoute(requestHandlers, request, finalUrl, route)
177
+ const cleanedRequest = new Request(finalUrl, request)
178
+ return resolveLoaderRoute(requestHandlers, cleanedRequest, finalUrl, route)
179
179
  }
180
180
 
181
181
  switch (route.type) {
@@ -297,9 +297,15 @@ url: ${url}`)
297
297
  }
298
298
 
299
299
  const finalUrl = new URL(originalUrl, url.origin)
300
+ const cleanedRequest = new Request(finalUrl, request)
300
301
 
301
302
  try {
302
- const resolved = await resolveLoaderRoute(requestHandlers, request, finalUrl, loaderRoute)
303
+ const resolved = await resolveLoaderRoute(
304
+ requestHandlers,
305
+ cleanedRequest,
306
+ finalUrl,
307
+ loaderRoute
308
+ )
303
309
  return resolved
304
310
  } catch (err) {
305
311
  console.error(`Error running loader: ${err}`)
package/src/types.ts CHANGED
@@ -11,6 +11,7 @@ export type RenderApp = (props: RenderAppProps) => Promise<string>
11
11
 
12
12
  export type LoaderProps<Params extends Object = Record<string, string | string[]>> = {
13
13
  path: string
14
+ search?: string
14
15
  params: Params
15
16
  request?: Request
16
17
  }