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,25 +1,36 @@
1
- import { join, resolve } from "node:path";
1
+ import { dirname, join, resolve } from "node:path";
2
+ import FSExtra from "fs-extra";
3
+ import { resolvePath } from "@vxrn/resolve";
4
+ import parser from "@babel/parser";
5
+ import traverse from "@babel/traverse";
6
+ import t from "@babel/types";
7
+ import generator from "@babel/generator";
2
8
  import fs from "fs-extra";
3
9
  import { serverlessVercelPackageJson } from "../config/vc-package-base";
4
10
  import { serverlessVercelNodeJsConfig } from "../config/vc-config-base";
5
- async function createApiServerlessFunction(pageName, code, oneOptionsRoot, postBuildLogs) {
11
+ import { getPathFromRoute } from "../getPathFromRoute";
12
+ async function createApiServerlessFunction(route, code, oneOptionsRoot, postBuildLogs) {
6
13
  try {
7
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
8
- const funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${pageName}.func`);
9
- await fs.ensureDir(funcFolder), code.includes("react") && (postBuildLogs.push(
10
- `[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${pageName}`
11
- ), await fs.copy(
12
- resolve(join(oneOptionsRoot, "..", "..", "node_modules", "react")),
13
- resolve(join(funcFolder, "node_modules", "react"))
14
- ));
14
+ const path = getPathFromRoute(route);
15
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${path}`);
16
+ const funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${path}.func`);
17
+ if (await fs.ensureDir(funcFolder), code.includes("react")) {
18
+ postBuildLogs.push(
19
+ `[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${path}`
20
+ );
21
+ const reactPath = dirname(resolvePath("react/package.json", oneOptionsRoot));
22
+ await fs.copy(resolve(reactPath), resolve(join(funcFolder, "node_modules", "react")));
23
+ }
15
24
  const distAssetsFolder = resolve(join(funcFolder, "assets"));
16
25
  postBuildLogs.push(
17
26
  `[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`
18
- ), await fs.copy(resolve(join(oneOptionsRoot, "dist", "api", "assets")), distAssetsFolder), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
27
+ );
28
+ const sourceAssetsFolder = resolve(join(oneOptionsRoot, "dist", "api", "assets"));
29
+ await FSExtra.pathExists(sourceAssetsFolder) && await fs.copy(sourceAssetsFolder, distAssetsFolder), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
19
30
  const entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
20
31
  postBuildLogs.push(
21
32
  `[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`
22
- ), await fs.writeFile(entrypointFilePath, code);
33
+ ), await fs.writeFile(entrypointFilePath, wrapHandlerFunctions(code));
23
34
  const packageJsonFilePath = resolve(join(funcFolder, "package.json"));
24
35
  return postBuildLogs.push(
25
36
  `[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`
@@ -31,11 +42,75 @@ async function createApiServerlessFunction(pageName, code, oneOptionsRoot, postB
31
42
  });
32
43
  } catch (e) {
33
44
  console.error(
34
- `[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`,
45
+ `[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`,
35
46
  e
36
47
  );
37
48
  }
38
49
  }
50
+ function wrapHandlerFunctions(code) {
51
+ const ast = parser.parse(code, {
52
+ sourceType: "module"
53
+ });
54
+ return traverse.default(ast, {
55
+ FunctionDeclaration(path) {
56
+ const { node } = path, functionNamesToHandle = [
57
+ "GET",
58
+ "POST",
59
+ "PUT",
60
+ "PATCH",
61
+ "DELETE",
62
+ "HEAD",
63
+ "OPTIONS"
64
+ // TODO: more possibilities?
65
+ ];
66
+ if (!node.id || !functionNamesToHandle.includes(node.id.name) || node.extra && node.extra.isWrapper || node.extra && node.extra.isWrapped) return;
67
+ const originalName = `orig_${node.id.name}`, originalFunction = t.functionDeclaration(
68
+ t.identifier(originalName),
69
+ node.params,
70
+ node.body,
71
+ node.generator,
72
+ node.async
73
+ ), requestIdentifier = t.identifier("request"), wrapperParams = [requestIdentifier], urlIdentifier = t.identifier("url"), paramsIdentifier = t.identifier("params"), urlDecl = t.variableDeclaration("const", [
74
+ t.variableDeclarator(
75
+ urlIdentifier,
76
+ t.newExpression(t.identifier("URL"), [
77
+ t.memberExpression(requestIdentifier, t.identifier("url"))
78
+ ])
79
+ )
80
+ ]), paramsDecl = t.variableDeclaration("const", [
81
+ t.variableDeclarator(
82
+ paramsIdentifier,
83
+ t.callExpression(
84
+ t.memberExpression(t.identifier("Object"), t.identifier("fromEntries")),
85
+ [
86
+ t.callExpression(
87
+ t.memberExpression(
88
+ t.memberExpression(
89
+ urlIdentifier,
90
+ t.identifier("searchParams")
91
+ ),
92
+ t.identifier("entries")
93
+ ),
94
+ []
95
+ )
96
+ ]
97
+ )
98
+ )
99
+ ]), callOrigFnStatement = t.callExpression(t.identifier(originalName), [
100
+ requestIdentifier,
101
+ t.objectExpression([t.objectProperty(t.identifier("params"), paramsIdentifier)])
102
+ ]), wrapperFunction = t.functionDeclaration(
103
+ t.identifier(node.id.name + ""),
104
+ wrapperParams,
105
+ t.blockStatement([urlDecl, paramsDecl, t.returnStatement(callOrigFnStatement)])
106
+ // No need to care if the wrapper function should be async,
107
+ // since we didn't use any await in the wrapper function, and we'll
108
+ // just return what the original function returns.
109
+ );
110
+ node.extra = node.extra || {}, node.extra.isWrapped = !0, wrapperFunction.extra = wrapperFunction.extra || {}, wrapperFunction.extra.isWrapper = !0, path.parentPath.isExportNamedDeclaration() ? path.replaceWithMultiple([originalFunction, t.exportNamedDeclaration(wrapperFunction, [])]) : path.replaceWithMultiple([originalFunction, wrapperFunction]);
111
+ }
112
+ }), generator.default(ast, {}).code;
113
+ }
39
114
  export {
40
115
  createApiServerlessFunction
41
116
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],
4
- "mappings": "AAAA,SAAS,MAAM,eAAe;AAE9B,OAAO,QAAQ;AAEf,SAAS,mCAAmC;AAC5C,SAAS,oCAAoC;AAI7C,eAAsB,4BACpB,UACA,MACA,gBACA,eACA;AACA,MAAI;AACF,kBAAc,KAAK,6DAA6D,QAAQ,EAAE;AAE1F,UAAM,aAAa,KAAK,gBAAgB,4BAA4B,QAAQ,OAAO;AACnF,UAAM,GAAG,UAAU,UAAU,GAEzB,KAAK,SAAS,OAAO,MACvB,cAAc;AAAA,MACZ,wFAAwF,QAAQ;AAAA,IAClG,GACA,MAAM,GAAG;AAAA,MACP,QAAQ,KAAK,gBAAgB,MAAM,MAAM,gBAAgB,OAAO,CAAC;AAAA,MACjE,QAAQ,KAAK,YAAY,gBAAgB,OAAO,CAAC;AAAA,IACnD;AAGF,UAAM,mBAAmB,QAAQ,KAAK,YAAY,QAAQ,CAAC;AAC3D,kBAAc;AAAA,MACZ,yEAAyE,gBAAgB;AAAA,IAC3F,GACA,MAAM,GAAG,KAAK,QAAQ,KAAK,gBAAgB,QAAQ,OAAO,QAAQ,CAAC,GAAG,gBAAgB,GAEtF,MAAM,GAAG,UAAU,QAAQ,KAAK,YAAY,YAAY,CAAC,CAAC;AAC1D,UAAM,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;AAC7E,kBAAc;AAAA,MACZ,yEAAyE,kBAAkB;AAAA,IAC7F,GACA,MAAM,GAAG,UAAU,oBAAoB,IAAI;AAE3C,UAAM,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;AACpE,yBAAc;AAAA,MACZ,2EAA2E,mBAAmB;AAAA,IAChG,GACA,MAAM,GAAG,UAAU,qBAAqB,2BAA2B,GAEnE,cAAc;AAAA,MACZ,8EAA8E,KAAK,YAAY,iBAAiB,CAAC;AAAA,IACnH,GAGO,GAAG,UAAU,KAAK,YAAY,iBAAiB,GAAG;AAAA,MACvD,GAAG;AAAA,MACH,SAAS;AAAA,IACX,CAAC;AAAA,EACH,SAAS,GAAG;AACV,YAAQ;AAAA,MACN,+EAA+E,QAAQ;AAAA,MACvF;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,24 +1,69 @@
1
- import { join, resolve } from "node:path";
1
+ import { dirname, join, resolve } from "node:path";
2
+ import FSExtra from "fs-extra";
3
+ import { resolvePath } from "@vxrn/resolve";
4
+ import parser from "@babel/parser";
5
+ import traverse from "@babel/traverse";
6
+ import t from "@babel/types";
7
+ import generator from "@babel/generator";
2
8
  import fs from "fs-extra";
3
9
  import { serverlessVercelPackageJson } from "../config/vc-package-base.mjs";
4
10
  import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.mjs";
5
- async function createApiServerlessFunction(pageName, code, oneOptionsRoot, postBuildLogs) {
11
+ import { getPathFromRoute } from "../getPathFromRoute.mjs";
12
+ async function createApiServerlessFunction(route, code, oneOptionsRoot, postBuildLogs) {
6
13
  try {
7
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
8
- const funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${pageName}.func`);
9
- await fs.ensureDir(funcFolder), code.includes("react") && (postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${pageName}`), await fs.copy(resolve(join(oneOptionsRoot, "..", "..", "node_modules", "react")), resolve(join(funcFolder, "node_modules", "react"))));
14
+ const path = getPathFromRoute(route);
15
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${path}`);
16
+ const funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${path}.func`);
17
+ if (await fs.ensureDir(funcFolder), code.includes("react")) {
18
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${path}`);
19
+ const reactPath = dirname(resolvePath("react/package.json", oneOptionsRoot));
20
+ await fs.copy(resolve(reactPath), resolve(join(funcFolder, "node_modules", "react")));
21
+ }
10
22
  const distAssetsFolder = resolve(join(funcFolder, "assets"));
11
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`), await fs.copy(resolve(join(oneOptionsRoot, "dist", "api", "assets")), distAssetsFolder), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
23
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`);
24
+ const sourceAssetsFolder = resolve(join(oneOptionsRoot, "dist", "api", "assets"));
25
+ (await FSExtra.pathExists(sourceAssetsFolder)) && (await fs.copy(sourceAssetsFolder, distAssetsFolder)), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
12
26
  const entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
13
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, code);
27
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, wrapHandlerFunctions(code));
14
28
  const packageJsonFilePath = resolve(join(funcFolder, "package.json"));
15
29
  return postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson), postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${join(funcFolder, ".vc-config.json")}`), fs.writeJson(join(funcFolder, ".vc-config.json"), {
16
30
  ...serverlessVercelNodeJsConfig,
17
31
  handler: "entrypoint/index.js"
18
32
  });
19
33
  } catch (e) {
20
- console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`, e);
34
+ console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
21
35
  }
