one 1.1.483 → 1.1.485

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 (162) hide show
  1. package/dist/cjs/cli/build.cjs +5 -41
  2. package/dist/cjs/cli/build.js +4 -44
  3. package/dist/cjs/cli/build.js.map +1 -1
  4. package/dist/cjs/cli/build.native.js +4 -42
  5. package/dist/cjs/cli/build.native.js.map +2 -2
  6. package/dist/cjs/createHandleRequest.cjs +2 -1
  7. package/dist/cjs/createHandleRequest.js +2 -1
  8. package/dist/cjs/createHandleRequest.js.map +1 -1
  9. package/dist/cjs/createHandleRequest.native.js +4 -2
  10. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  11. package/dist/cjs/server/createRoutesManifest.js.map +1 -1
  12. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  13. package/dist/cjs/server/getServerManifest.cjs +15 -7
  14. package/dist/cjs/server/getServerManifest.js +17 -8
  15. package/dist/cjs/server/getServerManifest.js.map +1 -1
  16. package/dist/cjs/server/getServerManifest.native.js +8 -5
  17. package/dist/cjs/server/getServerManifest.native.js.map +2 -2
  18. package/dist/cjs/server/oneServe.cjs +8 -13
  19. package/dist/cjs/server/oneServe.js +11 -14
  20. package/dist/cjs/server/oneServe.js.map +1 -1
  21. package/dist/cjs/server/oneServe.native.js +20 -23
  22. package/dist/cjs/server/oneServe.native.js.map +2 -2
  23. package/dist/cjs/utils/getPathnameFromFilePath.cjs +76 -0
  24. package/dist/cjs/utils/getPathnameFromFilePath.js +70 -0
  25. package/dist/cjs/utils/getPathnameFromFilePath.js.map +6 -0
  26. package/dist/cjs/utils/getPathnameFromFilePath.native.js +73 -0
  27. package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +6 -0
  28. package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +38 -8
  29. package/dist/cjs/vercel/build/buildVercelOutputDirectory.js +48 -17
  30. package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +1 -1
  31. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +50 -7
  32. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +2 -2
  33. package/dist/cjs/vercel/build/config/vc-build-output-config-base.cjs +9 -6
  34. package/dist/cjs/vercel/build/config/vc-build-output-config-base.js +7 -6
  35. package/dist/cjs/vercel/build/config/vc-build-output-config-base.js.map +1 -1
  36. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js +4 -9
  37. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +2 -2
  38. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.cjs +54 -9
  39. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js +83 -15
  40. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js.map +2 -2
  41. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js +73 -9
  42. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +2 -2
  43. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +9 -6
  44. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js +8 -6
  45. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
  46. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +8 -6
  47. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +2 -2
  48. package/dist/cjs/vercel/build/getPathFromRoute.cjs +31 -0
  49. package/dist/cjs/vercel/build/getPathFromRoute.js +24 -0
  50. package/dist/cjs/vercel/build/getPathFromRoute.js.map +6 -0
  51. package/dist/cjs/vercel/build/getPathFromRoute.native.js +31 -0
  52. package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +6 -0
  53. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.cjs +1 -1
  54. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js +1 -1
  55. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
  56. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +3 -1
  57. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +2 -2
  58. package/dist/esm/cli/build.js +4 -43
  59. package/dist/esm/cli/build.js.map +1 -1
  60. package/dist/esm/cli/build.mjs +4 -40
  61. package/dist/esm/cli/build.mjs.map +1 -1
  62. package/dist/esm/cli/build.native.js +4 -43
  63. package/dist/esm/cli/build.native.js.map +1 -1
  64. package/dist/esm/createHandleRequest.js +2 -1
  65. package/dist/esm/createHandleRequest.js.map +1 -1
  66. package/dist/esm/createHandleRequest.mjs +1 -1
  67. package/dist/esm/createHandleRequest.mjs.map +1 -1
  68. package/dist/esm/createHandleRequest.native.js +1 -1
  69. package/dist/esm/createHandleRequest.native.js.map +1 -1
  70. package/dist/esm/server/createRoutesManifest.js.map +1 -1
  71. package/dist/esm/server/createRoutesManifest.mjs.map +1 -1
  72. package/dist/esm/server/createRoutesManifest.native.js.map +1 -1
  73. package/dist/esm/server/getServerManifest.js +17 -8
  74. package/dist/esm/server/getServerManifest.js.map +1 -1
  75. package/dist/esm/server/getServerManifest.mjs +15 -7
  76. package/dist/esm/server/getServerManifest.mjs.map +1 -1
  77. package/dist/esm/server/getServerManifest.native.js +8 -4
  78. package/dist/esm/server/getServerManifest.native.js.map +1 -1
  79. package/dist/esm/server/oneServe.js +17 -15
  80. package/dist/esm/server/oneServe.js.map +1 -1
  81. package/dist/esm/server/oneServe.mjs +9 -14
  82. package/dist/esm/server/oneServe.mjs.map +1 -1
  83. package/dist/esm/server/oneServe.native.js +21 -24
  84. package/dist/esm/server/oneServe.native.js.map +1 -1
  85. package/dist/esm/utils/getPathnameFromFilePath.js +46 -0
  86. package/dist/esm/utils/getPathnameFromFilePath.js.map +6 -0
  87. package/dist/esm/utils/getPathnameFromFilePath.mjs +42 -0
  88. package/dist/esm/utils/getPathnameFromFilePath.mjs.map +1 -0
  89. package/dist/esm/utils/getPathnameFromFilePath.native.js +45 -0
  90. package/dist/esm/utils/getPathnameFromFilePath.native.js.map +1 -0
  91. package/dist/esm/vercel/build/buildVercelOutputDirectory.js +49 -18
  92. package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +1 -1
  93. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +38 -8
  94. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
  95. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +45 -8
  96. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  97. package/dist/esm/vercel/build/config/vc-build-output-config-base.js +7 -6
  98. package/dist/esm/vercel/build/config/vc-build-output-config-base.js.map +1 -1
  99. package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs +9 -6
  100. package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs.map +1 -1
  101. package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js +3 -6
  102. package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
  103. package/dist/esm/vercel/build/generate/createApiServerlessFunction.js +88 -13
  104. package/dist/esm/vercel/build/generate/createApiServerlessFunction.js.map +1 -1
  105. package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs +53 -8
  106. package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs.map +1 -1
  107. package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js +52 -8
  108. package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  109. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js +8 -5
  110. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
  111. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +8 -5
  112. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
  113. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +8 -5
  114. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  115. package/dist/esm/vercel/build/getPathFromRoute.js +8 -0
  116. package/dist/esm/vercel/build/getPathFromRoute.js.map +6 -0
  117. package/dist/esm/vercel/build/getPathFromRoute.mjs +8 -0
  118. package/dist/esm/vercel/build/getPathFromRoute.mjs.map +1 -0
  119. package/dist/esm/vercel/build/getPathFromRoute.native.js +8 -0
  120. package/dist/esm/vercel/build/getPathFromRoute.native.js.map +1 -0
  121. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js +2 -2
  122. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
  123. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs +2 -2
  124. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs.map +1 -1
  125. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +4 -2
  126. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  127. package/package.json +9 -8
  128. package/src/cli/build.ts +3 -57
  129. package/src/createHandleRequest.ts +1 -1
  130. package/src/server/createRoutesManifest.ts +1 -0
  131. package/src/server/getServerManifest.ts +12 -3
  132. package/src/server/oneServe.ts +23 -18
  133. package/src/utils/getPathnameFromFilePath.ts +62 -0
  134. package/src/vercel/build/buildVercelOutputDirectory.ts +55 -20
  135. package/src/vercel/build/config/vc-build-output-config-base.ts +6 -5
  136. package/src/vercel/build/generate/createApiServerlessFunction.ts +138 -12
  137. package/src/vercel/build/generate/createSsrServerlessFunction.ts +9 -6
  138. package/src/vercel/build/getPathFromRoute.ts +8 -0
  139. package/src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx +9 -2
  140. package/src/vite/types.ts +1 -0
  141. package/types/cli/build.d.ts.map +1 -1
  142. package/types/createHandleRequest.d.ts +1 -0
  143. package/types/createHandleRequest.d.ts.map +1 -1
  144. package/types/server/createRoutesManifest.d.ts +1 -0
  145. package/types/server/createRoutesManifest.d.ts.map +1 -1
  146. package/types/server/getServerManifest.d.ts +1 -0
  147. package/types/server/getServerManifest.d.ts.map +1 -1
  148. package/types/server/oneServe.d.ts.map +1 -1
  149. package/types/utils/getPathnameFromFilePath.d.ts +4 -0
  150. package/types/utils/getPathnameFromFilePath.d.ts.map +1 -0
  151. package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
  152. package/types/vercel/build/config/vc-build-output-config-base.d.ts +2 -5
  153. package/types/vercel/build/config/vc-build-output-config-base.d.ts.map +1 -1
  154. package/types/vercel/build/generate/createApiServerlessFunction.d.ts +2 -1
  155. package/types/vercel/build/generate/createApiServerlessFunction.d.ts.map +1 -1
  156. package/types/vercel/build/generate/createSsrServerlessFunction.d.ts +2 -2
  157. package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
  158. package/types/vercel/build/getPathFromRoute.d.ts +3 -0
  159. package/types/vercel/build/getPathFromRoute.d.ts.map +1 -0
  160. package/types/vite/plugins/generateFileSystemRouteTypesPlugin.d.ts.map +1 -1
  161. package/types/vite/types.d.ts +1 -0
  162. package/types/vite/types.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx"],
