vike 0.4.228 → 0.4.229-commit-a19745d

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 (248) hide show
  1. package/dist/cjs/__internal/index.js +2 -2
  2. package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
  3. package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
  4. package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
  5. package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
  6. package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
  7. package/dist/cjs/client/shared/utils.js +22 -0
  8. package/dist/cjs/node/plugin/index.js +3 -1
  9. package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
  10. package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
  11. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
  12. package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
  13. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
  14. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
  15. package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
  17. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
  18. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
  19. package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
  20. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
  29. package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
  30. package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
  31. package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
  32. package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
  33. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +8 -20
  34. package/dist/cjs/node/plugin/utils.js +1 -0
  35. package/dist/cjs/node/prerender/runPrerender.js +44 -41
  36. package/dist/cjs/node/prerender/utils.js +1 -1
  37. package/dist/cjs/node/runtime/globalContext.js +102 -125
  38. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
  39. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
  40. package/dist/cjs/node/runtime/html/propKeys.js +47 -0
  41. package/dist/cjs/node/runtime/html/renderHtml.js +13 -3
  42. package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
  43. package/dist/cjs/node/runtime/index-deprecated.js +9 -38
  44. package/dist/cjs/node/runtime/index.js +56 -2
  45. package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
  46. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
  47. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
  48. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  49. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
  50. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
  51. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
  52. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  53. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +3 -3
  54. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  55. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  56. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
  57. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
  58. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
  59. package/dist/cjs/node/runtime/renderPage.js +102 -81
  60. package/dist/cjs/node/runtime/universal-middleware.js +7 -1
  61. package/dist/cjs/node/runtime/utils.js +3 -2
  62. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  63. package/dist/cjs/shared/createGlobalContextShared.js +54 -0
  64. package/dist/cjs/shared/createPageContextShared.js +17 -0
  65. package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
  66. package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
  67. package/dist/cjs/shared/hooks/getHook.js +45 -27
  68. package/dist/cjs/shared/htmlElementIds.js +5 -0
  69. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
  70. package/dist/cjs/shared/route/executeGuardHook.js +1 -1
  71. package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
  72. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  73. package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
  74. package/dist/cjs/utils/debug.js +1 -0
  75. package/dist/cjs/utils/getPublicProxy.js +27 -0
  76. package/dist/cjs/utils/isImportPath.js +21 -0
  77. package/dist/cjs/utils/isScriptFile.js +24 -21
  78. package/dist/cjs/utils/objectAssign.js +6 -10
  79. package/dist/cjs/utils/objectReplace.js +4 -4
  80. package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -23
  81. package/dist/cjs/utils/path.js +12 -2
  82. package/dist/cjs/utils/requireResolve.js +148 -53
  83. package/dist/esm/__internal/index.js +3 -3
  84. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
  85. package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
  86. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
  87. package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
  88. package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
  89. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
  90. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  91. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
  92. package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
  93. package/dist/esm/client/client-routing-runtime/utils.js +0 -1
  94. package/dist/esm/client/index.d.ts +1 -0
  95. package/dist/esm/client/index.js +4 -0
  96. package/dist/esm/client/node.js +1 -3
  97. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
  98. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
  99. package/dist/esm/client/server-routing-runtime/entry.js +2 -2
  100. package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
  101. package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
  102. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
  103. package/dist/esm/client/server-routing-runtime/utils.js +1 -1
  104. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
  105. package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
  106. package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
  107. package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
  108. package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
  109. package/dist/esm/client/shared/removeFoucBuster.js +1 -0
  110. package/dist/esm/client/shared/utils.d.ts +4 -0
  111. package/dist/esm/client/shared/utils.js +4 -0
  112. package/dist/esm/node/plugin/index.js +3 -1
  113. package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
  114. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
  115. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
  116. package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
  117. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
  118. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
  119. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
  120. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
  121. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
  122. package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
  123. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
  124. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +7 -2
  125. package/dist/esm/node/plugin/plugins/envVars.js +18 -20
  126. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
  127. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
  128. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
  129. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
  130. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
  131. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
  132. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
  133. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
  134. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
  135. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
  136. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
  137. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
  138. package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
  139. package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
  140. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
  141. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
  142. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
  143. package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
  144. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
  145. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +9 -21
  146. package/dist/esm/node/plugin/utils.d.ts +1 -0
  147. package/dist/esm/node/plugin/utils.js +1 -0
  148. package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
  149. package/dist/esm/node/prerender/runPrerender.js +48 -45
  150. package/dist/esm/node/prerender/utils.d.ts +1 -1
  151. package/dist/esm/node/prerender/utils.js +1 -1
  152. package/dist/esm/node/runtime/globalContext.d.ts +425 -47
  153. package/dist/esm/node/runtime/globalContext.js +103 -126
  154. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
  155. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
  156. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
  157. package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
  158. package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
  159. package/dist/esm/node/runtime/html/propKeys.js +45 -0
  160. package/dist/esm/node/runtime/html/renderHtml.js +13 -3
  161. package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
  162. package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
  163. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
  164. package/dist/esm/node/runtime/index-deprecated.js +9 -36
  165. package/dist/esm/node/runtime/index.d.ts +23 -1
  166. package/dist/esm/node/runtime/index.js +38 -3
  167. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  168. package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
  169. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
  170. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
  171. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
  172. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
  173. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
  174. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
  175. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
  176. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
  177. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
  178. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
  179. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
  180. package/dist/esm/node/runtime/renderPage/getPageAssets.js +3 -3
  181. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  182. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  183. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
  184. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  185. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
  186. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
  187. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
  188. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
  189. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
  190. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
  191. package/dist/esm/node/runtime/renderPage.d.ts +146 -7
  192. package/dist/esm/node/runtime/renderPage.js +105 -84
  193. package/dist/esm/node/runtime/universal-middleware.js +7 -1
  194. package/dist/esm/node/runtime/utils.d.ts +3 -2
  195. package/dist/esm/node/runtime/utils.js +3 -2
  196. package/dist/esm/shared/VikeNamespace.d.ts +35 -13
  197. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  198. package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
  199. package/dist/esm/shared/createGlobalContextShared.js +51 -0
  200. package/dist/esm/shared/createPageContextShared.d.ts +9 -0
  201. package/dist/esm/shared/createPageContextShared.js +15 -0
  202. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
  203. package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
  204. package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
  205. package/dist/esm/shared/hooks/getHook.d.ts +5 -3
  206. package/dist/esm/shared/hooks/getHook.js +47 -29
  207. package/dist/esm/shared/htmlElementIds.d.ts +2 -0
  208. package/dist/esm/shared/htmlElementIds.js +2 -0
  209. package/dist/esm/shared/page-configs/Config.d.ts +12 -2
  210. package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
  211. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
  212. package/dist/esm/shared/route/executeGuardHook.js +2 -2
  213. package/dist/esm/shared/route/loadPageRoutes.js +2 -1
  214. package/dist/esm/shared/types.d.ts +64 -32
  215. package/dist/esm/types/index.d.ts +1 -5
  216. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  217. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  218. package/dist/esm/utils/catchInfiniteLoop.js +4 -4
  219. package/dist/esm/utils/debug.d.ts +1 -1
  220. package/dist/esm/utils/debug.js +1 -0
  221. package/dist/esm/utils/getGlobalObject.d.ts +1 -1
  222. package/dist/esm/utils/getPublicProxy.d.ts +2 -0
  223. package/dist/esm/utils/getPublicProxy.js +25 -0
  224. package/dist/esm/utils/isImportPath.d.ts +4 -0
  225. package/dist/esm/utils/isImportPath.js +19 -0
  226. package/dist/esm/utils/isScriptFile.d.ts +5 -5
  227. package/dist/esm/utils/isScriptFile.js +23 -20
  228. package/dist/esm/utils/objectAssign.d.ts +1 -1
  229. package/dist/esm/utils/objectAssign.js +6 -10
  230. package/dist/esm/utils/objectReplace.d.ts +1 -1
  231. package/dist/esm/utils/objectReplace.js +4 -4
  232. package/dist/esm/utils/parseNpmPackage.d.ts +19 -0
  233. package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -24
  234. package/dist/esm/utils/path.d.ts +1 -1
  235. package/dist/esm/utils/path.js +12 -2
  236. package/dist/esm/utils/requireResolve.d.ts +20 -7
  237. package/dist/esm/utils/requireResolve.js +148 -53
  238. package/package.json +14 -13
  239. package/dist/cjs/node/runtime/index-common.js +0 -27
  240. package/dist/cjs/utils/makePublicCopy.js +0 -32
  241. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
  242. package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
  243. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
  244. package/dist/esm/node/runtime/index-common.d.ts +0 -8
  245. package/dist/esm/node/runtime/index-common.js +0 -10
  246. package/dist/esm/utils/isNpmPackage.d.ts +0 -17
  247. package/dist/esm/utils/makePublicCopy.d.ts +0 -3
  248. package/dist/esm/utils/makePublicCopy.js +0 -30