22
36
  }
37
+ function wrapHandlerFunctions(code) {
38
+ const ast = parser.parse(code, {
39
+ sourceType: "module"
40
+ });
41
+ return traverse.default(ast, {
42
+ FunctionDeclaration(path) {
43
+ const {
44
+ node
45
+ } = path,
46
+ functionNamesToHandle = ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"
47
+ // TODO: more possibilities?
48
+ ];
49
+ if (!node.id || !functionNamesToHandle.includes(node.id.name) || node.extra && node.extra.isWrapper || node.extra && node.extra.isWrapped) return;
50
+ const originalName = `orig_${node.id.name}`,
51
+ originalFunction = t.functionDeclaration(t.identifier(originalName), node.params, node.body, node.generator, node.async),
52
+ requestIdentifier = t.identifier("request"),
53
+ wrapperParams = [requestIdentifier],
54
+ urlIdentifier = t.identifier("url"),
55
+ paramsIdentifier = t.identifier("params"),
56
+ urlDecl = t.variableDeclaration("const", [t.variableDeclarator(urlIdentifier, t.newExpression(t.identifier("URL"), [t.memberExpression(requestIdentifier, t.identifier("url"))]))]),
57
+ paramsDecl = t.variableDeclaration("const", [t.variableDeclarator(paramsIdentifier, t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("fromEntries")), [t.callExpression(t.memberExpression(t.memberExpression(urlIdentifier, t.identifier("searchParams")), t.identifier("entries")), [])]))]),
58
+ callOrigFnStatement = t.callExpression(t.identifier(originalName), [requestIdentifier, t.objectExpression([t.objectProperty(t.identifier("params"), paramsIdentifier)])]),
59
+ wrapperFunction = t.functionDeclaration(t.identifier(node.id.name + ""), wrapperParams, t.blockStatement([urlDecl, paramsDecl, t.returnStatement(callOrigFnStatement)])
60
+ // No need to care if the wrapper function should be async,
61
+ // since we didn't use any await in the wrapper function, and we'll
62
+ // just return what the original function returns.
63
+ );
64
+ node.extra = node.extra || {}, node.extra.isWrapped = !0, wrapperFunction.extra = wrapperFunction.extra || {}, wrapperFunction.extra.isWrapper = !0, path.parentPath.isExportNamedDeclaration() ? path.replaceWithMultiple([originalFunction, t.exportNamedDeclaration(wrapperFunction, [])]) : path.replaceWithMultiple([originalFunction, wrapperFunction]);
65
+ }
66
+ }), generator.default(ast, {}).code;
67
+ }
23
68
  export { createApiServerlessFunction };
