vike 0.4.152 → 0.4.153-commit-01ab602

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 (93) hide show
  1. package/dist/cjs/node/cli/bin.js +2 -2
  2. package/dist/cjs/node/plugin/index.js +2 -2
  3. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +2 -2
  4. package/dist/cjs/node/plugin/plugins/envVars.js +1 -1
  5. package/dist/cjs/node/plugin/plugins/{assertFileEnv.js → fileEnv.js} +4 -4
  6. package/dist/cjs/node/plugin/plugins/importBuild/index.js +1 -1
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -9
  8. package/dist/cjs/node/prerender/index.js +1 -1
  9. package/dist/cjs/node/prerender/runPrerender.js +21 -13
  10. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +5 -3
  11. package/dist/cjs/node/runtime/html/stream.js +2 -1
  12. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +2 -1
  13. package/dist/cjs/node/runtime/renderPage/isNewError.js +1 -1
  14. package/dist/cjs/node/runtime/renderPage/{loadPageFilesServerSide.js → loadUserFilesServerSide.js} +5 -5
  15. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -4
  16. package/dist/cjs/node/runtime/renderPage.js +2 -2
  17. package/dist/cjs/node/runtime/utils.js +1 -2
  18. package/dist/cjs/shared/hooks/getHook.js +14 -8
  19. package/dist/cjs/shared/misc/isRenderFailure.js +4 -0
  20. package/dist/cjs/shared/misc/pageContextInitIsPassedToClient.js +4 -0
  21. package/dist/cjs/shared/route/abort.js +15 -4
  22. package/dist/cjs/shared/route/loadPageRoutes.js +1 -9
  23. package/dist/cjs/utils/isSameErrorMessage.js +10 -0
  24. package/dist/cjs/utils/projectInfo.js +1 -1
  25. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +0 -1
  26. package/dist/esm/client/client-routing-runtime/createPageContext.js +0 -3
  27. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +28 -33
  28. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +42 -58
  29. package/dist/esm/client/client-routing-runtime/installClientRouter.d.ts +1 -1
  30. package/dist/esm/client/client-routing-runtime/installClientRouter.js +8 -2
  31. package/dist/esm/client/client-routing-runtime/onBrowserHistoryNavigation.js +2 -2
  32. package/dist/esm/client/client-routing-runtime/onLinkClick.js +2 -2
  33. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +1 -3
  34. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.js +1 -1
  35. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +0 -1
  36. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  37. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +1 -1
  38. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +298 -204
  39. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -1
  40. package/dist/esm/client/client-routing-runtime/utils.js +1 -1
  41. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +2 -2
  42. package/dist/esm/client/server-routing-runtime/getPageContext.js +5 -4
  43. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +4 -2
  44. package/dist/esm/client/shared/getPageContextSerializedInHtml.d.ts +0 -1
  45. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +1 -4
  46. package/dist/esm/client/shared/{loadPageFilesClientSide.d.ts → loadUserFilesClientSide.d.ts} +7 -6
  47. package/dist/esm/client/shared/{loadPageFilesClientSide.js → loadUserFilesClientSide.js} +4 -4
  48. package/dist/esm/node/cli/bin.js +3 -3
  49. package/dist/esm/node/plugin/index.js +2 -2
  50. package/dist/esm/node/plugin/plugins/autoFullBuild.js +3 -3
  51. package/dist/esm/node/plugin/plugins/envVars.js +1 -1
  52. package/dist/esm/node/plugin/plugins/fileEnv.d.ts +3 -0
  53. package/dist/esm/node/plugin/plugins/{assertFileEnv.js → fileEnv.js} +3 -3
  54. package/dist/esm/node/plugin/plugins/importBuild/index.js +1 -1
  55. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -9
  56. package/dist/esm/node/prerender/index.d.ts +1 -1
  57. package/dist/esm/node/prerender/index.js +1 -1
  58. package/dist/esm/node/prerender/runPrerender.d.ts +8 -8
  59. package/dist/esm/node/prerender/runPrerender.js +22 -14
  60. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +0 -1
  61. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +5 -3
  62. package/dist/esm/node/runtime/html/stream.js +3 -2
  63. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +2 -1
  64. package/dist/esm/node/runtime/renderPage/isNewError.js +2 -2
  65. package/dist/esm/node/runtime/renderPage/{loadPageFilesServerSide.d.ts → loadUserFilesServerSide.d.ts} +6 -6
  66. package/dist/esm/node/runtime/renderPage/{loadPageFilesServerSide.js → loadUserFilesServerSide.js} +4 -4
  67. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +2 -2
  68. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -4
  69. package/dist/esm/node/runtime/renderPage.js +2 -2
  70. package/dist/esm/node/runtime/utils.d.ts +1 -2
  71. package/dist/esm/node/runtime/utils.js +1 -2
  72. package/dist/esm/shared/hooks/getHook.d.ts +2 -0
  73. package/dist/esm/shared/hooks/getHook.js +13 -7
  74. package/dist/esm/shared/misc/isRenderFailure.d.ts +1 -0
  75. package/dist/esm/shared/misc/isRenderFailure.js +1 -0
  76. package/dist/esm/shared/misc/pageContextInitIsPassedToClient.d.ts +1 -0
  77. package/dist/esm/shared/misc/pageContextInitIsPassedToClient.js +1 -0
  78. package/dist/esm/shared/page-configs/Config.d.ts +1 -1
  79. package/dist/esm/shared/route/abort.d.ts +1 -1
  80. package/dist/esm/shared/route/abort.js +16 -5
  81. package/dist/esm/shared/route/loadPageRoutes.js +1 -9
  82. package/dist/esm/utils/isSameErrorMessage.d.ts +2 -0
  83. package/dist/esm/utils/isSameErrorMessage.js +7 -0
  84. package/dist/esm/utils/projectInfo.d.ts +2 -2
  85. package/dist/esm/utils/projectInfo.js +1 -1
  86. package/package.json +2 -2
  87. package/dist/cjs/utils/dynamicImport.js +0 -8
  88. package/dist/cjs/utils/isEquivalentError.js +0 -18
  89. package/dist/esm/node/plugin/plugins/assertFileEnv.d.ts +0 -3
  90. package/dist/esm/utils/dynamicImport.d.ts +0 -2
  91. package/dist/esm/utils/dynamicImport.js +0 -4
  92. package/dist/esm/utils/isEquivalentError.d.ts +0 -2
  93. package/dist/esm/utils/isEquivalentError.js +0 -15