4
- "mappings": "AAAA,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAGzB,SAAS,0BAA0B;AACnC,SAAS,mCAAmC;AAErC,SAAS,mCAAmC,SAAoC;AACrF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IAEP,gBAAgB,QAAQ;AACtB,YAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,4BAA4B,OAAO,CAAC,GACjE,UAAU,KAAK,QAAQ,IAAI,GAAG,aAAa,GAE3C,aAAa,4BAA4B,OAAO,GAGhD,4BAA4B,SAAS,OAAO,MAAc,SAAiB;AAC/E,SAAI,SAAS,SAAS,SAAS,aACzB,KAAK,WAAW,MAAM,KAExB,mBAAmB,SAAS,UAAU;AAAA,MAG5C,GAAG,GAAG;AAEN,oBAAO,QAAQ,YAAY,OAAO,yBAAyB,GAEpD,MAAM;AAGX,2BAAmB,SAAS,UAAU;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,SAAS,SAAS,YAAY;AAC9B,SAAS,gBAAgB;AAGzB,SAAS,0BAA0B;AACnC,SAAS,mCAAmC;AAErC,SAAS,mCAAmC,SAAoC;AACrF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IAEP,gBAAgB,QAAQ;AACtB,YAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,4BAA4B,OAAO,CAAC,GACjE,UACA,QAAQ,MAAM,MAAM,QAAQ,IAAI,KAClC,QAAQ,KAAK,8LAA8L,GACpM,KAAK,QAAQ,MAAM,GAAG,aAAa,KAGrC,KAAK,QAAQ,IAAI,GAAG,aAAa,GAGpC,aAAa,4BAA4B,OAAO,GAGhD,4BAA4B,SAAS,OAAO,MAAc,SAAiB;AAC/E,SAAI,SAAS,SAAS,SAAS,aACzB,KAAK,WAAW,MAAM,KAExB,mBAAmB,SAAS,UAAU;AAAA,MAG5C,GAAG,GAAG;AAEN,oBAAO,QAAQ,YAAY,OAAO,yBAAyB,GAEpD,MAAM;AAGX,2BAAmB,SAAS,UAAU;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -1,4 +1,4 @@
1
- import { join } from "node:path";
1
+ import { dirname, join } from "node:path";
2
2
  import { debounce } from "perfect-debounce";