24
69
  //# sourceMappingURL=createApiServerlessFunction.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["join","resolve","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","createApiServerlessFunction","pageName","code","oneOptionsRoot","postBuildLogs","push","funcFolder","ensureDir","includes","copy","distAssetsFolder","entrypointFilePath","writeFile","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,EAAMC,OAAA,QAAe;AAE9B,OAAOC,EAAA,MAAQ;AAEf,SAASC,2BAAA,QAAmC;AAC5C,SAASC,4BAAA,QAAoC;AAI7C,eAAsBC,4BACpBC,QAAA,EACAC,IAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,MAAMK,UAAA,GAAaX,IAAA,CAAKQ,cAAA,EAAgB,4BAA4BF,QAAQ,OAAO;IACnF,MAAMJ,EAAA,CAAGU,SAAA,CAAUD,UAAU,GAEzBJ,IAAA,CAAKM,QAAA,CAAS,OAAO,MACvBJ,aAAA,CAAcC,IAAA,CACZ,wFAAwFJ,QAAQ,EAClG,GACA,MAAMJ,EAAA,CAAGY,IAAA,CACPb,OAAA,CAAQD,IAAA,CAAKQ,cAAA,EAAgB,MAAM,MAAM,gBAAgB,OAAO,CAAC,GACjEP,OAAA,CAAQD,IAAA,CAAKW,UAAA,EAAY,gBAAgB,OAAO,CAAC,CACnD;IAGF,MAAMI,gBAAA,GAAmBd,OAAA,CAAQD,IAAA,CAAKW,UAAA,EAAY,QAAQ,CAAC;IAC3DF,aAAA,CAAcC,IAAA,CACZ,yEAAyEK,gBAAgB,EAC3F,GACA,MAAMb,EAAA,CAAGY,IAAA,CAAKb,OAAA,CAAQD,IAAA,CAAKQ,cAAA,EAAgB,QAAQ,OAAO,QAAQ,CAAC,GAAGO,gBAAgB,GAEtF,MAAMb,EAAA,CAAGU,SAAA,CAAUX,OAAA,CAAQD,IAAA,CAAKW,UAAA,EAAY,YAAY,CAAC,CAAC;IAC1D,MAAMK,kBAAA,GAAqBf,OAAA,CAAQD,IAAA,CAAKW,UAAA,EAAY,cAAc,UAAU,CAAC;IAC7EF,aAAA,CAAcC,IAAA,CACZ,yEAAyEM,kBAAkB,EAC7F,GACA,MAAMd,EAAA,CAAGe,SAAA,CAAUD,kBAAA,EAAoBT,IAAI;IAE3C,MAAMW,mBAAA,GAAsBjB,OAAA,CAAQD,IAAA,CAAKW,UAAA,EAAY,cAAc,CAAC;IACpE,OAAAF,aAAA,CAAcC,IAAA,CACZ,2EAA2EQ,mBAAmB,EAChG,GACA,MAAMhB,EAAA,CAAGiB,SAAA,CAAUD,mBAAA,EAAqBf,2BAA2B,GAEnEM,aAAA,CAAcC,IAAA,CACZ,8EAA8EV,IAAA,CAAKW,UAAA,EAAY,iBAAiB,CAAC,EACnH,GAGOT,EAAA,CAAGkB,SAAA,CAAUpB,IAAA,CAAKW,UAAA,EAAY,iBAAiB,GAAG;MACvD,GAAGP,4BAAA;MACHiB,OAAA,EAAS;IACX,CAAC;EACH,SAASC,CAAA,EAAG;IACVC,OAAA,CAAQC,KAAA,CACN,+EAA+ElB,QAAQ,IACvFgB,CACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["dirname","join","resolve","FSExtra","resolvePath","parser","traverse","t","generator","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","getPathFromRoute","createApiServerlessFunction","route","code","oneOptionsRoot","postBuildLogs","path","push","funcFolder","ensureDir","includes","reactPath","copy","distAssetsFolder","sourceAssetsFolder","pathExists","entrypointFilePath","writeFile","wrapHandlerFunctions","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error","file","ast","parse","sourceType","default","FunctionDeclaration","node","functionNamesToHandle","id","name","extra","isWrapper","isWrapped","originalName","originalFunction","functionDeclaration","identifier","params","body","async","requestIdentifier","wrapperParams","urlIdentifier","paramsIdentifier","urlDecl","variableDeclaration","variableDeclarator","newExpression","memberExpression","paramsDecl","callExpression","callOrigFnStatement","objectExpression","objectProperty","wrapperFunction","blockStatement","returnStatement","parentPath","isExportNamedDeclaration","replaceWithMultiple","exportNamedDeclaration"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,24 +1,68 @@
1
- import { join, resolve } from "node:path";
1
+ import { dirname, join, resolve } from "node:path";
2
+ import FSExtra from "fs-extra";
3
+ import { resolvePath } from "@vxrn/resolve";
4
+ import parser from "@babel/parser";
5
+ import traverse from "@babel/traverse";
6
+ import t from "@babel/types";
7
+ import generator from "@babel/generator";
2
8
  import fs from "fs-extra";
3
9
  import { serverlessVercelPackageJson } from "../config/vc-package-base.native.js";
4
10
  import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.native.js";
5
- async function createApiServerlessFunction(pageName, code, oneOptionsRoot, postBuildLogs) {
11
+ import { getPathFromRoute } from "../getPathFromRoute.native.js";
12
+ async function createApiServerlessFunction(route, code, oneOptionsRoot, postBuildLogs) {
6
13
  try {
7
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
8
- var funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${pageName}.func`);
9
- await fs.ensureDir(funcFolder), code.includes("react") && (postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${pageName}`), await fs.copy(resolve(join(oneOptionsRoot, "..", "..", "node_modules", "react")), resolve(join(funcFolder, "node_modules", "react"))));
14
+ var path = getPathFromRoute(route);
15
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${path}`);
16
+ var funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${path}.func`);
17
+ if (await fs.ensureDir(funcFolder), code.includes("react")) {
18
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${path}`);
19
+ var reactPath = dirname(resolvePath("react/package.json", oneOptionsRoot));
20
+ await fs.copy(resolve(reactPath), resolve(join(funcFolder, "node_modules", "react")));
21
+ }
10
22
  var distAssetsFolder = resolve(join(funcFolder, "assets"));
11
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`), await fs.copy(resolve(join(oneOptionsRoot, "dist", "api", "assets")), distAssetsFolder), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
23
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`);
24
+ var sourceAssetsFolder = resolve(join(oneOptionsRoot, "dist", "api", "assets"));
25
+ (await FSExtra.pathExists(sourceAssetsFolder)) && (await fs.copy(sourceAssetsFolder, distAssetsFolder)), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
12
26
  var entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
13
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, code);
27
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, wrapHandlerFunctions(code));
14
28
  var packageJsonFilePath = resolve(join(funcFolder, "package.json"));
15
29
  return postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson), postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${join(funcFolder, ".vc-config.json")}`), fs.writeJson(join(funcFolder, ".vc-config.json"), {
16
30
  ...serverlessVercelNodeJsConfig,
17
31
  handler: "entrypoint/index.js"
18
32
  });