@@ -44,6 +44,16 @@ function assertPosixPath(path) {
44
44
  (0, assert_js_1.assert)(path);
45
45
  (0, assert_js_1.assert)(!path.includes('\\'), errMsg(path));
46
46
  }
47
- function pathIsRelative(importPath) {
48
- return importPath.startsWith('./') || importPath.startsWith('../');
47
+ // See also `import { isImportPathRelative } from './isImportPath.js'`
48
+ function pathIsRelative(path) {
49
+ assertPosixPath(path);
50
+ if (path.startsWith('./') || path.startsWith('../')) {
51
+ return true;
52
+ }
53
+ else {
54
+ /* Not true if `path` starts with a hidden directory (i.e. a directory with a name that starts with `.`)
55
+ assert(!path.startsWith('.'))
56
+ */
57
+ return false;
58
+ }
49
59
  }
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.requireResolve = requireResolve;
7
6
  exports.requireResolveOptional = requireResolveOptional;
8
- exports.requireResolveNonUserFile = requireResolveNonUserFile;
9
- exports.requireResolveOptionalNonUserFile = requireResolveOptionalNonUserFile;
7
+ exports.requireResolveOptionalDir = requireResolveOptionalDir;
8
+ exports.requireResolveNpmPackage = requireResolveNpmPackage;
9
+ exports.requireResolveVikeDistFile = requireResolveVikeDistFile;
10
+ exports.getVikeNodeModulesRoot = getVikeNodeModulesRoot;
10
11
  const assert_js_1 = require("./assert.js");
11
12
  const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
12
13
  const assertSetup_js_1 = require("./assertSetup.js");
@@ -14,68 +15,132 @@ const path_js_1 = require("./path.js");
14
15
  const isScriptFile_js_1 = require("./isScriptFile.js");
15
16
  const node_module_1 = require("node:module");
16
17
  const node_path_1 = __importDefault(require("node:path"));
18
+ const parseNpmPackage_js_1 = require("./parseNpmPackage.js");
19
+ const isNullish_js_1 = require("./isNullish.js");
20
+ const debug_js_1 = require("./debug.js");
17
21
  // @ts-ignore `file:///${__filename.split('\\').join('/')}` is shimmed at dist/cjs by dist-cjs-fixup.js.
18
22
  const importMetaUrl = `file:///${__filename.split('\\').join('/')}`;
19
- const require_ = (0, node_module_1.createRequire)(importMetaUrl);
23
+ (0, path_js_1.assertPosixPath)(importMetaUrl);
20
24
  (0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
21
25
  (0, assertSetup_js_1.assertIsNotProductionRuntime)();
22
- function requireResolve_(importPath, cwd, options) {
23
- (0, path_js_1.assertPosixPath)(cwd);
26
+ const debug = (0, debug_js_1.createDebugger)('vike:resolve');
27
+ // - We still can't use import.meta.resolve() as of 23.1.0 (November 2024) because `parent` argument requires an experimental flag.
28
+ // - https://stackoverflow.com/questions/54977743/do-require-resolve-for-es-modules#comment139581675_62272600
29
+ // - Passing context to createRequire(context) isn't equivalent to passing it to the `paths` argument of require.resolve()
30
+ // - https://github.com/brillout/require-test
31
+ // - In practice, I guess it doesn't make a difference? It just seems to be small Node.js weirdness.
32
+ // - The argument createRequire(argument) seems to be overriden by the `paths` argument require.resolve()
33
+ // - For example, passing an empty array to `paths` kills the argument passed to `createRequire()`
34
+ // - Thus, when `paths` is defined, then the context needs to be passed to both createRequire() as well as the `paths` argument of require.resolve()
35
+ function requireResolve_(importPath, importerFilePath, { userRootDir, doNotHandleFileExtension } = {}) {
24
36
  (0, path_js_1.assertPosixPath)(importPath);
25
- cwd = resolveCwd(cwd);
26
- let clean = () => { };
27
- if (!options?.doNotHandleFileExtension) {
28
- clean = addFileExtensionsToRequireResolve();
29
- importPath = removeFileExtention(importPath);
37
+ const contexts = importerFilePath
38
+ ? [importerFilePath]
39
+ : [userRootDir ? getFakeImporterFile(userRootDir) : importMetaUrl];
40
+ addExtraContextForNpmPackageImport(contexts, { importPath, userRootDir });
41
+ let importPathResolvedFilePath;
42
+ let failure;
43
+ for (let context of contexts) {
44
+ (0, path_js_1.assertPosixPath)(context);
45
+ context = ensureFilePrefix(context);
46
+ const require_ = (0, node_module_1.createRequire)(context);
47
+ if (!doNotHandleFileExtension) {
48
+ addFileExtensionsToRequireResolve(require_);
49
+ importPath = removeFileExtention(importPath);
50
+ }
51
+ try {
52
+ importPathResolvedFilePath = require_.resolve(importPath);
53
+ }
54
+ catch (err) {
55
+ if (debug.isActivated) {
56
+ debug('err', err);
57
+ debug('importPath', importPath);
58
+ debug('context', context);
59
+ }
60
+ failure ?? (failure = { err });
61
+ }
62
+ if (importPathResolvedFilePath)
63
+ break;
30
64
  }
31
- let importedFile;
32
- try {
33
- // We still can't use import.meta.resolve() as of 23.1.0 (November 2024) because `parent` argument requires an experimental flag.
34
- // - https://stackoverflow.com/questions/54977743/do-require-resolve-for-es-modules#comment139581675_62272600
35
- importedFile = require_.resolve(importPath, { paths: [cwd] });
65
+ if (!importPathResolvedFilePath) {
66
+ (0, assert_js_1.assert)(failure);
67
+ if (debug.isActivated) {
68
+ debug('FAILURE');
69
+ debug('importPath', importPath);
70
+ debug('importerFilePath', importerFilePath);
71
+ debug('userRootDir', userRootDir);
72
+ debug('doNotHandleFileExtension', doNotHandleFileExtension);
73
+ debug('importMetaUrl', importMetaUrl);
74
+ debug('contexts', contexts);
75
+ }
76
+ return { importPathResolvedFilePath: undefined, err: failure.err, hasFailed: true };
36
77
  }
37
- catch (err) {
38
- clean();
39
- return { importedFile: undefined, err, hasFailed: true };
78
+ else {
79
+ if (failure && debug.isActivated) {
80
+ debug('SUCCESS');
81
+ debug('importPath', importPath);
82
+ debug('contexts', contexts);
83
+ }
84
+ (0, assert_js_1.assert)(importPathResolvedFilePath);
85
+ importPathResolvedFilePath = (0, path_js_1.toPosixPath)(importPathResolvedFilePath);
86
+ return { importPathResolvedFilePath, err: undefined, hasFailed: false };
40
87
  }
41
- clean();
42
- importedFile = (0, path_js_1.toPosixPath)(importedFile);
43
- return { importedFile, err: undefined, hasFailed: false };
44
88
  }
45
- function requireResolveOptional(importPath, cwd) {
46
- const res = requireResolve_(importPath, cwd);
89
+ function requireResolveOptional({ importPath, importerFilePath, userRootDir }) {
90
+ const res = requireResolve_(importPath, importerFilePath, { userRootDir });
47
91
  if (res.hasFailed)
48
92
  return null;
49
- return res.importedFile;
93
+ return res.importPathResolvedFilePath;
50
94
  }
51
- function requireResolveOptionalNonUserFile(importPath, cwd) {
52
- const res = requireResolve_(importPath, cwd, { doNotHandleFileExtension: true });
95
+ function requireResolveOptionalDir({ importPath, importerDir, userRootDir }) {
96
+ const importerFilePath = getFakeImporterFile(importerDir);
97
+ const res = requireResolve_(importPath, importerFilePath, { userRootDir });
53
98
  if (res.hasFailed)
54
99
  return null;
55
- return res.importedFile;
56
- }
57
- function requireResolveNonUserFile(importPath, cwd) {
58
- const res = requireResolve_(importPath, cwd, { doNotHandleFileExtension: true });
59
- if (res.hasFailed)
60
- throw res.err;
61
- return res.importedFile;
100
+ return res.importPathResolvedFilePath;
62
101
  }
63
- function requireResolve(importPath, cwd) {
64
- const res = requireResolve_(importPath, cwd);
102
+ function requireResolveNpmPackage({ importPathNpmPackage, userRootDir }) {
103
+ (0, parseNpmPackage_js_1.assertIsImportPathNpmPackage)(importPathNpmPackage);
104
+ const importerFilePath = getFakeImporterFile(userRootDir);
105
+ const res = requireResolve_(importPathNpmPackage, importerFilePath, { userRootDir });
65
106
  if (res.hasFailed)
66
107
  throw res.err;
67
- return res.importedFile;
108
+ return res.importPathResolvedFilePath;
68
109
  }
69
- function resolveCwd(cwd) {
70
- let prefix = 'file://';
71
- if (process.platform === 'win32')
72
- prefix += '/';
73
- if (cwd.startsWith(prefix)) {
74
- cwd = cwd.slice(prefix.length);
75
- cwd = node_path_1.default.posix.dirname(cwd);
110
+ function requireResolveVikeDistFile(vikeDistFile) {
111
+ const vikeNodeModulesRoot = getVikeNodeModulesRoot();
112
+ (0, path_js_1.assertPosixPath)(vikeNodeModulesRoot);
113
+ (0, path_js_1.assertPosixPath)(vikeDistFile);
114
+ const importPathResolvedFilePath = node_path_1.default.posix.join(vikeNodeModulesRoot, vikeDistFile);
115
+ // Double check
116
+ {
117
+ const res = requireResolve_(importPathResolvedFilePath,
118
+ // No context needed: importPathResolvedFilePath is already resolved and absolute
119
+ null, { doNotHandleFileExtension: true });
120
+ if (res.hasFailed)
121
+ throw res.err;
122
+ (0, assert_js_1.assert)(res.importPathResolvedFilePath === importPathResolvedFilePath);
76
123
  }
77
- (0, assert_js_1.assert)(!cwd.startsWith('file:'));
78
- return cwd;
124
+ return importPathResolvedFilePath;
125
+ }
126
+ function addExtraContextForNpmPackageImport(contexts, { importPath, userRootDir }) {
127
+ // We should add extra context only for npm packages, but unfortunately we cannot always disambiguate between npm package imports and path aliases.
128
+ if (!(0, parseNpmPackage_js_1.isImportPathNpmPackageOrPathAlias)(importPath))
129
+ return;
130
+ const userRootDirFakeFile = userRootDir && getFakeImporterFile(userRootDir);
131
+ [
132
+ // Workaround for monorepo resolve issue: https://github.com/vikejs/vike-react/pull/161/commits/dbaa6643e78015ac2797c237552800fef29b72a7
133
+ userRootDirFakeFile,
134
+ // I can't think of a use case where this would be needed, but let's add one extra last chance to sucessfully resolve some complex monorepo setups
135
+ importMetaUrl
136
+ ]
137
+ .filter(isNullish_js_1.isNotNullish)
138
+ .forEach((context) => {
139
+ const alreadyHasContext = contexts.includes(context) || contexts.includes(ensureFilePrefix(context));
140
+ if (alreadyHasContext)
141
+ return;
142
+ contexts.push(context);
143
+ });
79
144
  }
80
145
  function removeFileExtention(importPath) {
81
146
  // Skip for Bun: https://github.com/vikejs/vike/issues/2204
@@ -93,7 +158,7 @@ function removeFileExtention(importPath) {
93
158
  }
94
159
  return importPath;
95
160
  }
96
- function addFileExtensionsToRequireResolve() {
161
+ function addFileExtensionsToRequireResolve(require_) {
97
162
  const added = [];
98
163
  isScriptFile_js_1.scriptFileExtensionList.forEach((ext) => {
99
164
  (0, assert_js_1.assert)(!ext.includes('.'));
@@ -103,10 +168,40 @@ function addFileExtensionsToRequireResolve() {
103
168
  added.push(ext);
104
169
  }
105
170
  });
106
- const clean = () => {
107
- added.forEach((ext) => {
108
- delete require_.extensions[ext];
109
- });
110
- };
111
- return clean;
171
+ }
172
+ function getVikeNodeModulesRoot() {
173
+ // [RELATIVE_PATH_FROM_DIST] Current file: vike/dist/esm/utils/requireResolve.js
174
+ (0, assert_js_1.assert)(importMetaUrl.includes('/dist/esm/') || importMetaUrl.includes('/dist/cjs/'));
175
+ const vikeNodeModulesRoot = node_path_1.default.posix.join(removeFilePrefix(importMetaUrl), '../../../../');
176
+ return vikeNodeModulesRoot;
177
+ }
178
+ function getFakeImporterFile(dirPath) {
179
+ (0, path_js_1.assertPosixPath)(dirPath);
180
+ (0, assert_js_1.assert)(!dirPath.startsWith('file')); // The file:// prefix is bogus when used with path.posix.join()
181
+ const importerFilePath = node_path_1.default.posix.join(dirPath, 'fakeFileForNodeResolve.js');
182
+ return importerFilePath;
183
+ }
184
+ function ensureFilePrefix(filePath) {
185
+ (0, path_js_1.assertPosixPath)(filePath);
186
+ const filePrefix = getFilePrefix();
187
+ if (!filePath.startsWith(filePrefix)) {
188
+ (0, assert_js_1.assert)(!filePath.startsWith('file'));
189
+ filePath = filePrefix + filePath;
190
+ }
191
+ (0, assert_js_1.assert)(filePath.startsWith(filePrefix));
192
+ return filePath;
193
+ }
194
+ function removeFilePrefix(filePath) {
195
+ const filePrefix = getFilePrefix();
196
+ if (filePath.startsWith(filePrefix)) {
197
+ filePath = filePath.slice(filePrefix.length);
198
+ }
199
+ (0, assert_js_1.assert)(!filePath.startsWith('file'));
200
+ return filePath;
201
+ }
202
+ function getFilePrefix() {
203
+ let prefix = 'file://';
204
+ if (process.platform === 'win32')
205
+ prefix += '/';
206
+ return prefix;
112
207
  }
@@ -3,7 +3,7 @@ export { setGlobalContext_buildEntry } from '../node/runtime/globalContext.js';
3
3
  // Needed by vite-plugin-vercel
4
4
  export { route, getPagesAndRoutes };
5
5
  import { route as routeInternal } from '../shared/route/index.js';
6
- import { getGlobalContextInternal, initGlobalContext_getPagesAndRoutes } from '../node/runtime/globalContext.js';
6
+ import { getGlobalContextServerInternal, initGlobalContext_getPagesAndRoutes } from '../node/runtime/globalContext.js';
7
7
  import { setNodeEnvProduction } from '../utils/assertSetup.js';
8
8
  /**
9
9
  * Used by {@link https://github.com/magne4000/vite-plugin-vercel|vite-plugin-vercel} to compute some rewrite rules and extract { isr } configs.
@@ -13,10 +13,10 @@ import { setNodeEnvProduction } from '../utils/assertSetup.js';
13
13
  async function getPagesAndRoutes() {
14
14
  setNodeEnvProduction();
15
15
  await initGlobalContext_getPagesAndRoutes();
16
- const globalContext = await getGlobalContextInternal();
16
+ const { globalContext } = await getGlobalContextServerInternal();
17
17
  const {
18
18
  //
19
- pageRoutes, pageFilesAll, pageConfigs, allPageIds } = globalContext;
19
+ _pageRoutes: pageRoutes, _pageFilesAll: pageFilesAll, _pageConfigs: pageConfigs, _allPageIds: allPageIds } = globalContext;
20
20
  return {
21
21
  pageRoutes,
22
22
  pageFilesAll,
@@ -1,21 +1,40 @@
1
- export { createPageContext };
2
- declare function createPageContext(urlOriginal: string): Promise<{
3
- _isPageContextObject: boolean;
1
+ export { createPageContextClientSide };
2
+ declare function createPageContextClientSide(urlOriginal: string): Promise<{
3
+ globalContext: {
4
+ isGlobalContext: true;
5
+ _virtualFileExports: unknown;
6
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
7
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
8
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
9
+ _allPageIds: string[];
10
+ config: import("../../types/index.js").ConfigResolved;
11
+ pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
12
+ } & {
13
+ isClientSide: true;
14
+ } & {
15
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
16
+ _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
17
+ };
18
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
19
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
20
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
21
+ _allPageIds: string[];
22
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
23
+ _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
4
24
  isClientSide: boolean;
5
25
  isPrerendering: boolean;
6
26
  urlOriginal: string;
7
- _objectCreatedByVike: boolean;
8
27
  _urlHandler: null;
9
28
  _urlRewrite: null;
10
29
  _baseServer: string;
11
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
12
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
13
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
14
- _allPageIds: string[];
15
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
16
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
17
30
  } & {
18
31
  urlParsed: import("./utils.js").UrlPublic;
19
32
  urlPathname: string;
20
33
  url: string;
34
+ } & {
35
+ config: import("../../types/index.js").ConfigResolved;
36
+ _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
37
+ _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
38
+ _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
39
+ isPageContext: true;
21
40
  }>;
@@ -1,33 +1,34 @@
1
- export { createPageContext };
2
- import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
1
+ export { createPageContextClientSide };
2
+ import { createPageContextShared } from '../../shared/createPageContextShared.js';
3
3
  import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
4
- import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
5
4
  import { getBaseServer } from './getBaseServer.js';
6
- import { assert, isBaseServer, objectAssign } from './utils.js';
7
- // @ts-ignore
8
- import * as virtualFileExports from 'virtual:vike:importUserCode:client:client-routing';
9
- const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = getPageConfigsRuntime(virtualFileExports);
10
- async function createPageContext(urlOriginal) {
11
- const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
5
+ import { getGlobalContextClientInternal } from './globalContext.js';
6
+ import { assert, augmentType, isBaseServer, objectAssign } from './utils.js';
7
+ async function createPageContextClientSide(urlOriginal) {
8
+ const globalContext = await getGlobalContextClientInternal();
12
9
  const baseServer = getBaseServer();
13
10
  assert(isBaseServer(baseServer));
14
- const pageContext = {
15
- _isPageContextObject: true,
11
+ const pageContextCreated = {
12
+ /* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
13
+ ...globalContext, // least precedence
14
+ */
15
+ globalContext,
16
+ _pageFilesAll: globalContext._pageFilesAll,
17
+ _pageConfigs: globalContext._pageConfigs,
18
+ _pageConfigGlobal: globalContext._pageConfigGlobal,
19
+ _allPageIds: globalContext._allPageIds,
20
+ _pageRoutes: globalContext._pageRoutes,
21
+ _onBeforeRouteHook: globalContext._onBeforeRouteHook,
16
22
  isClientSide: true,
17
23
  isPrerendering: false,
18
24
  urlOriginal,
19
- _objectCreatedByVike: true,
20
25
  _urlHandler: null,
21
26
  _urlRewrite: null,
22
- _baseServer: baseServer,
23
- _pageFilesAll: pageFilesAll,
24
- _pageConfigs: pageConfigs,
25
- _pageConfigGlobal: pageConfigGlobal,
26
- _allPageIds: allPageIds,
27
- _pageRoutes: pageRoutes,
28
- _onBeforeRouteHook: onBeforeRouteHook
27
+ _baseServer: baseServer
29
28
  };
30
- const pageContextUrlComputed = getPageContextUrlComputed(pageContext);
31
- objectAssign(pageContext, pageContextUrlComputed);
32
- return pageContext;
29
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
30
+ objectAssign(pageContextCreated, pageContextUrlComputed);
31
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal);
32
+ augmentType(pageContextCreated, pageContextAugmented);
33
+ return pageContextCreated;
33
34
  }
@@ -3,11 +3,11 @@ export { getPageContextFromHooks_serialized };
3
3
  export { getPageContextFromServerHooks };
4
4
  export { getPageContextFromClientHooks };
5
5
  export { setPageContextInitIsPassedToClient };
6
- import { assert, assertUsage, hasProp, objectAssign, getProjectError, redirectHard, executeHook, isObject, getGlobalObject } from './utils.js';
6
+ import { assert, assertUsage, hasProp, objectAssign, getProjectError, redirectHard, isObject, getGlobalObject } from './utils.js';
7
7
  import { parse } from '@brillout/json-serializer/parse';
8
- import { getPageContextSerializedInHtml } from '../shared/getPageContextSerializedInHtml.js';
8
+ import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
9
9
  import { analyzePageServerSide } from '../../shared/getPageFiles/analyzePageServerSide.js';
10
- import { getHook } from '../../shared/hooks/getHook.js';
10
+ import { getHookFromPageContext } from '../../shared/hooks/getHook.js';
11
11
  import { preparePageContextForUserConsumptionClientSide } from '../shared/preparePageContextForUserConsumptionClientSide.js';
12
12
  import { removeBuiltInOverrides } from './getPageContext/removeBuiltInOverrides.js';
13
13
  import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
@@ -18,6 +18,7 @@ import { executeGuardHook } from '../../shared/route/executeGuardHook.js';
18
18
  import { AbortRender, isAbortPageContext } from '../../shared/route/abort.js';
19
19
  import { pageContextInitIsPassedToClient } from '../../shared/misc/pageContextInitIsPassedToClient.js';
20
20
  import { isServerSideError } from '../../shared/misc/isServerSideError.js';
21
+ import { executeHook } from '../../shared/hooks/executeHook.js';
21
22
  const globalObject = getGlobalObject('client-routing-runtime/getPageContextFromHooks.ts', {});
22
23
  // TODO/eventually: rename
23
24
  function getPageContextFromHooks_serialized() {
@@ -101,7 +102,7 @@ async function getPageContextFromClientHooks(pageContext, isErrorPage) {
101
102
  return pageContextFromClientHooks;
102
103
  }
103
104
  async function executeHookClientSide(hookName, pageContext) {
104
- const hook = getHook(pageContext, hookName);
105
+ const hook = getHookFromPageContext(pageContext, hookName);
105
106
  if (!hook) {
106
107
  // No hook defined or hook's env.client is false
107
108
  return {};
@@ -0,0 +1,20 @@
1
+ export { getGlobalContextClientInternal };
2
+ export type { GlobalContextClient };
3
+ import type { GlobalContextSharedPublic } from '../../shared/createGlobalContextShared.js';
4
+ type GlobalContextClient = GlobalContextSharedPublic & Pick<GlobalContextClientInternal, 'isClientSide'> & Vike.GlobalContext & Vike.GlobalContextClient & {};
5
+ type GlobalContextClientInternal = Awaited<ReturnType<typeof getGlobalContextClientInternal>>;
6
+ declare const getGlobalContextClientInternal: () => Promise<{
7
+ isGlobalContext: true;
8
+ _virtualFileExports: unknown;
9
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
10
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
11
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
12
+ _allPageIds: string[];
13
+ config: import("../../types/index.js").ConfigResolved;
14
+ pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
15
+ } & {
16
+ isClientSide: true;
17
+ } & {
18
+ _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
19
+ _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
20
+ }>;
@@ -0,0 +1,13 @@
1
+ export { getGlobalContextClientInternal };
2
+ import { createGetGlobalContextClient } from '../shared/createGetGlobalContextClient.js';
3
+ import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
4
+ // @ts-ignore
5
+ import * as virtualFileExports from 'virtual:vike:importUserCode:client:client-routing';
6
+ const getGlobalContextClientInternal = createGetGlobalContextClient(virtualFileExports, true, addGlobalContext);
7
+ async function addGlobalContext(globalContext) {
8
+ const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
9
+ return {
10
+ _pageRoutes: pageRoutes,
11
+ _onBeforeRouteHook: onBeforeRouteHook
12
+ };
13
+ }
@@ -3,9 +3,9 @@ import { isSameAsCurrentUrl, skipLink } from './skipLink.js';
3
3
  import { renderPageClientSide } from './renderPageClientSide.js';
4
4
  import { scrollToHashOrTop } from './setScrollPosition.js';
5
5
  function initOnLinkClick() {
6
- document.addEventListener('click', onClick);
6
+ document.addEventListener('click', onLinkClick);
7
7
  }
8
- async function onClick(ev) {
8
+ async function onLinkClick(ev) {
9
9
  if (!isNormalLeftClick(ev))
10
10
  return;
11
11
  const linkTag = findLinkTag(ev.target);
@@ -10,7 +10,7 @@ import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/
10
10
  import { skipLink } from './skipLink.js';
11
11
  import { disableClientRouting } from './renderPageClientSide.js';
12
12
  import { isClientSideRoutable } from './isClientSideRoutable.js';
13
- import { createPageContext } from './createPageContext.js';
13
+ import { createPageContextClientSide } from './createPageContext.js';
14
14
  import { route } from '../../shared/route/index.js';
15
15
  import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
16
16
  import { getPageContextFromServerHooks } from './getPageContextFromHooks.js';
@@ -238,7 +238,7 @@ function isExpired(found) {
238
238
  }
239
239
  // TODO/next-major-release: make it sync
240
240
  async function getPageContextLink(urlOfLink) {
241
- const pageContextLink = await createPageContext(urlOfLink);
241
+ const pageContextLink = await createPageContextClientSide(urlOfLink);
242
242
  let pageContextFromRoute;
243
243
  try {
244
244
  pageContextFromRoute = await route(pageContextLink);
@@ -3,13 +3,13 @@ export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { firstRenderStartPromise };
5
5
  export { getPageContextClient };
6
- import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, executeHook, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
6
+ import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
7
7
  import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient } from './getPageContextFromHooks.js';
8
- import { createPageContext } from './createPageContext.js';
8
+ import { createPageContextClientSide } from './createPageContext.js';
9
9
  import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache } from './prefetch.js';
10
10
  import { assertInfo, assertWarning, isReact } from './utils.js';
11
11
  import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
12
- import { assertHook, getHook } from '../../shared/hooks/getHook.js';
12
+ import { assertHook, getHookFromPageContext } from '../../shared/hooks/getHook.js';
13
13
  import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
14
14
  import { pushHistoryState } from './history.js';
15
15
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
@@ -21,6 +21,7 @@ import { getErrorPageId } from '../../shared/error-page.js';
21
21
  import { setPageContextCurrent } from './getPageContextCurrent.js';
22
22
  import { getRouteStringParameterList } from '../../shared/route/resolveRouteString.js';
23
23
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
24
+ import { executeHook } from '../../shared/hooks/executeHook.js';
24
25
  const globalObject = getGlobalObject('client-routing-runtime/renderPageClientSide.ts', (() => {
25
26
  const { promise: firstRenderStartPromise, resolve: firstRenderStartPromiseResolve } = genPromise();
26
27
  return {
@@ -62,7 +63,7 @@ async function renderPageClientSide(renderArgs) {
62
63
  assertHook(previousPageContext, 'onPageTransitionStart');
63
64
  if (!globalObject.isTransitioning) {
64
65
  globalObject.isTransitioning = true;
65
- const onPageTransitionStartHook = getHook(previousPageContext, 'onPageTransitionStart');
66
+ const onPageTransitionStartHook = getHookFromPageContext(previousPageContext, 'onPageTransitionStart');
66
67
  if (onPageTransitionStartHook) {
67
68
  const hook = onPageTransitionStartHook;
68
69
  const { hookFn } = hook;
@@ -215,7 +216,7 @@ async function renderPageClientSide(renderArgs) {
215
216
  }
216
217
  }
217
218
  async function getPageContextBegin(isForErrorPage) {
218
- const pageContext = await createPageContext(urlOriginal);
219
+ const pageContext = await createPageContextClientSide(urlOriginal);
219
220
  objectAssign(pageContext, {
220
221
  isBackwardNavigation,
221
222
  isClientSideNavigation,
@@ -429,7 +430,7 @@ async function renderPageClientSide(renderArgs) {
429
430
  // onHydrationEnd()
430
431
  if (isFirstRender && !onRenderClientError) {
431
432
  assertHook(pageContext, 'onHydrationEnd');
432
- const hook = getHook(pageContext, 'onHydrationEnd');
433
+ const hook = getHookFromPageContext(pageContext, 'onHydrationEnd');
433
434
  if (hook) {
434
435
  const { hookFn } = hook;
435
436
  try {
@@ -452,7 +453,7 @@ async function renderPageClientSide(renderArgs) {
452
453
  globalObject.isTransitioning = undefined;
453
454
  assert(previousPageContext);
454
455
  assertHook(previousPageContext, 'onPageTransitionEnd');
455
- const hook = getHook(previousPageContext, 'onPageTransitionEnd');
456
+ const hook = getHookFromPageContext(previousPageContext, 'onPageTransitionEnd');
456
457
  if (hook) {
457
458
  const { hookFn } = hook;
458
459
  try {
@@ -1,6 +1,5 @@
1
1
  export * from '../../utils/assert.js';
2
2
  export * from '../../utils/assertSingleInstance.js';
3
- export * from '../../shared/hooks/executeHook.js';
4
3
  export * from '../../utils/getGlobalObject.js';
5
4
  export * from '../../utils/hasProp.js';
6
5
  export * from '../../utils/isBrowser.js';
@@ -4,7 +4,6 @@ import { onLoad } from './onLoad.js';
4
4
  onLoad();
5
5
  export * from '../../utils/assert.js';
6
6
  export * from '../../utils/assertSingleInstance.js';
7
- export * from '../../shared/hooks/executeHook.js';
8
7
  export * from '../../utils/getGlobalObject.js';
9
8
  export * from '../../utils/hasProp.js';
10
9
  export * from '../../utils/isBrowser.js';
@@ -0,0 +1 @@
1
+ export { getGlobalContext, getGlobalContext as getGlobalContextAsync, getGlobalContextSync } from './shared/createGetGlobalContextClient.js';
@@ -0,0 +1,4 @@
1
+ import { isBrowser } from '../utils/isBrowser.js';
2
+ import { assert } from '../utils/assert.js';
3
+ assert(isBrowser());
4
+ export { getGlobalContext, getGlobalContext as getGlobalContextAsync, getGlobalContextSync } from './shared/createGetGlobalContextClient.js';
@@ -1,9 +1,7 @@
1
1
  import { assertUsage } from './server-routing-runtime/utils.js';
2
2
  assertUsage(false, [
3
- 'Following imports are forbidden on the client-side:',
3
+ 'Server imports are forbidden on the client-side:',
4
4
  " import { something } from 'vike/server'",
5
- // TODO/v1-release: remove this line (also remove s above in `s/Following imports/Following import/`)
6
- " import { something } from 'vike'",
7
5
  'Did you mean the following instead?',
8
6
  " import { something } from 'vike/client/router'"
9
7
  ].join('\n'), { showStackTrace: true });
@@ -0,0 +1,36 @@
1
+ export { createPageContextClientSide };
2
+ declare function createPageContextClientSide(): Promise<{
3
+ globalContext: {
4
+ isGlobalContext: true;
5
+ _virtualFileExports: unknown;
6
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
7
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
8
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
9
+ _allPageIds: string[];
10
+ config: import("../../types/index.js").ConfigResolved;
11
+ pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
12
+ } & {
13
+ isClientSide: true;
14
+ } & object;
15
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
16
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
17
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
18
+ _allPageIds: string[];
19
+ isPrerendering: boolean;
20
+ isClientSide: boolean;
21
+ isHydration: true;
22
+ isBackwardNavigation: null;
23
+ _hasPageContextFromServer: true;
24
+ _hasPageContextFromClient: false;
25
+ } & {
26
+ pageId: string;
27
+ routeParams: Record<string, string>;
28
+ } & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
29
+ _pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
30
+ } & {
31
+ config: import("../../types/index.js").ConfigResolved;
32
+ _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
33
+ _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
34
+ _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
35
+ isPageContext: true;
36
+ }>;