3
3
  import { generateRouteTypes } from "../../typed-routes/generateRouteTypes.mjs";
4
4
  import { getRouterRootFromOneOptions } from "../../utils/getRouterRootFromOneOptions.mjs";
@@ -9,7 +9,7 @@ function generateFileSystemRouteTypesPlugin(options) {
9
9
  apply: "serve",
10
10
  configureServer(server) {
11
11
  const appDir = join(process.cwd(), getRouterRootFromOneOptions(options)),
12
- outFile = join(process.cwd(), "routes.d.ts"),
12
+ outFile = dirname(appDir) !== process.cwd() ? (console.warn("Seems that the router root has been customized and is in a nested folder. For now we will generate the routes.d.ts file beside the app folder. This behavior might be changed in the future."), join(dirname(appDir), "routes.d.ts")) : join(process.cwd(), "routes.d.ts"),
13
13
  routerRoot = getRouterRootFromOneOptions(options),
14
14
  fileWatcherChangeListener = debounce(async (type, path) => {
15
15
  (type === "add" || type === "delete") && path.startsWith(appDir) && generateRouteTypes(outFile, routerRoot);
@@ -1 +1 @@
1
- {"version":3,"names":["join","debounce","generateRouteTypes","getRouterRootFromOneOptions","generateFileSystemRouteTypesPlugin","options","name","enforce","apply","configureServer","server","appDir","process","cwd","outFile","routerRoot","fileWatcherChangeListener","type","path","startsWith","watcher","addListener"],"sources":["../../../../src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,QAAY;AACrB,SAASC,QAAA,QAAgB;AAGzB,SAASC,kBAAA,QAA0B;AACnC,SAASC,2BAAA,QAAmC;AAErC,SAASC,mCAAmCC,OAAA,EAAoC;EACrF,OAAO;IACLC,IAAA,EAAM;IACNC,OAAA,EAAS;IACTC,KAAA,EAAO;IAEPC,gBAAgBC,MAAA,EAAQ;MACtB,MAAMC,MAAA,GAASX,IAAA,CAAKY,OAAA,CAAQC,GAAA,CAAI,GAAGV,2BAAA,CAA4BE,OAAO,CAAC;QACjES,OAAA,GAAUd,IAAA,CAAKY,OAAA,CAAQC,GAAA,CAAI,GAAG,aAAa;QAE3CE,UAAA,GAAaZ,2BAAA,CAA4BE,OAAO;QAGhDW,yBAAA,GAA4Bf,QAAA,CAAS,OAAOgB,IAAA,EAAcC,IAAA,KAAiB;UAC/E,CAAID,IAAA,KAAS,SAASA,IAAA,KAAS,aACzBC,IAAA,CAAKC,UAAA,CAAWR,MAAM,KAExBT,kBAAA,CAAmBY,OAAA,EAASC,UAAU;QAG5C,GAAG,GAAG;MAEN,OAAAL,MAAA,CAAOU,OAAA,CAAQC,WAAA,CAAY,OAAOL,yBAAyB,GAEpD,MAAM;QAGXd,kBAAA,CAAmBY,OAAA,EAASC,UAAU;MACxC;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["dirname","join","debounce","generateRouteTypes","getRouterRootFromOneOptions","generateFileSystemRouteTypesPlugin","options","name","enforce","apply","configureServer","server","appDir","process","cwd","outFile","console","warn","routerRoot","fileWatcherChangeListener","type","path","startsWith","watcher","addListener"],"sources":["../../../../src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,EAASC,IAAA,QAAY;AAC9B,SAASC,QAAA,QAAgB;AAGzB,SAASC,kBAAA,QAA0B;AACnC,SAASC,2BAAA,QAAmC;AAErC,SAASC,mCAAmCC,OAAA,EAAoC;EACrF,OAAO;IACLC,IAAA,EAAM;IACNC,OAAA,EAAS;IACTC,KAAA,EAAO;IAEPC,gBAAgBC,MAAA,EAAQ;MACtB,MAAMC,MAAA,GAASX,IAAA,CAAKY,OAAA,CAAQC,GAAA,CAAI,GAAGV,2BAAA,CAA4BE,OAAO,CAAC;QACjES,OAAA,GACAf,OAAA,CAAQY,MAAM,MAAMC,OAAA,CAAQC,GAAA,CAAI,KAClCE,OAAA,CAAQC,IAAA,CAAK,8LAA8L,GACpMhB,IAAA,CAAKD,OAAA,CAAQY,MAAM,GAAG,aAAa,KAGrCX,IAAA,CAAKY,OAAA,CAAQC,GAAA,CAAI,GAAG,aAAa;QAGpCI,UAAA,GAAad,2BAAA,CAA4BE,OAAO;QAGhDa,yBAAA,GAA4BjB,QAAA,CAAS,OAAOkB,IAAA,EAAcC,IAAA,KAAiB;UAC/E,CAAID,IAAA,KAAS,SAASA,IAAA,KAAS,aACzBC,IAAA,CAAKC,UAAA,CAAWV,MAAM,KAExBT,kBAAA,CAAmBY,OAAA,EAASG,UAAU;QAG5C,GAAG,GAAG;MAEN,OAAAP,MAAA,CAAOY,OAAA,CAAQC,WAAA,CAAY,OAAOL,yBAAyB,GAEpD,MAAM;QAGXhB,kBAAA,CAAmBY,OAAA,EAASG,UAAU;MACxC;IACF;EACF;AACF","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { join } from "node:path";
1
+ import { dirname, join } from "node:path";
2
2
  import { debounce } from "perfect-debounce";
3
3
  import { generateRouteTypes } from "../../typed-routes/generateRouteTypes.native.js";
4
4
  import { getRouterRootFromOneOptions } from "../../utils/getRouterRootFromOneOptions.native.js";
@@ -9,7 +9,9 @@ function generateFileSystemRouteTypesPlugin(options) {
9
9
  apply: "serve",
10
10
  configureServer(server) {
11
11
  var appDir = join(process.cwd(), getRouterRootFromOneOptions(options)),
12
- outFile = join(process.cwd(), "routes.d.ts"),
12
+ outFile = function () {
13
+ return dirname(appDir) !== process.cwd() ? (console.warn("Seems that the router root has been customized and is in a nested folder. For now we will generate the routes.d.ts file beside the app folder. This behavior might be changed in the future."), join(dirname(appDir), "routes.d.ts")) : join(process.cwd(), "routes.d.ts");
14
+ }(),
13
15
  routerRoot = getRouterRootFromOneOptions(options),
14
16
  fileWatcherChangeListener = debounce(async function (type, path) {
15
17
  (type === "add" || type === "delete") && path.startsWith(appDir) && generateRouteTypes(outFile, routerRoot);
@@ -1 +1 @@
1
- {"version":3,"names":["join","debounce","generateRouteTypes","getRouterRootFromOneOptions","generateFileSystemRouteTypesPlugin","options","name","enforce","apply","configureServer","server","appDir","process","cwd","outFile","routerRoot","fileWatcherChangeListener","type","path","startsWith","watcher","addListener"],"sources":["../../../../src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,QAAY;AACrB,SAASC,QAAA,QAAgB;AAGzB,SAASC,kBAAA,QAA0B;AACnC,SAASC,2BAAA,QAAmC;AAErC,SAASC,mCAAmCC,OAAA,EAAoC;EACrF,OAAO;IACLC,IAAA,EAAM;IACNC,OAAA,EAAS;IACTC,KAAA,EAAO;IAEPC,gBAAgBC,MAAA,EAAQ;MACtB,IAAAC,MAAM,GAAAX,IAAS,CAAAY,OAAK,CAAAC,GAAQ,IAAIV,2BAAG,CAAAE,OAA4B,EAAO;QAACS,OACjE,GAAAd,IAAU,CAAAY,OAAK,CAAAC,GAAQ,IAAI,aAAG;QAAaE,UAE3C,GAAAZ,2BAAa,CAAAE,OAA4B;QAAOW,yBAGhD,GAAAf,QAA4B,iBAA8BgB,IAAA,EAAAC,IAAiB;UAC/E,CAAID,IAAA,KAAS,SAASA,IAAA,KAAS,aACzBC,IAAA,CAAKC,UAAA,CAAWR,MAAM,KAExBT,kBAAA,CAAmBY,OAAA,EAASC,UAAU;QAG5C,GAAG,GAAG;MAEN,OAAAL,MAAA,CAAOU,OAAA,CAAQC,WAAA,CAAY,OAAOL,yBAAyB,GAEpD,YAAM;QAGXd,kBAAA,CAAmBY,OAAA,EAASC,UAAU;MACxC;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["dirname","join","debounce","generateRouteTypes","getRouterRootFromOneOptions","generateFileSystemRouteTypesPlugin","options","name","enforce","apply","configureServer","server","appDir","process","cwd","outFile","console","warn","routerRoot","fileWatcherChangeListener","type","path","startsWith","watcher","addListener"],"sources":["../../../../src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,EAASC,IAAA,QAAY;AAC9B,SAASC,QAAA,QAAgB;AAGzB,SAASC,kBAAA,QAA0B;AACnC,SAASC,2BAAA,QAAmC;AAErC,SAASC,mCAAmCC,OAAA,EAAoC;EACrF,OAAO;IACLC,IAAA,EAAM;IACNC,OAAA,EAAS;IACTC,KAAA,EAAO;IAEPC,gBAAgBC,MAAA,EAAQ;MACtB,IAAAC,MAAM,GAAAX,IAAS,CAAAY,OAAK,CAAAC,GAAQ,IAAIV,2BAAG,CAAAE,OAA4B,EAAO;QAACS,OACjE,eACQ;UAYZ,OAAIf,OAAS,CAAAY,MAAS,MAAAC,OAAS,CAAAC,GAAA,MACzBE,OAAK,CAAAC,IAAA,CAAW,8LAEoB,GAAAhB,IAAA,CAAAD,OAAA,CAAAY,MAAA,qBAAAX,IAAA,CAAAY,OAAA,CAAAC,GAAA;QAG5C,GAAG;QAAAI,UAAG,GAAAd,2BAAA,CAAAE,OAAA;QAAAa,yBAAA,GAAAjB,QAAA,iBAAAkB,IAAA,EAAAC,IAAA;UAEN,CAAAD,IAAA,UAAO,IAAAA,IAAQ,aAAY,KAAOC,IAAA,CAAAC,UAAA,CAAAV,MAAA,CAAyB,IAEpDT,kBAAM,CAAAY,OAAA,EAAAG,UAAA;QAGX;MACF,OAAAP,MAAA,CAAAY,OAAA,CAAAC,WAAA,QAAAL,yBAAA;QACFhB,kBAAA,CAAAY,OAAA,EAAAG,UAAA;MACF;IACF","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.1.483",
3
+ "version": "1.1.485",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -84,6 +84,7 @@
84
84
  "@babel/generator": "^7.26.8",
85
85
  "@babel/parser": "^7.26.8",
86
86
  "@babel/traverse": "^7.26.8",
87
+ "@babel/types": "^7.26.10",
87
88
  "@radix-ui/react-slot": "^1.0.2",
88
89
  "@react-native-masked-view/masked-view": "^0.3.1",
89
90
  "@react-navigation/bottom-tabs": "~7",
@@ -95,15 +96,15 @@
95
96
  "@react-navigation/routers": "~7",
96
97
  "@swc/core": "^1.10.4",
97
98
  "@ungap/structured-clone": "^1.2.0",
98
- "@vxrn/compiler": "1.1.483",
99
- "@vxrn/resolve": "1.1.483",
100
- "@vxrn/tslib-lite": "1.1.483",
101
- "@vxrn/universal-color-scheme": "1.1.483",
102
- "@vxrn/use-isomorphic-layout-effect": "1.1.483",
99
+ "@vxrn/compiler": "1.1.485",
100
+ "@vxrn/resolve": "1.1.485",
101
+ "@vxrn/tslib-lite": "1.1.485",
102
+ "@vxrn/universal-color-scheme": "1.1.485",
103
+ "@vxrn/use-isomorphic-layout-effect": "1.1.485",
103
104
  "babel-dead-code-elimination": "^1.0.9",
104
105
  "citty": "^0.1.6",
105
106
  "core-js": "^3.38.1",
106
- "create-vxrn": "1.1.483",
107
+ "create-vxrn": "1.1.485",
107
108
  "escape-string-regexp": "^5.0.0",
108
109
  "expo-linking": "~6.3.1",
109
110
  "expo-modules-core": "2.1.2",
@@ -129,7 +130,7 @@
129
130
  "vite": "^6.1.0",
130
131
  "vite-plugin-barrel": "^0.4.1",
131
132
  "vite-tsconfig-paths": "^5.0.1",
132
- "vxrn": "1.1.483",
133
+ "vxrn": "1.1.485",
133
134
  "ws": "^8.18.0",
134
135
  "xxhashjs": "^0.2.2"
135
136
  },
package/src/cli/build.ts CHANGED
@@ -26,6 +26,7 @@ import { getRouterRootFromOneOptions } from '../utils/getRouterRootFromOneOption
26
26
  import { buildPage } from './buildPage'
27
27
  import { checkNodeVersion } from './checkNodeVersion'
28
28
  import { labelProcess } from './label-process'
29
+ import { getPathnameFromFilePath } from '../utils/getPathnameFromFilePath'
29
30
 
30
31
  const { ensureDir, writeJSON } = FSExtra
31
32
 
@@ -425,8 +426,7 @@ export async function build(args: {
425
426
  }
426
427
 
427
428
  for (const params of paramsList) {
428
- const cleanId = relativeId.replace(/\+(spa|ssg|ssr)\.tsx?$/, '')
429
- const path = getPathnameFromFilePath(cleanId, params, foundRoute.type === 'ssg')
429
+ const path = getPathnameFromFilePath(relativeId, params, foundRoute.type === 'ssg')
430
430
  console.info(` ↦ route ${path}`)
431
431
 
432
432
  const built = await runWithAsyncLocalContext(async () => {
@@ -506,6 +506,7 @@ export async function build(args: {
506
506
  manifest: {
507
507
  pageRoutes: manifest.pageRoutes.map(createBuildManifestRoute),
508
508
  apiRoutes: manifest.apiRoutes.map(createBuildManifestRoute),
509
+ allRoutes: manifest.allRoutes.map(createBuildManifestRoute),
509
510
  },
510
511
  routeMap,
511
512
  constants: JSON.parse(JSON.stringify({ ...constants })) as any,
@@ -602,61 +603,6 @@ async function moveAllFiles(src: string, dest: string) {
602
603
  }
603
604
  }
604
605
 
605
- function getPathnameFromFilePath(path: string, params = {}, strict = false) {
606
- const dirname = Path.dirname(path).replace(/\([^\/]+\)/gi, '')
607
- const file = Path.basename(path)
608
- const fileName = file.replace(/\.[a-z]+$/, '')
609
-
610
- function paramsError(part: string) {
611
- throw new Error(
612
- `[one] Params doesn't fit route:
613
-
614
- - path: ${path}
615
- - part: ${part}
616
- - fileName: ${fileName}
617
- - params:
618
-
619
- ${JSON.stringify(params, null, 2)}`
620
- )
621
- }
622
-
623
- const nameWithParams = (() => {
624
- if (fileName === 'index') {
625
- return '/'
626
- }
627
- if (fileName.startsWith('[...')) {
628
- const part = fileName.replace('[...', '').replace(']', '')
629
- if (!params[part]) {
630
- if (strict) {
631
- throw paramsError(part)
632
- }
633
- return `/*`
634
- }
635
- return `/${params[part]}`
636
- }
637
- return `/${fileName
638
- .split('/')
639
- .map((part) => {
640
- if (part[0] === '[') {
641
- const found = params[part.slice(1, part.length - 1)]
642
- if (!found) {
643
- if (strict) {
644
- throw paramsError(part)
645
- }
646
-
647
- return ':' + part.replace('[', '').replace(']', '')
648
- }
649
- return found
650
- }
651
- return part
652
- })
653
- .join('/')}`
654
- })()
655
-
656
- // hono path will convert +not-found etc too
657
- return `${dirname}${nameWithParams}`.replace(/\/\/+/gi, '/')
658
- }
659
-
660
606
  function escapeRegex(string: string) {
661
607
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') // $& means the whole matched string
662
608
  }
@@ -25,7 +25,7 @@ type RequestHandlerProps<RouteExtraProps extends Object = {}> = {
25
25
 
26
26
  type RequestHandlerResponse = null | string | Response
27
27
 
28
- async function runMiddlewares(
28
+ export async function runMiddlewares(
29
29
  handlers: RequestHandlers,
30
30
  request: Request,
31
31
  route: RouteInfo,
@@ -13,6 +13,7 @@ export type RoutesManifest<TRegex = string> = {
13
13
  apiRoutes: RouteInfo<TRegex>[]
14
14
  middlewareRoutes: RouteInfo<TRegex>[]
15
15
  pageRoutes: RouteInfo<TRegex>[]
16
+ allRoutes: RouteInfo<TRegex>[]
16
17
  }
17
18
 
18
19
  function createMockModuleWithContext(map: string[] = []) {
@@ -22,6 +22,7 @@ export type OneRouterServerManifestV1<TRegex = string> = {
22
22
  apiRoutes: OneRouterServerManifestV1Route<TRegex>[]
23
23
  middlewareRoutes: OneRouterServerManifestV1Route<TRegex>[]
24
24
  pageRoutes: OneRouterServerManifestV1Route<TRegex>[]
25
+ allRoutes: OneRouterServerManifestV1Route<TRegex>[]
25
26
  }
26
27
 
27
28
  export interface Group {
@@ -63,7 +64,9 @@ export function getServerManifest(route: RouteNode): OneRouterServerManifestV1 {
63
64
  return [key]
64
65
  })
65
66
 
66
- key = parentSegments + getContextKey(route.route).replace(/\/index$/, '') || '/'
67
+ key =
68
+ (parentSegments ? parentSegments.join('') : '') +
69
+ getContextKey(route.route).replace(/\/index$/, '') || '/'
67
70
  }
68
71
 
69
72
  return [[key, { ...route, layouts }]]
@@ -92,12 +95,15 @@ export function getServerManifest(route: RouteNode): OneRouterServerManifestV1 {
92
95
  const apiRoutes: OneRouterServerManifestV1Route[] = []
93
96
  const middlewareRoutes: OneRouterServerManifestV1Route[] = []
94
97
  const pageRoutes: OneRouterServerManifestV1Route[] = []
98
+ const allRoutes: OneRouterServerManifestV1Route[] = []
95
99
 
96
100
  const addedMiddlewares: Record<string, boolean> = {}
97
101
 
98
102
  for (const [path, node] of flat) {
99
103
  if (node.type === 'api') {
100
- apiRoutes.push(getGeneratedNamedRouteRegex(path, node))
104
+ const route = getGeneratedNamedRouteRegex(path, node)
105
+ apiRoutes.push(route)
106
+ allRoutes.push(route)
101
107
  continue
102
108
  }
103
109
 
@@ -110,13 +116,16 @@ export function getServerManifest(route: RouteNode): OneRouterServerManifestV1 {
110
116
  }
111
117
  }
112
118
 
113
- pageRoutes.push(getGeneratedNamedRouteRegex(path, node))
119
+ const route = getGeneratedNamedRouteRegex(path, node)
120
+ pageRoutes.push(route)
121
+ allRoutes.push(route)
114
122
  }
115
123
 
116
124
  return {
117
125
  apiRoutes,
118
126
  middlewareRoutes,
119
127
  pageRoutes,
128
+ allRoutes,
120
129
  }
121
130
  }
122
131
 
@@ -4,12 +4,18 @@ import type { BlankEnv } from 'hono/types'
4
4
  import { extname, join } from 'node:path'
5
5
  import { getServerEntry, serveStatic } from 'vxrn/serve'
6
6
  import { LOADER_JS_POSTFIX_UNCACHED, PRELOAD_JS_POSTFIX } from '../constants'
7
- import { compileManifest, getURLfromRequestURL, type RequestHandlers } from '../createHandleRequest'
7
+ import {
8
+ compileManifest,
9
+ getURLfromRequestURL,
10
+ runMiddlewares,
11
+ type RequestHandlers,
12
+ } from '../createHandleRequest'
8
13
  import type { RenderAppProps } from '../types'
9
14
  import { getPathFromLoaderPath } from '../utils/cleanUrl'
10
15
  import { toAbsolute } from '../utils/toAbsolute'
11
16
  import type { One } from '../vite/types'
12
17
  import type { RouteInfoCompiled } from './createRoutesManifest'
18
+ import { serveStaticAssets } from 'vxrn'
13
19
 
14
20
  export async function oneServe(oneOptions: One.PluginOptions, buildInfo: One.BuildInfo, app: Hono) {
15
21
  const { resolveAPIRoute, resolveLoaderRoute, resolvePageRoute } = await import(
@@ -135,26 +141,25 @@ url: ${url}`)
135
141
 
136
142
  function createHonoHandler(route: RouteInfoCompiled): MiddlewareHandler<BlankEnv, never, {}> {
137
143
  return async (context, next) => {
138
- if (route.page.endsWith('/+not-found')) {
139
- let didCallNext = false
140
-
141
- const response = await serveStatic({
142
- root: './dist/client',
143
- onFound: (_path, c) => {
144
- c.header('Cache-Control', `public, immutable, max-age=31536000`)
145
- },
146
- })(context, async () => {
147
- didCallNext = true
148
- })
149
-
150
- if (response && !didCallNext) {
151
- return response
152
- }
153
- }
154
-
155
144
  try {
156
145
  const request = context.req.raw
157
146
 
147
+ if (route.page.endsWith('/+not-found') || Reflect.ownKeys(route.routeKeys).length > 0) {
148
+ // Static assets should have the highest priority - which is the behavior of the dev server.
149
+ // But if we handle every matching static asset here, it seems to break some of the static routes.
150
+ // So we only handle it if there's a matching not-found or dynamic route, to prevent One from taking over the static asset.
151
+ // If there's no matching not-found or dynamic route, it's very likely that One won't handle it and will fallback to VxRN serving the static asset so it will also work.
152
+ const staticAssetResponse = await serveStaticAssets({ context })
153
+ if (staticAssetResponse) {
154
+ return await runMiddlewares(
155
+ requestHandlers,
156
+ request,
157
+ route,
158
+ async () => staticAssetResponse
159
+ )
160
+ }
161
+ }
162
+
158
163
  // for js we want to serve our js files directly, as they can match a route on accident
159
164
  // middleware my want to handle this eventually as well but for now this is a fine balance
160
165
  if (extname(request.url) === '.js' || extname(request.url) === '.css') {
@@ -0,0 +1,62 @@
1
+ import Path from 'node:path'
2
+
3
+ export function getPathnameFromFilePath(
4
+ inputPath: string,
5
+ params = {},
6
+ strict = false,
7
+ options: { preserveExtensions?: boolean } = {}
8
+ ) {
9
+ const path = inputPath.replace(/\+(spa|ssg|ssr|api)\.tsx?$/, '')
10
+ const dirname = Path.dirname(path).replace(/\([^\/]+\)/gi, '')
11
+ const file = Path.basename(path)
12
+ const fileName = options.preserveExtensions ? file : file.replace(/\.[a-z]+$/, '')
13
+
14
+ function paramsError(part: string) {
15
+ throw new Error(
16
+ `[one] Params doesn't fit route:
17
+
18
+ - path: ${path}
19
+ - part: ${part}
20
+ - fileName: ${fileName}
21
+ - params:
22
+
23
+ ${JSON.stringify(params, null, 2)}`
24
+ )
25
+ }
26
+
27
+ const nameWithParams = (() => {
28
+ if (fileName === 'index') {
29
+ return '/'
30
+ }
31
+ if (fileName.startsWith('[...')) {
32
+ const part = fileName.replace('[...', '').replace(']', '')
33
+ if (!params[part]) {
34
+ if (strict) {
35
+ throw paramsError(part)
36
+ }
37
+ return `/*`
38
+ }
39
+ return `/${params[part]}`
40
+ }
41
+ return `/${fileName
42
+ .split('/')
43
+ .map((part) => {
44
+ if (part[0] === '[') {
45
+ const found = params[part.slice(1, part.length - 1)]
46
+ if (!found) {
47
+ if (strict) {
48
+ throw paramsError(part)
49
+ }
50
+
51
+ return ':' + part.replace('[', '').replace(']', '')
52
+ }
53
+ return found
54
+ }
55
+ return part
56
+ })
57
+ .join('/')}`
58
+ })()
59
+
60
+ // hono path will convert +not-found etc too
61
+ return `${dirname}${nameWithParams}`.replace(/\/\/+/gi, '/')
62
+ }
@@ -8,9 +8,10 @@ import { createApiServerlessFunction } from './generate/createApiServerlessFunct
8
8
  import { createSsrServerlessFunction } from './generate/createSsrServerlessFunction'
9
9
  import { serverlessVercelNodeJsConfig } from './config/vc-config-base'
10
10
  import { serverlessVercelPackageJson } from './config/vc-package-base'
11
- import { vercelBuildOutputConfig } from './config/vc-build-output-config-base'
11
+ import { vercelBuildOutputConfigBase } from './config/vc-build-output-config-base'
12
12
 
13
13
  import type { One } from '../../vite/types'
14
+ import { getPathFromRoute } from './getPathFromRoute'
14
15
 
15
16
  const { copy, ensureDir, existsSync, writeJSON } = FSExtra
16
17
 
@@ -49,21 +50,8 @@ export const buildVercelOutputDirectory = async ({
49
50
  postBuildLogs.push(
50
51
  `[one.build][vercel] generating serverless function for apiRoute ${route.page}`
51
52
  )
52
- await createApiServerlessFunction(
53
- route.page,
54
- compiledRoute.code,
55
- oneOptionsRoot,
56
- postBuildLogs
57
- )
58
53
 
59
- if (route.page !== route.urlCleanPath ) {
60
- await createApiServerlessFunction(
61
- route.urlCleanPath,
62
- compiledRoute.code,
63
- oneOptionsRoot,
64
- postBuildLogs
65
- )
66
- }
54
+ await createApiServerlessFunction(route, compiledRoute.code, oneOptionsRoot, postBuildLogs)
67
55
  } else {
68
56
  console.warn('\n 🔨[one.build][vercel] apiRoute missing code compilation for', route.file)
69
57
  }
@@ -83,7 +71,7 @@ export const buildVercelOutputDirectory = async ({
83
71
  `[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`
84
72
  )
85
73
  await createSsrServerlessFunction(
86
- route.page,
74
+ route,
87
75
  buildInfoForWriting,
88
76
  oneOptionsRoot,
89
77
  postBuildLogs
@@ -101,7 +89,7 @@ export const buildVercelOutputDirectory = async ({
101
89
  const distMiddlewareDir = resolve(join(oneOptionsRoot, 'dist', 'middlewares'))
102
90
  if (existsSync(distMiddlewareDir)) {
103
91
  const vercelMiddlewareDir = resolve(
104
- join(oneOptionsRoot, '.vercel/output/functions/_middleware')
92
+ join(oneOptionsRoot, '.vercel/output/functions/_middleware.func')
105
93
  )
106
94
  await ensureDir(vercelMiddlewareDir)
107
95
  postBuildLogs.push(
@@ -113,13 +101,35 @@ export const buildVercelOutputDirectory = async ({
113
101
  `[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`
114
102
  )
115
103
  await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson)
104
+ const wrappedMiddlewareEntryPointFilename = '_wrapped_middleware.js'
105
+ const wrappedMiddlewareEntryPointPath = resolve(
106
+ join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename)
107
+ )
108
+ await FSExtra.writeFile(
109
+ wrappedMiddlewareEntryPointPath,
110
+ `
111
+ import middlewareFunction from './_middleware.js'
112
+
113
+ const next = (e) => {
114
+ const t = new Headers(null == e ? void 0 : e.headers)
115
+ t.set('x-middleware-next', '1')
116
+ return new Response(null, { ...e, headers: t })
117
+ }
118
+
119
+ const wrappedMiddlewareFunction = (request, event) => {
120
+ return middlewareFunction({ request, event, next })
121
+ }
122
+
123
+ export { wrappedMiddlewareFunction as default }
124
+ `
125
+ )
116
126
  const middlewareVercelConfigFilePath = resolve(join(vercelMiddlewareDir, '.vc-config.json'))
117
127
  postBuildLogs.push(
118
128
  `[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`
119
129
  )
120
130
  await writeJSON(middlewareVercelConfigFilePath, {
121
- ...serverlessVercelNodeJsConfig,
122
- handler: '_middleware.js',
131
+ runtime: 'edge', // Seems that middlewares only work with edge runtime
132
+ entrypoint: wrappedMiddlewareEntryPointFilename,
123
133
  })
124
134
  }
125
135
 
@@ -134,6 +144,31 @@ export const buildVercelOutputDirectory = async ({
134
144
  // Documentation - Vercel Build Output v3 config.json
135
145
  // https://vercel.com/docs/build-output-api/v3/configuration#config.json-supported-properties
136
146
  const vercelConfigFilePath = resolve(join(oneOptionsRoot, '.vercel/output', 'config.json'))
137
- await writeJSON(vercelConfigFilePath, vercelBuildOutputConfig)
147
+ await writeJSON(vercelConfigFilePath, {
148
+ ...vercelBuildOutputConfigBase,
149
+ routes: [
150
+ ...vercelBuildOutputConfigBase.routes,
151
+ ...(existsSync(distMiddlewareDir)
152
+ ? [
153
+ {
154
+ src: '/(.*)',
155
+ middlewarePath: '_middleware',
156
+ continue: true,
157
+ },
158
+ ]
159
+ : []),
160
+ {
161
+ handle: 'rewrite',
162
+ },
163
+ ...buildInfoForWriting.manifest.allRoutes
164
+ .filter((r) => r.routeKeys && Object.keys(r.routeKeys).length > 0)
165
+ .map((r) => ({
166
+ src: r.namedRegex,
167
+ dest: `${getPathFromRoute(r)}?${Object.entries(r.routeKeys)
168
+ .map(([k, v]) => `${k}=$${v}`)
169
+ .join('&')}`,
170
+ })),
171
+ ],
172
+ })
138
173
  postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`)
139
174
  }
@@ -1,12 +1,13 @@
1
1
  // Documentation - Vercel Build Output v3 Config
2
2
  // https://vercel.com/docs/build-output-api/v3/configuration#config.json-supported-properties
3
- export const vercelBuildOutputConfig = {
3
+ export const vercelBuildOutputConfigBase = {
4
4
  version: 3,
5
5
  // https://vercel.com/docs/build-output-api/v3/configuration#routes
6
6
  routes: [
7
- {
8
- src: '/(.*)',
9
- status: 200,
10
- },
7
+ // Not sure if we really need this, but having this seems to break the 'rewrite's we will add to handle dynamic routes.
8
+ // {
9
+ // src: '/(.*)',
10
+ // status: 200,
11
+ // },
11
12
  ],
12
13
  }