19
33
  } catch (e) {
20
- console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`, e);
34
+ console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
21
35
  }
22
36
  }
37
+ function wrapHandlerFunctions(code) {
38
+ var ast = parser.parse(code, {
39
+ sourceType: "module"
40
+ });
41
+ traverse.default(ast, {
42
+ FunctionDeclaration(path) {
43
+ var {
44
+ node
45
+ } = path,
46
+ functionNamesToHandle = ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"];
47
+ if (!(!node.id || !functionNamesToHandle.includes(node.id.name)) && !(node.extra && node.extra.isWrapper) && !(node.extra && node.extra.isWrapped)) {
48
+ var originalName = `orig_${node.id.name}`,
49
+ originalFunction = t.functionDeclaration(t.identifier(originalName), node.params, node.body, node.generator, node.async),
50
+ requestIdentifier = t.identifier("request"),
51
+ wrapperParams = [requestIdentifier],
52
+ urlIdentifier = t.identifier("url"),
53
+ paramsIdentifier = t.identifier("params"),
54
+ urlDecl = t.variableDeclaration("const", [t.variableDeclarator(urlIdentifier, t.newExpression(t.identifier("URL"), /* Node.js global */
55
+ [t.memberExpression(requestIdentifier, t.identifier("url"))]))]),
56
+ paramsDecl = t.variableDeclaration("const", [t.variableDeclarator(paramsIdentifier, t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("fromEntries")), [t.callExpression(t.memberExpression(t.memberExpression(urlIdentifier, t.identifier("searchParams")), /* url.searchParams */
57
+ t.identifier("entries")), [])]))]),
58
+ callOrigFnStatement = t.callExpression(t.identifier(originalName), [requestIdentifier, t.objectExpression([t.objectProperty(t.identifier("params"), paramsIdentifier)])]),
59
+ wrapperFunction = t.functionDeclaration(t.identifier(node.id.name + ""), wrapperParams, t.blockStatement([urlDecl, paramsDecl, t.returnStatement(callOrigFnStatement)]));
60
+ node.extra = node.extra || {}, node.extra.isWrapped = !0, wrapperFunction.extra = wrapperFunction.extra || {}, wrapperFunction.extra.isWrapper = !0, path.parentPath.isExportNamedDeclaration() ? path.replaceWithMultiple([originalFunction, t.exportNamedDeclaration(wrapperFunction, [])]) : path.replaceWithMultiple([originalFunction, wrapperFunction]);
61
+ }
62
+ }
63
+ });
64
+ var output = generator.default(ast, {}).code;
65
+ return output;
66
+ }
23
67
  export { createApiServerlessFunction };
24
68
  //# sourceMappingURL=createApiServerlessFunction.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["join","resolve","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","createApiServerlessFunction","pageName","code","oneOptionsRoot","postBuildLogs","push","funcFolder","ensureDir","includes","copy","distAssetsFolder","entrypointFilePath","writeFile","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,EAAMC,OAAA,QAAe;AAE9B,OAAOC,EAAA,MAAQ;AAEf,SAASC,2BAAA,QAAmC;AAC5C,SAASC,4BAAA,QAAoC;AAI7C,eAAsBC,4BACpBC,QAAA,EACAC,IAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,IAAAK,UAAM,GAAAX,IAAa,CAAAQ,cAAK,8BAAgBF,QAA4B,OAAQ;IAC5E,MAAMJ,EAAA,CAAGU,SAAA,CAAUD,UAAU,GAEzBJ,IAAA,CAAKM,QAAA,CAAS,OAAO,MACvBJ,aAAA,CAAcC,IAAA,yFAAAJ,QAAA,WAAAJ,EAAA,CAAAY,IAAA,CAAAb,OAAA,CAAAD,IAAA,CAAAQ,cAAA,yCAAAP,OAAA,CAAAD,IAAA,CAAAW,UAAA;IAAA,IACZI,gBAAA,GAAAd,OAAA,CAAAD,IAAA,CAAAW,UAAA;IACFF,aACS,CAAAC,IAAA,0EAAAK,gBAAA,WAAAb,EAAA,CAAAY,IAAA,CAAAb,OAAA,CAAAD,IAAA,CAAAQ,cAAA,6BAAAO,gBAAA,SAAAb,EAAA,CAAAU,SAAA,CAAAX,OAAA,CAAAD,IAAA,CAAAW,UAAA;IAAA,IACPK,kBAAa,GAAAf,OAAgB,CAAAD,IAAM,CAAAW,UAAM,cAAgB,YAAQ;IAAAF,aACzD,CAAAC,IAAK,0EAAoCM,kBAAA,WAAAd,EAAA,CAAAe,SAAA,CAAAD,kBAAA,EAAAT,IAAA;IACnD,IAAAW,mBAAA,GAAAjB,OAAA,CAAAD,IAAA,CAAAW,UAAA;IAGF,OAAMF,aAAA,CAAAC,IAAmB,4EAAkCQ,mBAAA,WAAAhB,EAAA,CAAAiB,SAAA,CAAAD,mBAAA,EAAAf,2BAAA,GAAAM,aAAA,CAAAC,IAAA,+EAAAV,IAAA,CAAAW,UAAA,yBAAAT,EAAA,CAAAkB,SAAA,CAAApB,IAAA,CAAAW,UAAA;MAC3D,GAAAP,4BAAc;MACZiB,OAAA;IACF;EAIA,SAAMC,CAAA;IACNC,OAAA,CAAAC,KAAA,CAAc,+EAAAlB,QAAA,IAAAgB,CAAA;EAAA;AAC+E;AAI7F,SACAjB,2BAAc","ignoreList":[]}
1
+ {"version":3,"names":["dirname","join","resolve","FSExtra","resolvePath","parser","traverse","t","generator","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","getPathFromRoute","createApiServerlessFunction","route","code","oneOptionsRoot","postBuildLogs","path","push","funcFolder","ensureDir","includes","reactPath","copy","distAssetsFolder","sourceAssetsFolder","pathExists","entrypointFilePath","writeFile","wrapHandlerFunctions","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error","file","ast","parse","sourceType","default","FunctionDeclaration","node","functionNamesToHandle","id","name","extra","isWrapper","isWrapped","originalName","originalFunction","functionDeclaration","identifier","params","body","async","requestIdentifier","wrapperParams","urlIdentifier","paramsIdentifier","urlDecl","variableDeclaration","variableDeclarator","newExpression","memberExpression","paramsDecl","callExpression","callOrigFnStatement","objectExpression","objectProperty","wrapperFunction","blockStatement","returnStatement","parentPath","isExportNamedDeclaration","replaceWithMultiple","exportNamedDeclaration","output"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -2,10 +2,12 @@ import fs from "fs-extra";
2
2
  import { join, resolve } from "node:path";
3
3
  import { serverlessVercelNodeJsConfig } from "../config/vc-config-base";
4
4
  import { serverlessVercelPackageJson } from "../config/vc-package-base";
5
- async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot, postBuildLogs) {
5
+ import { getPathFromRoute } from "../getPathFromRoute";
6
+ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {
6
7
  try {
7
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
8
- const buildInfoAsString = JSON.stringify(buildInfo), funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${pageName}.func`));
8
+ const path = getPathFromRoute(route);
9
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);
10
+ const buildInfoAsString = JSON.stringify(buildInfo), funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));
9
11
  await fs.ensureDir(funcFolder);
