one 1.1.483 → 1.1.484

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 (122) 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/server/createRoutesManifest.js.map +1 -1
  7. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  8. package/dist/cjs/server/getServerManifest.cjs +15 -7
  9. package/dist/cjs/server/getServerManifest.js +17 -8
  10. package/dist/cjs/server/getServerManifest.js.map +1 -1
  11. package/dist/cjs/server/getServerManifest.native.js +8 -5
  12. package/dist/cjs/server/getServerManifest.native.js.map +2 -2
  13. package/dist/cjs/utils/getPathnameFromFilePath.cjs +76 -0
  14. package/dist/cjs/utils/getPathnameFromFilePath.js +70 -0
  15. package/dist/cjs/utils/getPathnameFromFilePath.js.map +6 -0
  16. package/dist/cjs/utils/getPathnameFromFilePath.native.js +73 -0
  17. package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +6 -0
  18. package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +38 -8
  19. package/dist/cjs/vercel/build/buildVercelOutputDirectory.js +48 -17
  20. package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +1 -1
  21. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +50 -7
  22. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +2 -2
  23. package/dist/cjs/vercel/build/config/vc-build-output-config-base.cjs +9 -6
  24. package/dist/cjs/vercel/build/config/vc-build-output-config-base.js +7 -6
  25. package/dist/cjs/vercel/build/config/vc-build-output-config-base.js.map +1 -1
  26. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js +4 -9
  27. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +2 -2
  28. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.cjs +54 -9
  29. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js +83 -15
  30. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js.map +2 -2
  31. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js +73 -9
  32. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +2 -2
  33. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +9 -6
  34. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js +8 -6
  35. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
  36. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +8 -6
  37. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +2 -2
  38. package/dist/cjs/vercel/build/getPathFromRoute.cjs +31 -0
  39. package/dist/cjs/vercel/build/getPathFromRoute.js +24 -0
  40. package/dist/cjs/vercel/build/getPathFromRoute.js.map +6 -0
  41. package/dist/cjs/vercel/build/getPathFromRoute.native.js +31 -0
  42. package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +6 -0
  43. package/dist/esm/cli/build.js +4 -43
  44. package/dist/esm/cli/build.js.map +1 -1
  45. package/dist/esm/cli/build.mjs +4 -40
  46. package/dist/esm/cli/build.mjs.map +1 -1
  47. package/dist/esm/cli/build.native.js +4 -43
  48. package/dist/esm/cli/build.native.js.map +1 -1
  49. package/dist/esm/server/createRoutesManifest.js.map +1 -1
  50. package/dist/esm/server/createRoutesManifest.mjs.map +1 -1
  51. package/dist/esm/server/createRoutesManifest.native.js.map +1 -1
  52. package/dist/esm/server/getServerManifest.js +17 -8
  53. package/dist/esm/server/getServerManifest.js.map +1 -1
  54. package/dist/esm/server/getServerManifest.mjs +15 -7
  55. package/dist/esm/server/getServerManifest.mjs.map +1 -1
  56. package/dist/esm/server/getServerManifest.native.js +8 -4
  57. package/dist/esm/server/getServerManifest.native.js.map +1 -1
  58. package/dist/esm/utils/getPathnameFromFilePath.js +46 -0
  59. package/dist/esm/utils/getPathnameFromFilePath.js.map +6 -0
  60. package/dist/esm/utils/getPathnameFromFilePath.mjs +42 -0
  61. package/dist/esm/utils/getPathnameFromFilePath.mjs.map +1 -0
  62. package/dist/esm/utils/getPathnameFromFilePath.native.js +45 -0
  63. package/dist/esm/utils/getPathnameFromFilePath.native.js.map +1 -0
  64. package/dist/esm/vercel/build/buildVercelOutputDirectory.js +49 -18
  65. package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +1 -1
  66. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +38 -8
  67. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
  68. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +45 -8
  69. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  70. package/dist/esm/vercel/build/config/vc-build-output-config-base.js +7 -6
  71. package/dist/esm/vercel/build/config/vc-build-output-config-base.js.map +1 -1
  72. package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs +9 -6
  73. package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs.map +1 -1
  74. package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js +3 -6
  75. package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
  76. package/dist/esm/vercel/build/generate/createApiServerlessFunction.js +88 -13
  77. package/dist/esm/vercel/build/generate/createApiServerlessFunction.js.map +1 -1
  78. package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs +53 -8
  79. package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs.map +1 -1
  80. package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js +52 -8
  81. package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  82. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js +8 -5
  83. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
  84. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +8 -5
  85. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
  86. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +8 -5
  87. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  88. package/dist/esm/vercel/build/getPathFromRoute.js +8 -0
  89. package/dist/esm/vercel/build/getPathFromRoute.js.map +6 -0
  90. package/dist/esm/vercel/build/getPathFromRoute.mjs +8 -0
  91. package/dist/esm/vercel/build/getPathFromRoute.mjs.map +1 -0
  92. package/dist/esm/vercel/build/getPathFromRoute.native.js +8 -0
  93. package/dist/esm/vercel/build/getPathFromRoute.native.js.map +1 -0
  94. package/package.json +9 -8
  95. package/src/cli/build.ts +3 -57
  96. package/src/server/createRoutesManifest.ts +1 -0
  97. package/src/server/getServerManifest.ts +12 -3
  98. package/src/utils/getPathnameFromFilePath.ts +62 -0
  99. package/src/vercel/build/buildVercelOutputDirectory.ts +55 -20
  100. package/src/vercel/build/config/vc-build-output-config-base.ts +6 -5
  101. package/src/vercel/build/generate/createApiServerlessFunction.ts +138 -12
  102. package/src/vercel/build/generate/createSsrServerlessFunction.ts +9 -6
  103. package/src/vercel/build/getPathFromRoute.ts +8 -0
  104. package/src/vite/types.ts +1 -0
  105. package/types/cli/build.d.ts.map +1 -1
  106. package/types/server/createRoutesManifest.d.ts +1 -0
  107. package/types/server/createRoutesManifest.d.ts.map +1 -1
  108. package/types/server/getServerManifest.d.ts +1 -0
  109. package/types/server/getServerManifest.d.ts.map +1 -1
  110. package/types/utils/getPathnameFromFilePath.d.ts +4 -0
  111. package/types/utils/getPathnameFromFilePath.d.ts.map +1 -0
  112. package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
  113. package/types/vercel/build/config/vc-build-output-config-base.d.ts +2 -5
  114. package/types/vercel/build/config/vc-build-output-config-base.d.ts.map +1 -1
  115. package/types/vercel/build/generate/createApiServerlessFunction.d.ts +2 -1
  116. package/types/vercel/build/generate/createApiServerlessFunction.d.ts.map +1 -1
  117. package/types/vercel/build/generate/createSsrServerlessFunction.d.ts +2 -2
  118. package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
  119. package/types/vercel/build/getPathFromRoute.d.ts +3 -0
  120. package/types/vercel/build/getPathFromRoute.d.ts.map +1 -0
  121. package/types/vite/types.d.ts +1 -0
  122. package/types/vite/types.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","vercelBuildOutputConfig","copy","ensureDir","existsSync","writeJSON","moveAllFiles","src","dest","overwrite","errorOnExist","err","console","error","buildVercelOutputDirectory","apiOutput","buildInfoForWriting","clientDir","oneOptionsRoot","postBuildLogs","routeToBuildInfo","compiltedApiRoutes","output","filter","o","code","string","facadeModuleId","route","manifest","apiRoutes","compiledRoute","find","compiled","includes","file","replace","push","page","urlCleanPath","warn","vercelOutputFunctionsDir","pageRoutes","type","distMiddlewareDir","vercelMiddlewareDir","vercelMiddlewarePackageJsonFilePath","middlewareVercelConfigFilePath","handler","vercelOutputStaticDir","vercelConfigFilePath"],"sources":["../../../../src/vercel/build/buildVercelOutputDirectory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","serverlessVercelPackageJson","vercelBuildOutputConfigBase","getPathFromRoute","copy","ensureDir","existsSync","writeJSON","moveAllFiles","src","dest","overwrite","errorOnExist","err","console","error","buildVercelOutputDirectory","apiOutput","buildInfoForWriting","clientDir","oneOptionsRoot","postBuildLogs","routeToBuildInfo","compiltedApiRoutes","output","filter","o","code","string","facadeModuleId","route","manifest","apiRoutes","compiledRoute","find","compiled","includes","file","replace","push","page","warn","vercelOutputFunctionsDir","pageRoutes","type","distMiddlewareDir","vercelMiddlewareDir","vercelMiddlewarePackageJsonFilePath","wrappedMiddlewareEntryPointFilename","wrappedMiddlewareEntryPointPath","writeFile","middlewareVercelConfigFilePath","runtime","entrypoint","vercelOutputStaticDir","vercelConfigFilePath","routes","middlewarePath","continue","handle","allRoutes","r","routeKeys","Object","keys","length","map","namedRegex","entries","k","v"],"sources":["../../../../src/vercel/build/buildVercelOutputDirectory.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,EAAMC,OAAA,QAAe;AAE9B,OAAOC,OAAA,MAAa;AAEpB,SAASC,UAAA,EAAYC,CAAA,QAAS;AAE9B,SAASC,2BAAA,QAAmC;AAC5C,SAASC,2BAAA,QAAmC;AAE5C,SAASC,2BAAA,QAAmC;AAC5C,SAASC,2BAAA,QAAmC;AAG5C,SAASC,gBAAA,QAAwB;AAEjC,MAAM;EAAEC,IAAA;EAAMC,SAAA;EAAWC,UAAA;EAAYC;AAAU,IAAIX,OAAA;AAEnD,eAAeY,aAAaC,GAAA,EAAaC,IAAA,EAAc;EACrD,IAAI;IACF,MAAMN,IAAA,CAAKK,GAAA,EAAKC,IAAA,EAAM;MAAEC,SAAA,EAAW;MAAMC,YAAA,EAAc;IAAM,CAAC;EAChE,SAASC,GAAA,EAAK;IACZC,OAAA,CAAQC,KAAA,CAAM,uBAAuBF,GAAG;EAC1C;AACF;AAEO,MAAMG,0BAAA,GAA6B,MAAAA,CAAO;EAC/CC,SAAA;EACAC,mBAAA;EACAC,SAAA;EACAC,cAAA;EACAC;AACF,MAMM;EACJ,MAAM;IAAEC;EAAiB,IAAIJ,mBAAA;EAC7B,IAAID,SAAA,EAAW;IACb,MAAMM,kBAAA,IAAsBN,SAAA,EAAWO,MAAA,IAAU,EAAC,EAAGC,MAAA,CAAQC,CAAA,IAC3D7B,UAAA,CAAW;MAAE8B,IAAA,EAAM7B,CAAA,CAAE8B,MAAA;MAAQC,cAAA,EAAgB/B,CAAA,CAAE8B;IAAO,GAAGF,CAAC,CAC5D;IACA,WAAWI,KAAA,IAASZ,mBAAA,CAAoBa,QAAA,CAASC,SAAA,EAAW;MAC1D,MAAMC,aAAA,GAAgBV,kBAAA,CAAmBW,IAAA,CAAMC,QAAA,IAChCA,QAAA,CAASN,cAAA,CAAeO,QAAA,CAASN,KAAA,CAAMO,IAAA,CAAKC,OAAA,CAAQ,MAAM,EAAE,CAAC,CAE3E;MACGL,aAAA,IACFZ,aAAA,CAAckB,IAAA,CACZ,mEAAmET,KAAA,CAAMU,IAAI,EAC/E,GAEA,MAAMzC,2BAAA,CAA4B+B,KAAA,EAAOG,aAAA,CAAcN,IAAA,EAAMP,cAAA,EAAgBC,aAAa,KAE1FP,OAAA,CAAQ2B,IAAA,CAAK;AAAA,sEAAkEX,KAAA,CAAMO,IAAI;IAE7F;EACF;EAEA,MAAMK,wBAAA,GAA2BhD,IAAA,CAAK0B,cAAA,EAAgB,0BAA0B;EAChF,MAAMf,SAAA,CAAUqC,wBAAwB;EAExC,WAAWZ,KAAA,IAASZ,mBAAA,CAAoBa,QAAA,CAASY,UAAA,EAC/C,QAAQb,KAAA,CAAMc,IAAA;IACZ,KAAK;MAAO;QAEatB,gBAAA,CAAiBQ,KAAA,CAAMO,IAAI,MAEhDhB,aAAA,CAAckB,IAAA,CACZ,wDAAwDT,KAAA,CAAMU,IAAI,SAASV,KAAA,CAAMc,IAAI,EACvF,GACA,MAAM5C,2BAAA,CACJ8B,KAAA,EACAZ,mBAAA,EACAE,cAAA,EACAC,aACF;QAEF;MACF;IACA;MAGE;EACJ;EAGF,MAAMwB,iBAAA,GAAoBlD,OAAA,CAAQD,IAAA,CAAK0B,cAAA,EAAgB,QAAQ,aAAa,CAAC;EAC7E,IAAId,UAAA,CAAWuC,iBAAiB,GAAG;IACjC,MAAMC,mBAAA,GAAsBnD,OAAA,CAC1BD,IAAA,CAAK0B,cAAA,EAAgB,2CAA2C,CAClE;IACA,MAAMf,SAAA,CAAUyC,mBAAmB,GACnCzB,aAAA,CAAckB,IAAA,CACZ,gDAAgDM,iBAAiB,OAAOC,mBAAmB,EAC7F,GACA,MAAMtC,YAAA,CAAab,OAAA,CAAQD,IAAA,CAAK0B,cAAA,EAAgB,QAAQ,aAAa,CAAC,GAAG0B,mBAAmB;IAC5F,MAAMC,mCAAA,GAAsCpD,OAAA,CAAQD,IAAA,CAAKoD,mBAAA,EAAqB,UAAU,CAAC;IACzFzB,aAAA,CAAckB,IAAA,CACZ,+CAA+CQ,mCAAmC,EACpF,GACA,MAAMxC,SAAA,CAAUwC,mCAAA,EAAqC9C,2BAA2B;IAChF,MAAM+C,mCAAA,GAAsC;MACtCC,+BAAA,GAAkCtD,OAAA,CACtCD,IAAA,CAAKoD,mBAAA,EAAqBE,mCAAmC,CAC/D;IACA,MAAMpD,OAAA,CAAQsD,SAAA,CACZD,+BAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAeF;IACA,MAAME,8BAAA,GAAiCxD,OAAA,CAAQD,IAAA,CAAKoD,mBAAA,EAAqB,iBAAiB,CAAC;IAC3FzB,aAAA,CAAckB,IAAA,CACZ,kDAAkDY,8BAA8B,EAClF,GACA,MAAM5C,SAAA,CAAU4C,8BAAA,EAAgC;MAC9CC,OAAA,EAAS;MAAA;MACTC,UAAA,EAAYL;IACd,CAAC;EACH;EAEA,MAAMM,qBAAA,GAAwB3D,OAAA,CAAQD,IAAA,CAAK0B,cAAA,EAAgB,uBAAuB,CAAC;EACnF,MAAMf,SAAA,CAAUiD,qBAAqB,GAErCjC,aAAA,CAAckB,IAAA,CACZ,iDAAiDpB,SAAS,OAAOmC,qBAAqB,EACxF,GACA,MAAM9C,YAAA,CAAaW,SAAA,EAAWmC,qBAAqB;EAInD,MAAMC,oBAAA,GAAuB5D,OAAA,CAAQD,IAAA,CAAK0B,cAAA,EAAgB,kBAAkB,aAAa,CAAC;EAC1F,MAAMb,SAAA,CAAUgD,oBAAA,EAAsB;IACpC,GAAGrD,2BAAA;IACHsD,MAAA,EAAQ,CACN,GAAGtD,2BAAA,CAA4BsD,MAAA,EAC/B,IAAIlD,UAAA,CAAWuC,iBAAiB,IAC5B,CACE;MACEpC,GAAA,EAAK;MACLgD,cAAA,EAAgB;MAChBC,QAAA,EAAU;IACZ,EACF,GACA,EAAC,GACL;MACEC,MAAA,EAAQ;IACV,GACA,GAAGzC,mBAAA,CAAoBa,QAAA,CAAS6B,SAAA,CAC7BnC,MAAA,CAAQoC,CAAA,IAAMA,CAAA,CAAEC,SAAA,IAAaC,MAAA,CAAOC,IAAA,CAAKH,CAAA,CAAEC,SAAS,EAAEG,MAAA,GAAS,CAAC,EAChEC,GAAA,CAAKL,CAAA,KAAO;MACXpD,GAAA,EAAKoD,CAAA,CAAEM,UAAA;MACPzD,IAAA,EAAM,GAAGP,gBAAA,CAAiB0D,CAAC,CAAC,IAAIE,MAAA,CAAOK,OAAA,CAAQP,CAAA,CAAEC,SAAS,EACvDI,GAAA,CAAI,CAAC,CAACG,CAAA,EAAGC,CAAC,MAAM,GAAGD,CAAC,KAAKC,CAAC,EAAE,EAC5B5E,IAAA,CAAK,GAAG,CAAC;IACd,EAAE;EAER,CAAC,GACD2B,aAAA,CAAckB,IAAA,CAAK,uCAAuCgB,oBAAoB,EAAE;AAClF","ignoreList":[]}