@@ -12,8 +12,8 @@ cli
12
12
  assertOptions();
13
13
  const { partial, noExtraDir, base, parallel, outDir, configFile } = options;
14
14
  const root = options.root && (0, path_1.resolve)(options.root);
15
- await (0, runPrerender_js_1.prerenderFromCLI)({ partial, noExtraDir, base, root, parallel, outDir, configFile });
16
- (0, runPrerender_js_1.prerenderForceExit)();
15
+ await (0, runPrerender_js_1.runPrerenderFromCLI)({ partial, noExtraDir, base, root, parallel, outDir, configFile });
16
+ (0, runPrerender_js_1.runPrerender_forceExit)();
17
17
  });
18
18
  function assertOptions() {
19
19
  // Using process.argv because cac convert names to camelCase
@@ -27,7 +27,7 @@ const extensionsAssets_js_1 = require("./plugins/extensionsAssets.js");
27
27
  const baseUrls_js_1 = require("./plugins/baseUrls.js");
28
28
  const envVars_js_1 = require("./plugins/envVars.js");
29
29
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
30
- const assertFileEnv_js_1 = require("./plugins/assertFileEnv.js");
30
+ const fileEnv_js_1 = require("./plugins/fileEnv.js");
31
31
  (0, utils_js_2.markEnvAsVite)();
32
32
  // Return as `any` to avoid Plugin type mismatches when there are multiple Vite versions installed
33
33
  function plugin(vikeConfig) {
@@ -50,7 +50,7 @@ function plugin(vikeConfig) {
50
50
  (0, extensionsAssets_js_1.extensionsAssets)(),
51
51
  (0, baseUrls_js_1.baseUrls)(vikeConfig),
52
52
  (0, envVars_js_1.envVarsPlugin)(),
53
- (0, assertFileEnv_js_1.assertFileEnv)()
53
+ (0, fileEnv_js_1.fileEnv)()
54
54
  ];
55
55
  return plugins;
56
56
  }
@@ -50,7 +50,7 @@ function autoFullBuild() {
50
50
  order: 'post',
51
51
  handler() {
52
52
  if (forceExit) {
53
- (0, runPrerender_js_1.prerenderForceExit)();
53
+ (0, runPrerender_js_1.runPrerender_forceExit)();
54
54
  }
55
55
  }
56
56
  }
@@ -84,7 +84,7 @@ async function triggerFullBuild(config, configVike, bundle) {
84
84
  }
85
85
  });
86
86
  if (configVike.prerender && !configVike.prerender.disableAutoRun) {
87
- await (0, runPrerender_js_1.prerenderFromAutoFullBuild)({ viteConfig: configInline });
87
+ await (0, runPrerender_js_1.runPrerenderFromAutoFullBuild)({ viteConfig: configInline });
88
88
  forceExit = true;
89
89
  }
90
90
  }