10
12
  const distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")), distServerTo = resolve(join(funcFolder, "server"));
11
13
  await fs.ensureDir(distServerTo), postBuildLogs.push(
@@ -19,6 +21,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
19
21
  `
20
22
  const buildInfoConfig = await import('../buildInfo.js');
21
23
  const entry = await import('../server/_virtual_one-entry.js');
24
+ const routeFile = ${JSON.stringify(route.file)}
22
25
 
23
26
  const handler = async (req, res) => {
24
27
  // console.debug("req.url", req.url);
@@ -28,7 +31,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
28
31
  params: Object.fromEntries(url.searchParams.entries())
29
32
  }
30
33
  const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
31
- const routeFile = \`.\${url.pathname}\${postfix}\`;
34
+ // const routeFile = \`.\${url.pathname}\${postfix}\`;
32
35
  let route = buildInfoConfig.default.routeToBuildInfo[routeFile];
33
36
 
34
37
  // If we cannot find the route by direct match, try to find it by looking it up in the
@@ -80,7 +83,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
80
83
  });
81
84
  } catch (e) {
82
85
  console.error(
83
- `[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`,
86
+ `[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`,
84
87
  e
85
88
  );
86
89
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],
4
- "mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,MAAM,eAAe;AAC9B,SAAS,oCAAoC;AAC7C,SAAS,mCAAmC;AAK5C,eAAsB,4BACpB,UACA,WACA,gBACA,eACA;AACA,MAAI;AACF,kBAAc,KAAK,6DAA6D,QAAQ,EAAE;AAE1F,UAAM,oBAAoB,KAAK,UAAU,SAAS,GAC5C,aAAa,QAAQ,KAAK,gBAAgB,4BAA4B,QAAQ,OAAO,CAAC;AAC5F,UAAM,GAAG,UAAU,UAAU;AAE7B,UAAM,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC,GAC/D,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;AACvD,UAAM,GAAG,UAAU,YAAY,GAC/B,cAAc;AAAA,MACZ,+EAA+E,cAAc,OAAO,YAAY;AAAA,IAClH,GACA,MAAM,GAAG,KAAK,gBAAgB,YAAY,GAE1C,cAAc,KAAK,wEAAwE,GAC3F,MAAM,GAAG,UAAU,KAAK,YAAY,cAAc,GAAG,kBAAkB,iBAAiB,EAAE,GAE1F,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;AACjD,UAAM,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;AAC7E,kBAAc;AAAA,MACZ,yEAAyE,kBAAkB;AAAA,IAC7F,GACA,MAAM,GAAG;AAAA,MACP;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA8CF;AAEA,UAAM,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;AACpE,kBAAc;AAAA,MACZ,2EAA2E,mBAAmB;AAAA,IAChG,GACA,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;AAInE,UAAM,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;AACpE,yBAAc;AAAA,MACZ,8EAA8E,gBAAgB;AAAA,IAChG,GACO,GAAG,UAAU,kBAAkB;AAAA,MACpC,GAAG;AAAA,MACH,SAAS;AAAA,MACT,aAAa;AAAA,QACX,GAAG,6BAA6B;AAAA,QAChC,yBAAyB;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,EACH,SAAS,GAAG;AACV,YAAQ;AAAA,MACN,+EAA+E,QAAQ;AAAA,MACvF;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,MAAM,eAAe;AAC9B,SAAS,oCAAoC;AAC7C,SAAS,mCAAmC;AAE5C,SAAS,wBAAwB;AAIjC,eAAsB,4BACpB,OACA,WACA,gBACA,eACA;AACA,MAAI;AACF,UAAM,OAAO,iBAAiB,KAAK;AACnC,kBAAc,KAAK,yDAAyD,IAAI,EAAE;AAElF,UAAM,oBAAoB,KAAK,UAAU,SAAS,GAC5C,aAAa,QAAQ,KAAK,gBAAgB,4BAA4B,IAAI,OAAO,CAAC;AACxF,UAAM,GAAG,UAAU,UAAU;AAE7B,UAAM,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC,GAC/D,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;AACvD,UAAM,GAAG,UAAU,YAAY,GAC/B,cAAc;AAAA,MACZ,+EAA+E,cAAc,OAAO,YAAY;AAAA,IAClH,GACA,MAAM,GAAG,KAAK,gBAAgB,YAAY,GAE1C,cAAc,KAAK,wEAAwE,GAC3F,MAAM,GAAG,UAAU,KAAK,YAAY,cAAc,GAAG,kBAAkB,iBAAiB,EAAE,GAE1F,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;AACjD,UAAM,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;AAC7E,kBAAc;AAAA,MACZ,yEAAyE,kBAAkB;AAAA,IAC7F,GACA,MAAM,GAAG;AAAA,MACP;AAAA,MACA;AAAA;AAAA;AAAA,sBAGgB,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA4C5C;AAEA,UAAM,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;AACpE,kBAAc;AAAA,MACZ,2EAA2E,mBAAmB;AAAA,IAChG,GACA,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;AAInE,UAAM,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;AACpE,yBAAc;AAAA,MACZ,8EAA8E,gBAAgB;AAAA,IAChG,GACO,GAAG,UAAU,kBAAkB;AAAA,MACpC,GAAG;AAAA,MACH,SAAS;AAAA,MACT,aAAa;AAAA,QACX,GAAG,6BAA6B;AAAA,QAChC,yBAAyB;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,EACH,SAAS,GAAG;AACV,YAAQ;AAAA,MACN,+EAA+E,MAAM,IAAI;AAAA,MACzF;AAAA,IACF;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -2,11 +2,13 @@ import fs from "fs-extra";
2
2
  import { join, resolve } from "node:path";
3
3
  import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.mjs";
4
4
  import { serverlessVercelPackageJson } from "../config/vc-package-base.mjs";
5
- async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot, postBuildLogs) {
5
+ import { getPathFromRoute } from "../getPathFromRoute.mjs";
6
+ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {
6
7
  try {
7
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
8
+ const path = getPathFromRoute(route);
9
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);
8
10
  const buildInfoAsString = JSON.stringify(buildInfo),
9
- funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${pageName}.func`));
11
+ funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));
10
12
  await fs.ensureDir(funcFolder);
11
13
  const distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")),
12
14
  distServerTo = resolve(join(funcFolder, "server"));