@@ -3,9 +3,9 @@ import FSExtra from "fs-extra";
3
3
  import { isMatching, P } from "ts-pattern";
4
4
  import { createApiServerlessFunction } from "./generate/createApiServerlessFunction.native.js";
5
5
  import { createSsrServerlessFunction } from "./generate/createSsrServerlessFunction.native.js";
6
- import { serverlessVercelNodeJsConfig } from "./config/vc-config-base.native.js";
7
6
  import { serverlessVercelPackageJson } from "./config/vc-package-base.native.js";
8
- import { vercelBuildOutputConfig } from "./config/vc-build-output-config-base.native.js";
7
+ import { vercelBuildOutputConfigBase } from "./config/vc-build-output-config-base.native.js";
8
+ import { getPathFromRoute } from "./getPathFromRoute.native.js";
9
9
  var {
10
10
  copy,
11
11
  ensureDir,
@@ -51,7 +51,7 @@ var buildVercelOutputDirectory = async function (param) {
51
51
  var flag = compiled.facadeModuleId.includes(route2.file.replace("./", ""));
52
52
  return flag;
53
53
  });
54
- compiledRoute ? (postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`), await createApiServerlessFunction(route2.page, compiledRoute.code, oneOptionsRoot, postBuildLogs), route2.page !== route2.urlCleanPath && (await createApiServerlessFunction(route2.urlCleanPath, compiledRoute.code, oneOptionsRoot, postBuildLogs))) : console.warn(`
54
+ compiledRoute ? (postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`), await createApiServerlessFunction(route2, compiledRoute.code, oneOptionsRoot, postBuildLogs)) : console.warn(`
55
55
  \u{1F528}[one.build][vercel] apiRoute missing code compilation for`, route2.file);
56
56
  }, _iterator = buildInfoForWriting.manifest.apiRoutes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) await _loop();
57
57
  } catch (err) {
@@ -76,7 +76,7 @@ var buildVercelOutputDirectory = async function (param) {
76
76
  case "ssr":
77
77
  {
78
78
  var builtPageRoute = routeToBuildInfo[route.file];
79
- builtPageRoute && (postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`), await createSsrServerlessFunction(route.page, buildInfoForWriting, oneOptionsRoot, postBuildLogs));
79
+ builtPageRoute && (postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`), await createSsrServerlessFunction(route, buildInfoForWriting, oneOptionsRoot, postBuildLogs));
80
80
  break;
81
81
  }
82
82
  default:
@@ -94,20 +94,57 @@ var buildVercelOutputDirectory = async function (param) {
94
94
  }
95
95
  var distMiddlewareDir = resolve(join(oneOptionsRoot, "dist", "middlewares"));
96
96
  if (existsSync(distMiddlewareDir)) {
97
- var vercelMiddlewareDir = resolve(join(oneOptionsRoot, ".vercel/output/functions/_middleware"));
97
+ var vercelMiddlewareDir = resolve(join(oneOptionsRoot, ".vercel/output/functions/_middleware.func"));
98
98
  await ensureDir(vercelMiddlewareDir), postBuildLogs.push(`[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`), await moveAllFiles(resolve(join(oneOptionsRoot, "dist", "middlewares")), vercelMiddlewareDir);
99
99
  var vercelMiddlewarePackageJsonFilePath = resolve(join(vercelMiddlewareDir, "index.js"));
100
100
  postBuildLogs.push(`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`), await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson);
101
+ var wrappedMiddlewareEntryPointFilename = "_wrapped_middleware.js",
102
+ wrappedMiddlewareEntryPointPath = resolve(join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename));
103
+ await FSExtra.writeFile(wrappedMiddlewareEntryPointPath, `
104
+ import middlewareFunction from './_middleware.js'
105
+
106
+ const next = (e) => {
107
+ const t = new Headers(null == e ? void 0 : e.headers)
108
+ t.set('x-middleware-next', '1')
109
+ return new Response(null, { ...e, headers: t })
110
+ }
111
+
112
+ const wrappedMiddlewareFunction = (request, event) => {
113
+ return middlewareFunction({ request, event, next })
114
+ }
115
+
116
+ export { wrappedMiddlewareFunction as default }
117
+ `);
101
118
  var middlewareVercelConfigFilePath = resolve(join(vercelMiddlewareDir, ".vc-config.json"));
102
119
  postBuildLogs.push(`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`), await writeJSON(middlewareVercelConfigFilePath, {
103
- ...serverlessVercelNodeJsConfig,
104
- handler: "_middleware.js"
120
+ runtime: "edge",
121
+ // Seems that middlewares only work with edge runtime
122
+ entrypoint: wrappedMiddlewareEntryPointFilename
105
123
  });
106
124
  }
107
125
  var vercelOutputStaticDir = resolve(join(oneOptionsRoot, ".vercel/output/static"));
108
126
  await ensureDir(vercelOutputStaticDir), postBuildLogs.push(`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`), await moveAllFiles(clientDir, vercelOutputStaticDir);
109
127
  var vercelConfigFilePath = resolve(join(oneOptionsRoot, ".vercel/output", "config.json"));
110
- await writeJSON(vercelConfigFilePath, vercelBuildOutputConfig), postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);
128
+ await writeJSON(vercelConfigFilePath, {
129
+ ...vercelBuildOutputConfigBase,
130
+ routes: [...vercelBuildOutputConfigBase.routes, ...(existsSync(distMiddlewareDir) ? [{
131
+ src: "/(.*)",
132
+ middlewarePath: "_middleware",
133
+ continue: !0
134
+ }] : []), {
135
+ handle: "rewrite"
136
+ }, ...buildInfoForWriting.manifest.allRoutes.filter(function (r) {
137
+ return r.routeKeys && Object.keys(r.routeKeys).length > 0;
138
+ }).map(function (r) {
139
+ return {
140
+ src: r.namedRegex,
141
+ dest: `${getPathFromRoute(r)}?${Object.entries(r.routeKeys).map(function (param2) {
142
+ var [k, v] = param2;
143
+ return `${k}=$${v}`;
144
+ }).join("&")}`
145
+ };
146
+ })]
147
+ }), postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);
111
148
  };
112
149
  export { buildVercelOutputDirectory };
113
150
  //# sourceMappingURL=buildVercelOutputDirectory.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","vercelBuildOutputConfig","copy","ensureDir","existsSync","writeJSON","moveAllFiles","src","dest","overwrite","errorOnExist","err","console","error","buildVercelOutputDirectory","param","apiOutput","buildInfoForWriting","clientDir","oneOptionsRoot","postBuildLogs","routeToBuildInfo","_apiOutput_output","compiltedApiRoutes","output","filter","o","code","string","facadeModuleId","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","route2","_step","value","compiledRoute","find","compiled","flag","includes","file","replace","push","page","urlCleanPath","warn","_iterator","manifest","apiRoutes","Symbol","iterator","next","done","return","vercelOutputFunctionsDir","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","pageRoutes","_step1","route","type","builtPageRoute","distMiddlewareDir","vercelMiddlewareDir","vercelMiddlewarePackageJsonFilePath","middlewareVercelConfigFilePath","handler","vercelOutputStaticDir","vercelConfigFilePath"],"sources":["../../../../src/vercel/build/buildVercelOutputDirectory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","serverlessVercelPackageJson","vercelBuildOutputConfigBase","getPathFromRoute","copy","ensureDir","existsSync","writeJSON","moveAllFiles","src","dest","overwrite","errorOnExist","err","console","error","buildVercelOutputDirectory","param","apiOutput","buildInfoForWriting","clientDir","oneOptionsRoot","postBuildLogs","routeToBuildInfo","_apiOutput_output","compiltedApiRoutes","output","filter","o","code","string","facadeModuleId","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","route2","_step","value","compiledRoute","find","compiled","flag","includes","file","replace","push","page","warn","_iterator","manifest","apiRoutes","Symbol","iterator","next","done","return","vercelOutputFunctionsDir","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","pageRoutes","_step1","route","type","builtPageRoute","distMiddlewareDir","vercelMiddlewareDir","vercelMiddlewarePackageJsonFilePath","wrappedMiddlewareEntryPointFilename","wrappedMiddlewareEntryPointPath","writeFile","middlewareVercelConfigFilePath","runtime","entrypoint","vercelOutputStaticDir","vercelConfigFilePath","routes","middlewarePath","continue","handle","allRoutes","r","routeKeys","Object","keys","length"],"sources":["../../../../src/vercel/build/buildVercelOutputDirectory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,15 @@
1
- const vercelBuildOutputConfig = {
1
+ const vercelBuildOutputConfigBase = {
2
2
  version: 3,
3
3
  // https://vercel.com/docs/build-output-api/v3/configuration#routes
4
4
  routes: [
5
- {
6
- src: "/(.*)",
7
- status: 200
8
- }
5
+ // Not sure if we really need this, but having this seems to break the 'rewrite's we will add to handle dynamic routes.
6
+ // {
7
+ // src: '/(.*)',
8
+ // status: 200,
9
+ // },
9
10
  ]
10
11
  };
11
12
  export {
12
- vercelBuildOutputConfig
13
+ vercelBuildOutputConfigBase
13
14
  };
14
15
  //# sourceMappingURL=vc-build-output-config-base.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],
4
- "mappings": "AAEO,MAAM,0BAA0B;AAAA,EACrC,SAAS;AAAA;AAAA,EAET,QAAQ;AAAA,IACN;AAAA,MACE,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AACF;",
4
+ "mappings": "AAEO,MAAM,8BAA8B;AAAA,EACzC,SAAS;AAAA;AAAA,EAET,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMR;AACF;",
5
5
  "names": []
6
6
  }
@@ -1,10 +1,13 @@
1
- const vercelBuildOutputConfig = {
1
+ const vercelBuildOutputConfigBase = {
2
2
  version: 3,
3
3
  // https://vercel.com/docs/build-output-api/v3/configuration#routes
4
- routes: [{
5
- src: "/(.*)",
6
- status: 200
7
- }]
4
+ routes: [
5
+ // Not sure if we really need this, but having this seems to break the 'rewrite's we will add to handle dynamic routes.
6
+ // {
7
+ // src: '/(.*)',
8
+ // status: 200,
9
+ // },
10
+ ]
8
11
  };
9
- export { vercelBuildOutputConfig };
12
+ export { vercelBuildOutputConfigBase };
10
13
  //# sourceMappingURL=vc-build-output-config-base.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["vercelBuildOutputConfig","version","routes","src","status"],"sources":["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],"sourcesContent":[null],"mappings":"AAEO,MAAMA,uBAAA,GAA0B;EACrCC,OAAA,EAAS;EAAA;EAETC,MAAA,EAAQ,CACN;IACEC,GAAA,EAAK;IACLC,MAAA,EAAQ;EACV;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["vercelBuildOutputConfigBase","version","routes"],"sources":["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],"sourcesContent":[null],"mappings":"AAEO,MAAMA,2BAAA,GAA8B;EACzCC,OAAA,EAAS;EAAA;EAETC,MAAA,EAAQ;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;AAOV","ignoreList":[]}
@@ -1,10 +1,7 @@
1
- var vercelBuildOutputConfig = {
1
+ var vercelBuildOutputConfigBase = {
2
2
  version: 3,
3
3
  // https://vercel.com/docs/build-output-api/v3/configuration#routes
4
- routes: [{
5
- src: "/(.*)",
6
- status: 200
7
- }]
4
+ routes: []
8
5
  };
9
- export { vercelBuildOutputConfig };
6
+ export { vercelBuildOutputConfigBase };
10
7
  //# sourceMappingURL=vc-build-output-config-base.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["vercelBuildOutputConfig","version","routes","src","status"],"sources":["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],"sourcesContent":[null],"mappings":"AAEO,IAAAA,uBAAM;EACXC,OAAA,EAAS;EAAA;EAETC,MAAA,EAAQ,CACN;IACEC,GAAA,EAAK;IACLC,MAAA,EAAQ;EACV;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["vercelBuildOutputConfigBase","version","routes"],"sources":["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],"sourcesContent":[null],"mappings":"AAEO,IAAAA,2BAAM;EACXC,OAAA,EAAS;EAAA;EAETC,MAAA,EAAQ;AAAA;AAAA,SAAAF,2BAAA","ignoreList":[]}
@@ -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":[]}