@@ -7,7 +7,7 @@ function envVarsPlugin() {
7
7
  let envsAll;
8
8
  let config;
9
9
  return {
10
- name: 'vike:env',
10
+ name: 'vike:envVars',
11
11
  enforce: 'post',
12
12
  configResolved(config_) {
13
13
  config = config_;
@@ -3,16 +3,16 @@ 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.assertFileEnv = void 0;
6
+ exports.fileEnv = void 0;
7
7
  const utils_js_1 = require("../utils.js");
8
8
  const extractAssetsPlugin_js_1 = require("./extractAssetsPlugin.js");
9
9
  const extractExportNamesPlugin_js_1 = require("./extractExportNamesPlugin.js");
10
10
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
11
- function assertFileEnv() {
11
+ function fileEnv() {
12
12
  let config;
13
13
  let isDev = false;
14
14
  return {
15
- name: 'vike:assertFileEnv',
15
+ name: 'vike:fileEnv',
16
16
  // - We need to set `enforce: 'pre'` because, otherwise, the resolvedId() hook of Vite's internal plugin `vite:resolve` is called before and it doesn't seem to call `this.resolve()` which means that the resolveId() hook below is never called.
17
17
  // - Vite's `vite:resolve` plugin: https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/resolve.ts#L105
18
18
  // - It's actually a good thing if the resolveId() hook below is the first one to be called because it doesn't actually resolve any ID, so all other resolveId() hooks will be called as normal. And with `this.resolve()` we get the information we want from all other resolvedId() hooks.
@@ -104,4 +104,4 @@ function assertFileEnv() {
104
104
  }
105
105
  };
106
106
  }
107
- exports.assertFileEnv = assertFileEnv;
107
+ exports.fileEnv = fileEnv;
@@ -51,7 +51,7 @@ function getEntryCode(config, configVike) {
51
51
  ' setImportBuildGetters({',
52
52
  ` pageFiles: () => pageFiles,`,
53
53
  // TODO: rename clientManifest -> assetManifest
54
- ` clientManifest: () => { return ${ASSETS_MAP} },`,
54
+ ` clientManifest: () => (${ASSETS_MAP}),`,
55
55
  // TODO: rename pluginManifest -> vikeManifest
56
56
  ` pluginManifest: () => (${JSON.stringify(vikeManifest, null, 2)}),`,
57
57
  ' });',
@@ -834,7 +834,7 @@ function getConfigName(filePath) {
834
834
  if ((0, transpileAndExecuteFile_js_1.isTmpFile)(filePath))
835
835
  return null;
836
836
  const fileName = path_1.default.posix.basename(filePath);
837
- assertNoUnexpectedPlusSign(filePath, fileName);
837
+ // assertNoUnexpectedPlusSign(filePath, fileName)
838
838
  const basename = fileName.split('.')[0];
839
839
  if (!basename.startsWith('+')) {
840
840
  return null;
@@ -844,14 +844,6 @@ function getConfigName(filePath) {
844
844
  return configName;
845
845
  }
846
846
  }
847
- function assertNoUnexpectedPlusSign(filePath, fileName) {
848
- const dirs = path_1.default.posix.dirname(filePath).split('/');
849
- dirs.forEach((dir, i) => {
850
- const dirPath = dirs.slice(0, i + 1).join('/');
851
- (0, utils_js_1.assertUsage)(!dir.includes('+'), `Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`);
852
- });
853
- (0, utils_js_1.assertUsage)(!fileName.slice(1).includes('+'), `Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`);
854
- }
855
847
  async function loadConfigFile(configFilePath, userRootDir, visited) {
856
848
  const { filePathAbsoluteFilesystem } = configFilePath;
857
849
  assertNoInfiniteLoop(visited, filePathAbsoluteFilesystem);
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.prerender = void 0;
4
4
  var runPrerender_js_1 = require("./runPrerender.js");
5
- Object.defineProperty(exports, "prerender", { enumerable: true, get: function () { return runPrerender_js_1.prerenderFromAPI; } });
5
+ Object.defineProperty(exports, "prerender", { enumerable: true, get: function () { return runPrerender_js_1.runPrerenderFromAPI; } });
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.prerenderForceExit = exports.prerenderFromAutoFullBuild = exports.prerenderFromCLI = exports.prerenderFromAPI = void 0;
29
+ exports.runPrerender_forceExit = exports.runPrerenderFromAutoFullBuild = exports.runPrerenderFromCLI = exports.runPrerenderFromAPI = void 0;
30
30
  require("../runtime/page-files/setup.js");
31
31
  const path_1 = __importDefault(require("path"));
32
32
  const index_js_1 = require("../../shared/route/index.js");
@@ -47,24 +47,25 @@ const error_page_js_1 = require("../../shared/error-page.js");
47
47
  const addUrlComputedProps_js_1 = require("../../shared/addUrlComputedProps.js");
48
48
  const assertPathIsFilesystemAbsolute_js_1 = require("../../utils/assertPathIsFilesystemAbsolute.js");
49
49
  const abort_js_1 = require("../../shared/route/abort.js");
50
- const loadPageFilesServerSide_js_1 = require("../runtime/renderPage/loadPageFilesServerSide.js");
50
+ const loadUserFilesServerSide_js_1 = require("../runtime/renderPage/loadUserFilesServerSide.js");
51
51
  const getHook_js_1 = require("../../shared/hooks/getHook.js");
52
52
  const noRouteMatch_js_1 = require("../../shared/route/noRouteMatch.js");
53
53
  const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js");
54
- async function prerenderFromAPI(options = {}) {
54
+ async function runPrerenderFromAPI(options = {}) {
55
55
  await runPrerender(options, 'prerender()');
56
56
  }
57
- exports.prerenderFromAPI = prerenderFromAPI;
58
- async function prerenderFromCLI(options) {
57
+ exports.runPrerenderFromAPI = runPrerenderFromAPI;
58
+ async function runPrerenderFromCLI(options) {
59
59
  await runPrerender(options, '$ vike prerender');
60
60
  }
61
- exports.prerenderFromCLI = prerenderFromCLI;
62
- async function prerenderFromAutoFullBuild(options) {
61
+ exports.runPrerenderFromCLI = runPrerenderFromCLI;
62
+ async function runPrerenderFromAutoFullBuild(options) {
63
63
  await runPrerender(options, null);
64
64
  }
65
- exports.prerenderFromAutoFullBuild = prerenderFromAutoFullBuild;
65
+ exports.runPrerenderFromAutoFullBuild = runPrerenderFromAutoFullBuild;
66
66
  async function runPrerender(options, manuallyTriggered) {
67
67
  checkOutdatedOptions(options);
68
+ (0, getHook_js_1.setIsPrerenderering)();
68
69
  const logLevel = !!options.onPagePrerender ? 'warn' : 'info';
69
70
  if (logLevel === 'info') {
70
71
  console.log(`${picocolors_1.default.cyan(`vike v${utils_js_1.projectInfo.projectVersion}`)} ${picocolors_1.default.green('pre-rendering HTML...')}`);
@@ -297,7 +298,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, renderContext, doNo
297
298
  }
298
299
  ]
299
300
  });
300
- (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageFilesServerSide_js_1.loadPageFilesServerSide)(pageContext));
301
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
301
302
  prerenderContext.pageContexts.push(pageContext);
302
303
  })));
303
304
  }
@@ -477,7 +478,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
477
478
  (0, utils_js_1.assert)(pageContextFromRoute._pageId);
478
479
  (0, utils_js_1.objectAssign)(pageContext, pageContextFromRoute);
479
480
  const { _pageId: pageId } = pageContext;
480
- (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageFilesServerSide_js_1.loadPageFilesServerSide)(pageContext));
481
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
481
482
  let usesClientRouter;
482
483
  {
483
484
  if (pageContext._pageConfigs.length > 0) {
@@ -700,7 +701,7 @@ function isSameUrl(url1, url2) {
700
701
  function normalizeUrl(url) {
701
702
  return '/' + url.split('/').filter(Boolean).join('/');
702
703
  }
703
- function prerenderForceExit() {
704
+ function runPrerender_forceExit() {
704
705
  // Force exit; known situations where pre-rendering is hanging:
705
706
  // - https://github.com/vikejs/vike/discussions/774#discussioncomment-5584551
706
707
  // - https://github.com/vikejs/vike/issues/807#issuecomment-1519010902
@@ -710,10 +711,17 @@ function prerenderForceExit() {
710
711
  assertInfo(false, "Pre-rendering was forced exit. (Didn't gracefully exit because the event queue isn't empty. This is usally fine, see ...", { onlyOnce: false })
711
712
  */
712
713
  }
713
- exports.prerenderForceExit = prerenderForceExit;
714
+ exports.runPrerender_forceExit = runPrerender_forceExit;
714
715
  function assertIsNotAbort(err, urlOr404) {
715
716
  if (!(0, abort_js_1.isAbortError)(err))
716
717
  return;
717
718
  const pageContextAbort = err._pageContextAbort;
718
- (0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(pageContextAbort._abortCall)} intercepted while pre-rendering ${urlOr404} but ${picocolors_1.default.cyan(pageContextAbort._abortCaller)} isn't supported for pre-rendered pages`);
719
+ const hookLoc = (0, utils_js_1.isUserHookError)(err);
720
+ (0, utils_js_1.assert)(hookLoc);
721
+ const thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
722
+ const abortCaller = pageContextAbort._abortCaller;
723
+ (0, utils_js_1.assert)(abortCaller);
724
+ const abortCall = pageContextAbort._abortCall;
725
+ (0, utils_js_1.assert)(abortCall);
726
+ (0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOr404} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
719
727
  }
@@ -10,6 +10,8 @@ const error_page_js_1 = require("../../../shared/error-page.js");
10
10
  const addIs404ToPageProps_js_1 = require("../../../shared/addIs404ToPageProps.js");
11
11
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
12
12
  const notSerializable_js_1 = require("../../../shared/notSerializable.js");
13
+ const pageContextInitIsPassedToClient_js_1 = require("../../../shared/misc/pageContextInitIsPassedToClient.js");
14
+ const isRenderFailure_js_1 = require("../../../shared/misc/isRenderFailure.js");
13
15
  const PASS_TO_CLIENT = [
14
16
  'abortReason',
15
17
  '_urlRewrite',
@@ -19,11 +21,11 @@ const PASS_TO_CLIENT = [
19
21
  /* Not needed on the client-side
20
22
  '_abortCaller',
21
23
  */
22
- '_pageContextInitHasClientData',
24
+ pageContextInitIsPassedToClient_js_1.pageContextInitIsPassedToClient,
23
25
  '_pageId',
24
26
  'data' // for data() hook
25
27
  ];
26
- const PASS_TO_CLIENT_ERROR_PAGE = ['pageProps', 'is404', '_isError'];
28
+ const PASS_TO_CLIENT_ERROR_PAGE = ['pageProps', 'is404', isRenderFailure_js_1.isRenderFailure];
27
29
  function serializePageContextClientSide(pageContext) {
28
30
  const passToClient = getPassToClient(pageContext);
29
31
  const pageContextClient = {};
@@ -32,7 +34,7 @@ function serializePageContextClientSide(pageContext) {
32
34
  pageContextClient[prop] = pageContext[prop];
33
35
  });
34
36
  if (Object.keys(pageContext._pageContextInit).some((p) => passToClient.includes(p))) {
35
- pageContextClient._pageContextInitHasClientData = true;
37
+ pageContextClient._pageContextInitIsPassedToClient = true;
36
38
  }
37
39
  let pageContextSerialized;
38
40
  try {
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.isStreamWritableNode = exports.isStreamWritableWeb = exports.streamPipeNodeToString = exports.streamReadableWebToString = exports.inferStreamName = exports.getStreamName = exports.isStreamReadableNode = exports.isStreamReadableWeb = exports.isStreamPipeNode = exports.isStreamPipeWeb = exports.isStream = exports.pipeToStreamWritableWeb = exports.pipeToStreamWritableNode = exports.getStreamReadableWeb = exports.getStreamReadableNode = exports.pipeNodeStream = exports.pipeWebStream = exports.pipeStream = exports.stampPipe = exports.streamToString = exports.processStream = void 0;
7
7
  const utils_js_1 = require("../utils.js");
8
8
  const react_streaming_js_1 = require("./stream/react-streaming.js");
9
+ const import_1 = require("@brillout/import");
9
10
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
10
11
  const debug = (0, utils_js_1.createDebugger)('vike:stream');
11
12
  function isStreamReadableWeb(thing) {
@@ -757,7 +758,7 @@ function encodeForWebStream(thing) {
757
758
  }
758
759
  // Because of Cloudflare Workers, we cannot statically import the `stream` module, instead we dynamically import it.
759
760
  async function loadStreamNodeModule() {
760
- const streamModule = await (0, utils_js_1.dynamicImport)('stream');
761
+ const streamModule = (await (0, import_1.import_)('stream')).default;
761
762
  const { Readable, Writable } = streamModule;
762
763
  return { Readable, Writable };
763
764
  }
@@ -46,7 +46,8 @@ function collectCss(mod, styleUrls, visitedModules, importer) {
46
46
  // - I believe some Vite plugins don't respect the \0 virtual module convention. What should we do then?
47
47
  // - https://github.com/vikejs/vike/issues/1327
48
48
  // - https://github.com/vikejs/vike/commit/3f7b9916dddc84e29e2c20d2b0df7211b6f1acbd
49
- styleUrls.add(`/@id/${mod.url.substring(1)}`);
49
+ // - https://github.com/vikejs/vike/issues/479#issuecomment-1870043943
50
+ styleUrls.add(`/@id/__x00__${mod.url.substring(1)}`);
50
51
  }
51
52
  else {
52
53
  // Is this useful? Maybe for virtual modules that don't respect the \0 virtual module convention?
@@ -7,7 +7,7 @@ const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage/isNewEr
7
7
  });
8
8
  function isNewError(errErrorPage, errNominalPage) {
9
9
  (0, utils_js_1.warnIfErrorIsNotObject)(errErrorPage);
10
- return !(0, utils_js_1.isEquivalentError)(errNominalPage, errErrorPage) || !hasAlreadyLogged(errNominalPage);
10
+ return !(0, utils_js_1.isSameErrorMessage)(errNominalPage, errErrorPage) || !hasAlreadyLogged(errNominalPage);
11
11
  }
12
12
  exports.isNewError = isNewError;
13
13
  function hasAlreadyLogged(err) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadPageFilesServerSide = void 0;
3
+ exports.loadUserFilesServerSide = void 0;
4
4
  const getPageFiles_js_1 = require("../../../shared/getPageFiles.js");
5
5
  const analyzePageClientSide_js_1 = require("../../../shared/getPageFiles/analyzePageClientSide.js");
6
6
  const utils_js_1 = require("../utils.js");
@@ -10,10 +10,10 @@ const findPageConfig_js_1 = require("../../../shared/page-configs/findPageConfig
10
10
  const analyzePage_js_1 = require("./analyzePage.js");
11
11
  const globalContext_js_1 = require("../globalContext.js");
12
12
  const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
13
- async function loadPageFilesServerSide(pageContext) {
13
+ async function loadUserFilesServerSide(pageContext) {
14
14
  const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
15
15
  const [{ config, configEntries, exports, exportsAll, pageExports, pageFilesLoaded, pageConfigLoaded }] = await Promise.all([
16
- loadPageFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
16
+ loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
17
17
  (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
18
18
  ]);
19
19
  const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext._pageId);
@@ -82,8 +82,8 @@ async function loadPageFilesServerSide(pageContext) {
82
82
  }
83
83
  return pageContextAddendum;
84
84
  }
85
- exports.loadPageFilesServerSide = loadPageFilesServerSide;
86
- async function loadPageFiles(pageFilesAll, pageConfig, pageId, isDev) {
85
+ exports.loadUserFilesServerSide = loadUserFilesServerSide;
86
+ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
87
87
  const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageFilesAll, pageId);
88
88
  const pageConfigLoaded = !pageConfig ? null : await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, isDev);
89
89
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
@@ -12,7 +12,7 @@ const serializePageContextClientSide_js_1 = require("../html/serializePageContex
12
12
  const addUrlComputedProps_js_1 = require("../../../shared/addUrlComputedProps.js");
13
13
  const globalContext_js_1 = require("../globalContext.js");
14
14
  const createHttpResponseObject_js_1 = require("./createHttpResponseObject.js");
15
- const loadPageFilesServerSide_js_1 = require("./loadPageFilesServerSide.js");
15
+ const loadUserFilesServerSide_js_1 = require("./loadUserFilesServerSide.js");
16
16
  const executeOnRenderHtmlHook_js_1 = require("./executeOnRenderHtmlHook.js");
17
17
  const executeOnBeforeRenderAndDataHooks_js_1 = require("./executeOnBeforeRenderAndDataHooks.js");
18
18
  const loggerRuntime_js_1 = require("./loggerRuntime.js");
@@ -22,6 +22,7 @@ const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js
22
22
  const loadPageRoutes_js_1 = require("../../../shared/route/loadPageRoutes.js");
23
23
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
24
24
  const helpers_js_1 = require("../../../shared/page-configs/helpers.js");
25
+ const isRenderFailure_js_1 = require("../../../shared/misc/isRenderFailure.js");
25
26
  async function renderPageAlreadyRouted(pageContext) {
26
27
  // pageContext._pageId can either be the:
27
28
  // - ID of the page matching the routing, or the
@@ -29,7 +30,7 @@ async function renderPageAlreadyRouted(pageContext) {
29
30
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '_pageId', 'string'));
30
31
  const isError = pageContext.is404 || !!pageContext.errorWhileRendering;
31
32
  (0, utils_js_1.assert)(isError === (pageContext._pageId === (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs)));
32
- (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageFilesServerSide_js_1.loadPageFilesServerSide)(pageContext));
33
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
33
34
  if (!isError) {
34
35
  await (0, executeGuardHook_js_1.executeGuardHook)(pageContext, (pageContext) => (0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext));
35
36
  }
@@ -48,7 +49,7 @@ async function renderPageAlreadyRouted(pageContext) {
48
49
  }
49
50
  if (pageContext.isClientSideNavigation) {
50
51
  if (isError) {
51
- (0, utils_js_1.objectAssign)(pageContext, { _isError: true });
52
+ (0, utils_js_1.objectAssign)(pageContext, { [isRenderFailure_js_1.isRenderFailure]: true });
52
53
  }
53
54
  const pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
54
55
  const httpResponse = await (0, createHttpResponseObject_js_1.createHttpResponsePageContextJson)(pageContextSerialized);
@@ -115,7 +116,7 @@ async function prerender404Page(renderContext, pageContextInit_) {
115
116
  const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext);
116
117
  (0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
117
118
  }
118
- (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageFilesServerSide_js_1.loadPageFilesServerSide)(pageContext));
119
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
119
120
  return prerenderPage(pageContext);
120
121
  }
121
122
  exports.prerender404Page = prerender404Page;
@@ -20,7 +20,7 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
20
20
  const serializePageContextClientSide_js_1 = require("./html/serializePageContextClientSide.js");
21
21
  const error_page_js_1 = require("../../shared/error-page.js");
22
22
  const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
23
- const loadPageFilesServerSide_js_1 = require("./renderPage/loadPageFilesServerSide.js");
23
+ const loadUserFilesServerSide_js_1 = require("./renderPage/loadUserFilesServerSide.js");
24
24
  const resolveRedirects_js_1 = require("../../shared/route/resolveRedirects.js");
25
25
  const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage.ts', {
26
26
  httpRequestsCount: 0,
@@ -390,7 +390,7 @@ async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextIn
390
390
  ...pageContextErrorPageInit,
391
391
  ...renderContext
392
392
  };
393
- (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageFilesServerSide_js_1.loadPageFilesServerSide)(pageContext));
393
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
394
394
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
395
395
  pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
396
396
  }
@@ -42,7 +42,7 @@ __exportStar(require("../../utils/filesystemPathHandling.js"), exports);
42
42
  __exportStar(require("../../utils/getOutDirs.js"), exports);
43
43
  __exportStar(require("../../utils/capitalizeFirstLetter.js"), exports);
44
44
  __exportStar(require("../../utils/debugGlob.js"), exports);
45
- __exportStar(require("../../utils/isEquivalentError.js"), exports);
45
+ __exportStar(require("../../utils/isSameErrorMessage.js"), exports);
46
46
  __exportStar(require("../../utils/styleFileRE.js"), exports);
47
47
  __exportStar(require("../../utils/isPropertyGetter.js"), exports);
48
48
  __exportStar(require("../../utils/debug.js"), exports);
@@ -64,7 +64,6 @@ __exportStar(require("../../utils/path-shim.js"), exports);
64
64
  __exportStar(require("../../utils/nodeEnv.js"), exports);
65
65
  __exportStar(require("../../utils/isHtml.js"), exports);
66
66
  __exportStar(require("../../utils/warnIfErrorIsNotObject.js"), exports);
67
- __exportStar(require("../../utils/dynamicImport.js"), exports);
68
67
  __exportStar(require("../../utils/stripAnsi.js"), exports);
69
68
  __exportStar(require("../../utils/getTerminWidth.js"), exports);
70
69
  __exportStar(require("../../utils/truncateString.js"), exports);
@@ -3,10 +3,14 @@ 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.getHookTimeoutDefault = exports.assertHook = exports.getHookFromPageConfigGlobal = exports.getHookFromPageConfig = exports.getHook = void 0;
6
+ exports.getHookTimeoutDefault = exports.setIsPrerenderering = exports.assertHook = exports.getHookFromPageConfigGlobal = exports.getHookFromPageConfig = exports.getHook = void 0;
7
+ const getGlobalObject_js_1 = require("../../utils/getGlobalObject.js");
7
8
  const helpers_js_1 = require("../page-configs/helpers.js");
8
9
  const utils_js_1 = require("../utils.js");
9
10
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
11
+ const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('getHook.ts', {
12
+ isPrerendering: false
13
+ });
10
14
  function getHook(pageContext, hookName) {
11
15
  if (!(hookName in pageContext.exports)) {
12
16
  return null;
@@ -113,20 +117,22 @@ function getHookTimeoutDefault(hookName) {
113
117
  warning: 1 * 1000
114
118
  };
115
119
  }
116
- if (hookName === 'onPrerenderStart' ||
117
- hookName === 'onBeforePrerenderStart' ||
118
- // TODO/v1-release: remove
119
- // Old V0.4 design hooks (https://vike.dev/migration/v1-design#renamed-hooks)
120
- hookName === 'onBeforePrerender' ||
121
- hookName === 'prerender') {
120
+ if (globalObject.isPrerendering) {
122
121
  return {
123
- error: 10 * 60 * 1000,
122
+ error: 2 * 60 * 1000,
124
123
  warning: 30 * 1000
125
124
  };
126
125
  }
126
+ else {
127
+ (0, utils_js_1.assert)(!hookName.toLowerCase().includes('prerender'));
128
+ }
127
129
  return {
128
130
  error: 30 * 1000,
129
131
  warning: 4 * 1000
130
132
  };
131
133
  }
132
134
  exports.getHookTimeoutDefault = getHookTimeoutDefault;
135
+ function setIsPrerenderering() {
136
+ globalObject.isPrerendering = true;
137
+ }
138
+ exports.setIsPrerenderering = setIsPrerenderering;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRenderFailure = void 0;
4
+ exports.isRenderFailure = '_isRenderFailure';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pageContextInitIsPassedToClient = void 0;
4
+ exports.pageContextInitIsPassedToClient = '_pageContextInitIsPassedToClient';
@@ -27,7 +27,7 @@ function redirect(url, statusCode) {
27
27
  const pageContextAbort = {};
28
28
  (0, utils_js_1.objectAssign)(pageContextAbort, {
29
29
  _abortCaller: abortCaller,
30
- _abortCall: `throw redirect(${args.join(', ')})`,
30
+ _abortCall: `redirect(${args.join(', ')})`,
31
31
  _urlRedirect: {
32
32
  url,
33
33
  statusCode
@@ -41,7 +41,7 @@ function render(value, abortReason) {
41
41
  if (abortReason !== undefined)
42
42
  args.push((0, utils_js_1.truncateString)(JSON.stringify(abortReason), 30));
43
43
  const abortCaller = 'throw render()';
44
- const abortCall = `throw render(${args.join(', ')})`;
44
+ const abortCall = `render(${args.join(', ')})`;
45
45
  return render_(value, abortReason, abortCall, abortCaller);
46
46
  }
47
47
  exports.render = render;
@@ -92,7 +92,7 @@ function RenderErrorPage({ pageContext = {} } = {}) {
92
92
  abortReason = 'Something went wrong';
93
93
  }
94
94
  (0, utils_js_1.objectAssign)(pageContext, { _isLegacyRenderErrorPage: true });
95
- return render_(abortStatusCode, abortReason, 'throw RenderErrorPage()', 'throw RenderErrorPage()', pageContext);
95
+ return render_(abortStatusCode, abortReason, 'RenderErrorPage()', 'throw RenderErrorPage()', pageContext);
96
96
  }
97
97
  exports.RenderErrorPage = RenderErrorPage;
98
98
  const stamp = '_isAbortError';
@@ -118,7 +118,18 @@ function logAbortErrorHandled(err, isProduction, pageContext) {
118
118
  const urlCurrent = pageContext._urlRewrite ?? pageContext.urlOriginal;
119
119
  (0, utils_js_1.assert)(urlCurrent);
120
120
  const abortCall = err._pageContextAbort._abortCall;
121
- (0, utils_js_1.assertInfo)(false, `${picocolors_1.default.cyan(abortCall)} intercepted while rendering ${picocolors_1.default.cyan(urlCurrent)}`, { onlyOnce: false });
121
+ (0, utils_js_1.assert)(abortCall);
122
+ const hookLoc = (0, utils_js_1.isUserHookError)(err);
123
+ let thrownBy = '';
124
+ if (hookLoc) {
125
+ thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
126
+ }
127
+ else {
128
+ // hookLoc is missing when serializing abort errors from server to client
129
+ }
130
+ (0, utils_js_1.assertInfo)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while rendering ${picocolors_1.default.cyan(urlCurrent)}`, {
131
+ onlyOnce: false
132
+ });
122
133
  }
123
134
  exports.logAbortErrorHandled = logAbortErrorHandled;
124
135
  function assertStatusCode(statusCode, expected, caller) {
@@ -19,7 +19,6 @@ pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds) {
19
19
  exports.loadPageRoutes = loadPageRoutes;
20
20
  function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
21
21
  const pageRoutes = [];
22
- let pageIds = [...allPageIds];
23
22
  // V1 Design
24
23
  if (pageConfigs.length > 0) {
25
24
  (0, utils_js_1.assert)(filesystemRoots === null);
@@ -28,7 +27,6 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
28
27
  .filter((p) => !p.isErrorPage)
29
28
  .forEach((pageConfig) => {
30
29
  const pageId = pageConfig.pageId;
31
- pageIds = removePageId(pageIds, pageId);
32
30
  let pageRoute = null;
33
31
  {
34
32
  const configName = 'route';
@@ -82,7 +80,7 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
82
80
  if (pageConfigs.length === 0) {
83
81
  (0, utils_js_1.assert)(filesystemRoots);
84
82
  const comesFromV1PageConfig = false;
85
- pageIds
83
+ allPageIds
86
84
  .filter((pageId) => !(0, error_page_js_1.isErrorPageId)(pageId, false))
87
85
  .forEach((pageId) => {
88
86
  const pageRouteFile = pageFilesAll.find((p) => p.pageId === pageId && p.fileType === '.page.route');
@@ -182,9 +180,3 @@ function dirname(filePath) {
182
180
  (0, utils_js_1.assert)(!dirPath.endsWith('/') || dirPath === '/');
183
181
  return dirPath;
184
182
  }
185
- function removePageId(pageIds, pageId) {
186
- const { length } = pageIds;
187
- pageIds = pageIds.filter((id) => id !== pageId);
188
- (0, utils_js_1.assert)(pageIds.length === length - 1);
189
- return pageIds;
190
- }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSameErrorMessage = void 0;
4
+ const isObject_js_1 = require("./isObject.js");
5
+ function isSameErrorMessage(err1, err2) {
6
+ if (!(0, isObject_js_1.isObject)(err1) || !(0, isObject_js_1.isObject)(err2))
7
+ return false;
8
+ return err1.message === err2.message;
9
+ }
10
+ exports.isSameErrorMessage = isSameErrorMessage;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = exports.projectInfo = void 0;
4
4
  const assertSingleInstance_js_1 = require("./assertSingleInstance.js");
5
- const PROJECT_VERSION = '0.4.152';
5
+ const PROJECT_VERSION = '0.4.153-commit-01ab602';
6
6
  exports.PROJECT_VERSION = PROJECT_VERSION;
7
7
  const projectInfo = {
8
8
  projectName: 'Vike',
@@ -5,7 +5,6 @@ declare function createPageContext(urlOriginal: string): Promise<{
5
5
  _urlHandler: null;
6
6
  _urlRewrite: null;
7
7
  _baseServer: string;
8
- _isProduction: boolean;
9
8
  _pageFilesAll: import("../../shared/getPageFiles/getPageFileObject.js").PageFile[];
10
9
  _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
11
10
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
@@ -13,15 +13,12 @@ async function createPageContext(urlOriginal) {
13
13
  const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
14
14
  const baseServer = getBaseServer();
15
15
  assert(isBaseServer(baseServer));
16
- // @ts-ignore Since dist/cjs/client/ is never used, we can ignore this error.
17
- const isProd = import.meta.env.PROD;
18
16
  const pageContext = {
19
17
  urlOriginal,
20
18
  _objectCreatedByVike: true,
21
19
  _urlHandler: null,
22
20
  _urlRewrite: null,
23
21
  _baseServer: baseServer,
24
- _isProduction: isProd,
25
22
  _pageFilesAll: pageFilesAll,
26
23
  _pageConfigs: pageConfigs,
27
24
  _pageConfigGlobal: pageConfigGlobal,