@@ -15,6 +17,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
15
17
  postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, `
16
18
  const buildInfoConfig = await import('../buildInfo.js');
17
19
  const entry = await import('../server/_virtual_one-entry.js');
20
+ const routeFile = ${JSON.stringify(route.file)}
18
21
 
19
22
  const handler = async (req, res) => {
20
23
  // console.debug("req.url", req.url);
@@ -24,7 +27,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
24
27
  params: Object.fromEntries(url.searchParams.entries())
25
28
  }
26
29
  const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
27
- const routeFile = \`.\${url.pathname}\${postfix}\`;
30
+ // const routeFile = \`.\${url.pathname}\${postfix}\`;
28
31
  let route = buildInfoConfig.default.routeToBuildInfo[routeFile];
29
32
 
30
33
  // If we cannot find the route by direct match, try to find it by looking it up in the
@@ -70,7 +73,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
70
73
  }
71
74
  });
72
75
  } catch (e) {
73
- console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`, e);
76
+ console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
74
77
  }
75
78
  }
76
79
  export { createSsrServerlessFunction };
@@ -1 +1 @@
1
- {"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","createSsrServerlessFunction","pageName","buildInfo","oneOptionsRoot","postBuildLogs","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","packageJsonFilePath","writeJSON","vcConfigFilePath","writeJson","handler","environment","ONE_DEFAULT_RENDER_MODE","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,SAASC,IAAA,EAAMC,OAAA,QAAe;AAC9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,2BAAA,QAAmC;AAK5C,eAAsBC,4BACpBC,QAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,MAAMK,iBAAA,GAAoBC,IAAA,CAAKC,SAAA,CAAUN,SAAS;MAC5CO,UAAA,GAAaZ,OAAA,CAAQD,IAAA,CAAKO,cAAA,EAAgB,4BAA4BF,QAAQ,OAAO,CAAC;IAC5F,MAAMN,EAAA,CAAGe,SAAA,CAAUD,UAAU;IAE7B,MAAME,cAAA,GAAiBd,OAAA,CAAQD,IAAA,CAAKO,cAAA,EAAgB,QAAQ,QAAQ,CAAC;MAC/DS,YAAA,GAAef,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,QAAQ,CAAC;IACvD,MAAMd,EAAA,CAAGe,SAAA,CAAUE,YAAY,GAC/BR,aAAA,CAAcC,IAAA,CACZ,+EAA+EM,cAAc,OAAOC,YAAY,EAClH,GACA,MAAMjB,EAAA,CAAGkB,IAAA,CAAKF,cAAA,EAAgBC,YAAY,GAE1CR,aAAA,CAAcC,IAAA,CAAK,wEAAwE,GAC3F,MAAMV,EAAA,CAAGmB,SAAA,CAAUlB,IAAA,CAAKa,UAAA,EAAY,cAAc,GAAG,kBAAkBH,iBAAiB,EAAE,GAE1F,MAAMX,EAAA,CAAGe,SAAA,CAAUd,IAAA,CAAKa,UAAA,EAAY,YAAY,CAAC;IACjD,MAAMM,kBAAA,GAAqBlB,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,cAAc,UAAU,CAAC;IAC7EL,aAAA,CAAcC,IAAA,CACZ,yEAAyEU,kBAAkB,EAC7F,GACA,MAAMpB,EAAA,CAAGmB,SAAA,CACPC,kBAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA8CF;IAEA,MAAMC,mBAAA,GAAsBnB,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,cAAc,CAAC;IACpEL,aAAA,CAAcC,IAAA,CACZ,2EAA2EW,mBAAmB,EAChG,GACA,MAAMrB,EAAA,CAAGsB,SAAA,CAAUD,mBAAA,EAAqBjB,2BAA2B;IAInE,MAAMmB,gBAAA,GAAmBrB,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,iBAAiB,CAAC;IACpE,OAAAL,aAAA,CAAcC,IAAA,CACZ,8EAA8Ea,gBAAgB,EAChG,GACOvB,EAAA,CAAGwB,SAAA,CAAUD,gBAAA,EAAkB;MACpC,GAAGpB,4BAAA;MACHsB,OAAA,EAAS;MACTC,WAAA,EAAa;QACX,GAAGvB,4BAAA,CAA6BuB,WAAA;QAChCC,uBAAA,EAAyB;MAC3B;IACF,CAAC;EACH,SAASC,CAAA,EAAG;IACVC,OAAA,CAAQC,KAAA,CACN,+EAA+ExB,QAAQ,IACvFsB,CACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","getPathFromRoute","createSsrServerlessFunction","route","buildInfo","oneOptionsRoot","postBuildLogs","path","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","file","packageJsonFilePath","writeJSON","vcConfigFilePath","writeJson","handler","environment","ONE_DEFAULT_RENDER_MODE","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,SAASC,IAAA,EAAMC,OAAA,QAAe;AAC9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,2BAAA,QAAmC;AAE5C,SAASC,gBAAA,QAAwB;AAIjC,eAAsBC,4BACpBC,KAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACF,MAAMC,IAAA,GAAON,gBAAA,CAAiBE,KAAK;IACnCG,aAAA,CAAcE,IAAA,CAAK,yDAAyDD,IAAI,EAAE;IAElF,MAAME,iBAAA,GAAoBC,IAAA,CAAKC,SAAA,CAAUP,SAAS;MAC5CQ,UAAA,GAAad,OAAA,CAAQD,IAAA,CAAKQ,cAAA,EAAgB,4BAA4BE,IAAI,OAAO,CAAC;IACxF,MAAMX,EAAA,CAAGiB,SAAA,CAAUD,UAAU;IAE7B,MAAME,cAAA,GAAiBhB,OAAA,CAAQD,IAAA,CAAKQ,cAAA,EAAgB,QAAQ,QAAQ,CAAC;MAC/DU,YAAA,GAAejB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,QAAQ,CAAC;IACvD,MAAMhB,EAAA,CAAGiB,SAAA,CAAUE,YAAY,GAC/BT,aAAA,CAAcE,IAAA,CACZ,+EAA+EM,cAAc,OAAOC,YAAY,EAClH,GACA,MAAMnB,EAAA,CAAGoB,IAAA,CAAKF,cAAA,EAAgBC,YAAY,GAE1CT,aAAA,CAAcE,IAAA,CAAK,wEAAwE,GAC3F,MAAMZ,EAAA,CAAGqB,SAAA,CAAUpB,IAAA,CAAKe,UAAA,EAAY,cAAc,GAAG,kBAAkBH,iBAAiB,EAAE,GAE1F,MAAMb,EAAA,CAAGiB,SAAA,CAAUhB,IAAA,CAAKe,UAAA,EAAY,YAAY,CAAC;IACjD,MAAMM,kBAAA,GAAqBpB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,cAAc,UAAU,CAAC;IAC7EN,aAAA,CAAcE,IAAA,CACZ,yEAAyEU,kBAAkB,EAC7F,GACA,MAAMtB,EAAA,CAAGqB,SAAA,CACPC,kBAAA,EACA;AAAA;AAAA;AAAA,sBAGgBR,IAAA,CAAKC,SAAA,CAAUR,KAAA,CAAMgB,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA4C5C;IAEA,MAAMC,mBAAA,GAAsBtB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,cAAc,CAAC;IACpEN,aAAA,CAAcE,IAAA,CACZ,2EAA2EY,mBAAmB,EAChG,GACA,MAAMxB,EAAA,CAAGyB,SAAA,CAAUD,mBAAA,EAAqBpB,2BAA2B;IAInE,MAAMsB,gBAAA,GAAmBxB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,iBAAiB,CAAC;IACpE,OAAAN,aAAA,CAAcE,IAAA,CACZ,8EAA8Ec,gBAAgB,EAChG,GACO1B,EAAA,CAAG2B,SAAA,CAAUD,gBAAA,EAAkB;MACpC,GAAGvB,4BAAA;MACHyB,OAAA,EAAS;MACTC,WAAA,EAAa;QACX,GAAG1B,4BAAA,CAA6B0B,WAAA;QAChCC,uBAAA,EAAyB;MAC3B;IACF,CAAC;EACH,SAASC,CAAA,EAAG;IACVC,OAAA,CAAQC,KAAA,CACN,+EAA+E1B,KAAA,CAAMgB,IAAI,IACzFQ,CACF;EACF;AACF","ignoreList":[]}
@@ -2,11 +2,13 @@ import fs from "fs-extra";
2
2
  import { join, resolve } from "node:path";
