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.
- package/dist/cjs/cli/build.cjs +5 -41
- package/dist/cjs/cli/build.js +4 -44
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +4 -42
- package/dist/cjs/cli/build.native.js.map +2 -2
- package/dist/cjs/createHandleRequest.cjs +2 -1
- package/dist/cjs/createHandleRequest.js +2 -1
- package/dist/cjs/createHandleRequest.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js +4 -2
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/server/createRoutesManifest.js.map +1 -1
- package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
- package/dist/cjs/server/getServerManifest.cjs +15 -7
- package/dist/cjs/server/getServerManifest.js +17 -8
- package/dist/cjs/server/getServerManifest.js.map +1 -1
- package/dist/cjs/server/getServerManifest.native.js +8 -5
- package/dist/cjs/server/getServerManifest.native.js.map +2 -2
- package/dist/cjs/server/oneServe.cjs +8 -13
- package/dist/cjs/server/oneServe.js +11 -14
- package/dist/cjs/server/oneServe.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js +20 -23
- package/dist/cjs/server/oneServe.native.js.map +2 -2
- package/dist/cjs/utils/getPathnameFromFilePath.cjs +76 -0
- package/dist/cjs/utils/getPathnameFromFilePath.js +70 -0
- package/dist/cjs/utils/getPathnameFromFilePath.js.map +6 -0
- package/dist/cjs/utils/getPathnameFromFilePath.native.js +73 -0
- package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +6 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +38 -8
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js +48 -17
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +1 -1
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +50 -7
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +2 -2
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.cjs +9 -6
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js +7 -6
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js +4 -9
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +2 -2
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.cjs +54 -9
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js +83 -15
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js.map +2 -2
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js +73 -9
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +2 -2
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +9 -6
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js +8 -6
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +8 -6
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +2 -2
- package/dist/cjs/vercel/build/getPathFromRoute.cjs +31 -0
- package/dist/cjs/vercel/build/getPathFromRoute.js +24 -0
- package/dist/cjs/vercel/build/getPathFromRoute.js.map +6 -0
- package/dist/cjs/vercel/build/getPathFromRoute.native.js +31 -0
- package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +6 -0
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.cjs +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +3 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +2 -2
- package/dist/esm/cli/build.js +4 -43
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +4 -40
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +4 -43
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/createHandleRequest.js +2 -1
- package/dist/esm/createHandleRequest.js.map +1 -1
- package/dist/esm/createHandleRequest.mjs +1 -1
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +1 -1
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/server/createRoutesManifest.js.map +1 -1
- package/dist/esm/server/createRoutesManifest.mjs.map +1 -1
- package/dist/esm/server/createRoutesManifest.native.js.map +1 -1
- package/dist/esm/server/getServerManifest.js +17 -8
- package/dist/esm/server/getServerManifest.js.map +1 -1
- package/dist/esm/server/getServerManifest.mjs +15 -7
- package/dist/esm/server/getServerManifest.mjs.map +1 -1
- package/dist/esm/server/getServerManifest.native.js +8 -4
- package/dist/esm/server/getServerManifest.native.js.map +1 -1
- package/dist/esm/server/oneServe.js +17 -15
- package/dist/esm/server/oneServe.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +9 -14
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +21 -24
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/utils/getPathnameFromFilePath.js +46 -0
- package/dist/esm/utils/getPathnameFromFilePath.js.map +6 -0
- package/dist/esm/utils/getPathnameFromFilePath.mjs +42 -0
- package/dist/esm/utils/getPathnameFromFilePath.mjs.map +1 -0
- package/dist/esm/utils/getPathnameFromFilePath.native.js +45 -0
- package/dist/esm/utils/getPathnameFromFilePath.native.js.map +1 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js +49 -18
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +38 -8
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +45 -8
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js +7 -6
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs +9 -6
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js +3 -6
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.js +88 -13
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.js.map +1 -1
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs +53 -8
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs.map +1 -1
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js +52 -8
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js +8 -5
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +8 -5
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +8 -5
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
- package/dist/esm/vercel/build/getPathFromRoute.js +8 -0
- package/dist/esm/vercel/build/getPathFromRoute.js.map +6 -0
- package/dist/esm/vercel/build/getPathFromRoute.mjs +8 -0
- package/dist/esm/vercel/build/getPathFromRoute.mjs.map +1 -0
- package/dist/esm/vercel/build/getPathFromRoute.native.js +8 -0
- package/dist/esm/vercel/build/getPathFromRoute.native.js.map +1 -0
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js +2 -2
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs +2 -2
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +4 -2
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
- package/package.json +9 -8
- package/src/cli/build.ts +3 -57
- package/src/createHandleRequest.ts +1 -1
- package/src/server/createRoutesManifest.ts +1 -0
- package/src/server/getServerManifest.ts +12 -3
- package/src/server/oneServe.ts +23 -18
- package/src/utils/getPathnameFromFilePath.ts +62 -0
- package/src/vercel/build/buildVercelOutputDirectory.ts +55 -20
- package/src/vercel/build/config/vc-build-output-config-base.ts +6 -5
- package/src/vercel/build/generate/createApiServerlessFunction.ts +138 -12
- package/src/vercel/build/generate/createSsrServerlessFunction.ts +9 -6
- package/src/vercel/build/getPathFromRoute.ts +8 -0
- package/src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx +9 -2
- package/src/vite/types.ts +1 -0
- package/types/cli/build.d.ts.map +1 -1
- package/types/createHandleRequest.d.ts +1 -0
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/server/createRoutesManifest.d.ts +1 -0
- package/types/server/createRoutesManifest.d.ts.map +1 -1
- package/types/server/getServerManifest.d.ts +1 -0
- package/types/server/getServerManifest.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/utils/getPathnameFromFilePath.d.ts +4 -0
- package/types/utils/getPathnameFromFilePath.d.ts.map +1 -0
- package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
- package/types/vercel/build/config/vc-build-output-config-base.d.ts +2 -5
- package/types/vercel/build/config/vc-build-output-config-base.d.ts.map +1 -1
- package/types/vercel/build/generate/createApiServerlessFunction.d.ts +2 -1
- package/types/vercel/build/generate/createApiServerlessFunction.d.ts.map +1 -1
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts +2 -2
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
- package/types/vercel/build/getPathFromRoute.d.ts +3 -0
- package/types/vercel/build/getPathFromRoute.d.ts.map +1 -0
- package/types/vite/plugins/generateFileSystemRouteTypesPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +1 -0
- 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;
|
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;
|
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 =
|
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;
|
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.
|
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.
|
99
|
-
"@vxrn/resolve": "1.1.
|
100
|
-
"@vxrn/tslib-lite": "1.1.
|
101
|
-
"@vxrn/universal-color-scheme": "1.1.
|
102
|
-
"@vxrn/use-isomorphic-layout-effect": "1.1.
|
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.
|
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.
|
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
|
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,
|
@@ -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 =
|
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
|
-
|
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
|
-
|
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
|
|
package/src/server/oneServe.ts
CHANGED
@@ -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 {
|
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 {
|
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
|
-
|
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
|
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
|
-
|
122
|
-
|
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,
|
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
|
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
|
-
|
9
|
-
|
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
|
}
|