3
3
  import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.native.js";
4
4
  import { serverlessVercelPackageJson } from "../config/vc-package-base.native.js";
5
- async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot, postBuildLogs) {
5
+ import { getPathFromRoute } from "../getPathFromRoute.native.js";
6
+ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {
6
7
  try {
7
- postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
8
+ var path = getPathFromRoute(route);
9
+ postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);
8
10
  var buildInfoAsString = JSON.stringify(buildInfo),
9
- funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${pageName}.func`));
11
+ funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));
10
12
  await fs.ensureDir(funcFolder);
11
13
  var distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")),
12
14
  distServerTo = resolve(join(funcFolder, "server"));
@@ -15,6 +17,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
15
17
  postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, `
16
18
  const buildInfoConfig = await import('../buildInfo.js');
17
19
  const entry = await import('../server/_virtual_one-entry.js');
20
+ const routeFile = ${JSON.stringify(route.file)}
18
21
 
19
22
  const handler = async (req, res) => {
20
23
  // console.debug("req.url", req.url);
@@ -24,7 +27,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
24
27
  params: Object.fromEntries(url.searchParams.entries())
25
28
  }
26
29
  const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
27
- const routeFile = \`.\${url.pathname}\${postfix}\`;
30
+ // const routeFile = \`.\${url.pathname}\${postfix}\`;
28
31
  let route = buildInfoConfig.default.routeToBuildInfo[routeFile];
29
32
 
30
33
  // If we cannot find the route by direct match, try to find it by looking it up in the
@@ -70,7 +73,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
70
73
  }
71
74
  });
72
75
  } catch (e) {
73
- console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`, e);
76
+ console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
74
77
  }
75
78
  }
76
79
  export { createSsrServerlessFunction };
@@ -1 +1 @@
1
- {"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","createSsrServerlessFunction","pageName","buildInfo","oneOptionsRoot","postBuildLogs","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","packageJsonFilePath","writeJSON","vcConfigFilePath","writeJson","handler","environment","ONE_DEFAULT_RENDER_MODE","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,SAASC,IAAA,EAAMC,OAAA,QAAe;AAC9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,2BAAA,QAAmC;AAK5C,eAAsBC,4BACpBC,QAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,IAAAK,iBAAM,GAAAC,IAAoB,CAAAC,SAAK,CAAAN,SAAU;MAASO,UAC5C,GAAAZ,OAAa,CAAAD,IAAQ,CAAAO,cAAK,8BAAgBF,QAA4B,OAAQ,EAAO;IAC3F,MAAMN,EAAA,CAAGe,SAAA,CAAUD,UAAU;IAE7B,IAAAE,cAAM,GAAAd,OAAiB,CAAAD,IAAQ,CAAAO,cAAK,QAAgB,UAAQ,EAAQ;MAACS,YAC/D,GAAAf,OAAe,CAAAD,IAAQ,CAAAa,UAAK,UAAY,EAAQ;IACtD,MAAMd,EAAA,CAAGe,SAAA,CAAUE,YAAY,GAC/BR,aAAA,CAAcC,IAAA,gFAAAM,cAAA,OAAAC,YAAA,WAAAjB,EAAA,CAAAkB,IAAA,CAAAF,cAAA,EAAAC,YAAA,GAAAR,aAAA,CAAAC,IAAA,kFAAAV,EAAA,CAAAmB,SAAA,CAAAlB,IAAA,CAAAa,UAAA,qCAAAH,iBAAA,WAAAX,EAAA,CAAAe,SAAA,CAAAd,IAAA,CAAAa,UAAA;IAAA,IACZM,kBAAA,GAAAlB,OAAA,CAAAD,IAAA,CAAAa,UAAA;IACFL,aACS,CAAAC,IAAK,0EAEKU,kBAAA,WAAApB,EAAA,CAAAmB,SAAA,CAAAC,kBACV;AAGT;AACA;AAAc;AAC+E;AAEpF;AACP;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAAA,IAAAC,mBAAA,GAAAnB,OAAA,CAAAD,IAAA,CAAAa,UAAA;IAAAL,aAAA,CAAAC,IAAA,4EAAAW,mBAAA,WAAArB,EAAA,CAAAsB,SAAA,CAAAD,mBAAA,EAAAjB,2BAAA;IAAA,IAAAmB,gBAAA,GAAArB,OAAA,CAAAD,IAAA,CAAAa,UAAA;IAAA,OAAAL,aAAA,CAAAC,IAAA,+EAAAa,gBAAA,KAAAvB,EAAA,CAAAwB,SAAA,CAAAD,gBAAA;MAAA,GAAApB,4BAAA;MAAAsB,OAAA;MA8CFC,WAAA;QAEA,GAAMvB,4BAAsB,CAAQuB,WAAK;QACzCC,uBAAc;MACZ;IACF;EAKA,SAAMC,CAAA;IACNC,OAAA,CAAAC,KAAA,gFAAcxB,QAAA,IAAAsB,CAAA;EAAA;AACkF;AAE1D,SACjCvB,2BACM","ignoreList":[]}
1
+ {"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","getPathFromRoute","createSsrServerlessFunction","route","buildInfo","oneOptionsRoot","postBuildLogs","path","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","file","packageJsonFilePath","writeJSON","vcConfigFilePath","writeJson","handler","environment","ONE_DEFAULT_RENDER_MODE","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,SAASC,IAAA,EAAMC,OAAA,QAAe;AAC9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,2BAAA,QAAmC;AAE5C,SAASC,gBAAA,QAAwB;AAIjC,eAAsBC,4BACpBC,KAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACF,IAAAC,IAAM,GAAAN,gBAAO,CAAAE,KAAiB;IAC9BG,aAAA,CAAcE,IAAA,CAAK,yDAAyDD,IAAI,EAAE;IAElF,IAAAE,iBAAM,GAAAC,IAAoB,CAAAC,SAAK,CAAAP,SAAU;MAASQ,UAC5C,GAAAd,OAAa,CAAAD,IAAQ,CAAAQ,cAAK,8BAAgBE,IAA4B,OAAI,EAAO;IACvF,MAAMX,EAAA,CAAGiB,SAAA,CAAUD,UAAU;IAE7B,IAAAE,cAAM,GAAAhB,OAAiB,CAAAD,IAAQ,CAAAQ,cAAK,QAAgB,UAAQ,EAAQ;MAACU,YAC/D,GAAAjB,OAAe,CAAAD,IAAQ,CAAAe,UAAK,UAAY,EAAQ;IACtD,MAAMhB,EAAA,CAAGiB,SAAA,CAAUE,YAAY,GAC/BT,aAAA,CAAcE,IAAA,gFAAAM,cAAA,OAAAC,YAAA,WAAAnB,EAAA,CAAAoB,IAAA,CAAAF,cAAA,EAAAC,YAAA,GAAAT,aAAA,CAAAE,IAAA,kFAAAZ,EAAA,CAAAqB,SAAA,CAAApB,IAAA,CAAAe,UAAA,qCAAAH,iBAAA,WAAAb,EAAA,CAAAiB,SAAA,CAAAhB,IAAA,CAAAe,UAAA;IAAA,IACZM,kBAAA,GAAApB,OAAA,CAAAD,IAAA,CAAAe,UAAA;IACFN,aACS,CAAAE,IAAK,0EAEKU,kBAAA,WAAAtB,EAAA,CAAAqB,SAAA,CAAAC,kBACV;AAGT;AACA;AAAc,sBACZR,IAAA,CAAAC,SAAA,CAAAR,KAAA,CAAAgB,IAAA;AAA2F;AAEpF;AACP;AACA;AAAA;AAAA;AAG0C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAAA,IAAAC,mBAAA,GAAAtB,OAAA,CAAAD,IAAA,CAAAe,UAAA;IAAAN,aAAA,CAAAE,IAAA,4EAAAY,mBAAA,WAAAxB,EAAA,CAAAyB,SAAA,CAAAD,mBAAA,EAAApB,2BAAA;IAAA,IAAAsB,gBAAA,GAAAxB,OAAA,CAAAD,IAAA,CAAAe,UAAA;IAAA,OAAAN,aAAA,CAAAE,IAAA,+EAAAc,gBAAA,KAAA1B,EAAA,CAAA2B,SAAA,CAAAD,gBAAA;MAAA,GAAAvB,4BAAA;MAAAyB,OAAA;MA4C5CC,WAAA;QAEA,GAAM1B,4BAAsB,CAAQ0B,WAAK;QACzCC,uBAAc;MACZ;IACF;EAKA,SAAMC,CAAA;IACNC,OAAA,CAAAC,KAAA,gFAAc1B,KAAA,CAAAgB,IAAA,IAAAQ,CAAA;EAAA;AACkF;AAE1D,SACjCzB,2BACM","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath";
2
+ function getPathFromRoute(route) {
3
+ return getPathnameFromFilePath(route.file, {}, !1, { preserveExtensions: !0 }).replace(/^\.\//, "/").replace(/\/+$/, "");
4
+ }
5
+ export {
6
+ getPathFromRoute
7
+ };
8
+ //# sourceMappingURL=getPathFromRoute.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/vercel/build/getPathFromRoute.ts"],
4
+ "mappings": "AAAA,SAAS,+BAA+B;AAGjC,SAAS,iBAAiB,OAA0B;AACzD,SAAO,wBAAwB,MAAM,MAAM,CAAC,GAAG,IAAO,EAAE,oBAAoB,GAAK,CAAC,EAC/E,QAAQ,SAAS,GAAG,EACpB,QAAQ,QAAQ,EAAE;AACvB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,8 @@
1
+ import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath.mjs";
2
+ function getPathFromRoute(route) {
3
+ return getPathnameFromFilePath(route.file, {}, !1, {
4
+ preserveExtensions: !0
5
+ }).replace(/^\.\//, "/").replace(/\/+$/, "");
6
+ }
7
+ export { getPathFromRoute };
8
+ //# sourceMappingURL=getPathFromRoute.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getPathnameFromFilePath","getPathFromRoute","route","file","preserveExtensions","replace"],"sources":["../../../../src/vercel/build/getPathFromRoute.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,uBAAA,QAA+B;AAGjC,SAASC,iBAAiBC,KAAA,EAA0B;EACzD,OAAOF,uBAAA,CAAwBE,KAAA,CAAMC,IAAA,EAAM,CAAC,GAAG,IAAO;IAAEC,kBAAA,EAAoB;EAAK,CAAC,EAC/EC,OAAA,CAAQ,SAAS,GAAG,EACpBA,OAAA,CAAQ,QAAQ,EAAE;AACvB","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath.native.js";
2
+ function getPathFromRoute(route) {
3
+ return getPathnameFromFilePath(route.file, {}, !1, {
4
+ preserveExtensions: !0
5
+ }).replace(/^\.\//, "/").replace(/\/+$/, "");
6
+ }
7
+ export { getPathFromRoute };
8
+ //# sourceMappingURL=getPathFromRoute.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getPathnameFromFilePath","getPathFromRoute","route","file","preserveExtensions"],"sources":["../../../../src/vercel/build/getPathFromRoute.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,uBAAA,QAA+B;AAGjC,SAASC,iBAAiBC,KAAA,EAA0B;EACzD,OAAOF,uBAAA,CAAwBE,KAAA,CAAMC,IAAA,EAAM,CAAC,GAAG,IAAO;IAGxDC,kBAAA","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";
4
4
  import { getRouterRootFromOneOptions } from "../../utils/getRouterRootFromOneOptions";
@@ -8,7 +8,7 @@ function generateFileSystemRouteTypesPlugin(options) {
8
8
  enforce: "post",
9
9
  apply: "serve",
10
10
  configureServer(server) {
11
- const appDir = join(process.cwd(), getRouterRootFromOneOptions(options)), outFile = join(process.cwd(), "routes.d.ts"), routerRoot = getRouterRootFromOneOptions(options), fileWatcherChangeListener = debounce(async (type, path) => {
11
+ const appDir = join(process.cwd(), getRouterRootFromOneOptions(options)), 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"), routerRoot = getRouterRootFromOneOptions(options), fileWatcherChangeListener = debounce(async (type, path) => {
12
12
  (type === "add" || type === "delete") && path.startsWith(appDir) && generateRouteTypes(outFile, routerRoot);
13
13
  }, 100);
14
14
  return server.watcher.addListener("all", fileWatcherChangeListener), () => {