vike 0.4.227-commit-e36b916 → 0.4.227-commit-710dcb6

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 (35) hide show
  1. package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +2 -2
  2. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +2 -2
  3. package/dist/cjs/node/plugin/plugins/commonConfig.js +2 -1
  4. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -2
  5. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +2 -2
  6. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -0
  7. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +5 -7
  8. package/dist/cjs/node/prerender/runPrerender.js +168 -150
  9. package/dist/cjs/node/prerender/utils.js +1 -1
  10. package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -0
  11. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +0 -23
  12. package/dist/cjs/shared/route/index.js +13 -11
  13. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  14. package/dist/cjs/utils/findPackageJson.js +2 -2
  15. package/dist/cjs/utils/preservePropertyGetters.js +30 -0
  16. package/dist/cjs/utils/requireResolve.js +57 -13
  17. package/dist/esm/node/plugin/plugins/commonConfig.js +2 -1
  18. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -0
  19. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +4 -6
  20. package/dist/esm/node/prerender/runPrerender.d.ts +2 -0
  21. package/dist/esm/node/prerender/runPrerender.js +171 -153
  22. package/dist/esm/node/prerender/utils.d.ts +1 -1
  23. package/dist/esm/node/prerender/utils.js +1 -1
  24. package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -0
  25. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +0 -182
  26. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +0 -23
  27. package/dist/esm/shared/route/index.d.ts +1 -1
  28. package/dist/esm/shared/route/index.js +13 -11
  29. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  30. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  31. package/dist/esm/utils/preservePropertyGetters.d.ts +2 -0
  32. package/dist/esm/utils/preservePropertyGetters.js +28 -0
  33. package/dist/esm/utils/requireResolve.d.ts +4 -0
  34. package/dist/esm/utils/requireResolve.js +51 -10
  35. package/package.json +1 -1
@@ -18,23 +18,25 @@ const resolveRouteFunction_js_1 = require("./resolveRouteFunction.js");
18
18
  const executeOnBeforeRouteHook_js_1 = require("./executeOnBeforeRouteHook.js");
19
19
  const debug_js_1 = require("./debug.js");
20
20
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
21
- async function route(pageContext) {
21
+ async function route(pageContext, skipOnBeforeRouteHook) {
22
22
  (0, debug_js_1.debug)('Pages routes:', pageContext._pageRoutes);
23
23
  (0, getPageContextUrlComputed_js_1.assertPageContextUrl)(pageContext);
24
24
  const pageContextFromRoute = {};
25
25
  // onBeforeRoute()
26
- const pageContextFromOnBeforeRouteHook = await (0, executeOnBeforeRouteHook_js_1.executeOnBeforeRouteHook)(pageContext);
27
- if (pageContextFromOnBeforeRouteHook) {
28
- if (pageContextFromOnBeforeRouteHook._routingProvidedByOnBeforeRouteHook) {
29
- (0, utils_js_1.assert)(pageContextFromOnBeforeRouteHook.pageId);
30
- return pageContextFromOnBeforeRouteHook;
31
- }
32
- else {
33
- (0, utils_js_1.objectAssign)(pageContextFromRoute, pageContextFromOnBeforeRouteHook);
26
+ if (!skipOnBeforeRouteHook) {
27
+ const pageContextFromOnBeforeRouteHook = await (0, executeOnBeforeRouteHook_js_1.executeOnBeforeRouteHook)(pageContext);
28
+ if (pageContextFromOnBeforeRouteHook) {
29
+ if (pageContextFromOnBeforeRouteHook._routingProvidedByOnBeforeRouteHook) {
30
+ (0, utils_js_1.assert)(pageContextFromOnBeforeRouteHook.pageId);
31
+ return pageContextFromOnBeforeRouteHook;
32
+ }
33
+ else {
34
+ (0, utils_js_1.objectAssign)(pageContextFromRoute, pageContextFromOnBeforeRouteHook);
35
+ }
34
36
  }
37
+ // We take into account pageContext.urlLogical set by onBeforeRoute()
38
+ (0, utils_js_1.objectAssign)(pageContext, pageContextFromOnBeforeRouteHook);
35
39
  }
36
- // We take into account pageContext.urlLogical set by onBeforeRoute()
37
- (0, utils_js_1.objectAssign)(pageContext, pageContextFromOnBeforeRouteHook);
38
40
  // Vike's routing
39
41
  const allPageIds = pageContext._allPageIds;
40
42
  (0, utils_js_1.assertUsage)(allPageIds.length > 0, 'No page found. You must create at least one page.');
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.227-commit-e36b916';
5
+ exports.PROJECT_VERSION = '0.4.227-commit-710dcb6';
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findPackageJson = findPackageJson;
4
4
  const findFile_js_1 = require("./findFile.js");
5
5
  const module_1 = require("module");
6
- // @ts-ignore `file://${__filename}` is shimmed at dist/cjs by dist-cjs-fixup.js.
7
- const importMetaUrl = `file://${__filename}`;
6
+ // @ts-ignore `file://${__filename.split('\\').join('/')}` is shimmed at dist/cjs by dist-cjs-fixup.js.
7
+ const importMetaUrl = `file://${__filename.split('\\').join('/')}`;
8
8
  const require_ = (0, module_1.createRequire)(importMetaUrl);
9
9
  function findPackageJson(cwd) {
10
10
  const packageJsonPath = (0, findFile_js_1.findFile)('package.json', cwd);
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.preservePropertyGetters = preservePropertyGetters;
4
+ const assert_js_1 = require("./assert.js");
5
+ function preservePropertyGetters(objOriginal) {
6
+ // Store original getter descriptors
7
+ const getters = Object.fromEntries(Object.entries(Object.getOwnPropertyDescriptors(objOriginal)).filter(([_, desc]) => 'get' in desc));
8
+ // Make getters non-enumerable
9
+ for (const [key, desc] of Object.entries(getters)) {
10
+ Object.defineProperty(objOriginal, key, { ...desc, enumerable: false });
11
+ }
12
+ const restorePropertyGetters = function () {
13
+ const objCopy = this;
14
+ delete objOriginal._restorePropertyGetters;
15
+ delete objCopy._restorePropertyGetters;
16
+ for (const [key, desc] of Object.entries(getters)) {
17
+ if (objCopy !== objOriginal) {
18
+ (0, assert_js_1.assert)(!(key in objCopy));
19
+ Object.defineProperty(objCopy, key, desc); // Add property getters to copy
20
+ }
21
+ (0, assert_js_1.assert)(key in objOriginal);
22
+ Object.defineProperty(objOriginal, key, desc); // Restore original `enumerable` value
23
+ }
24
+ };
25
+ Object.defineProperty(objOriginal, '_restorePropertyGetters', {
26
+ value: restorePropertyGetters,
27
+ enumerable: true,
28
+ configurable: true
29
+ });
30
+ }
@@ -1,38 +1,82 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.requireResolve = requireResolve;
7
+ exports.requireResolveExpected = requireResolveExpected;
8
+ exports.requireResolveInternal = requireResolveInternal;
4
9
  const assert_js_1 = require("./assert.js");
5
10
  const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
6
11
  const assertSetup_js_1 = require("./assertSetup.js");
7
12
  const path_js_1 = require("./path.js");
8
13
  const isScriptFile_js_1 = require("./isScriptFile.js");
9
- const module_1 = require("module");
10
- // @ts-ignore `file://${__filename}` is shimmed at dist/cjs by dist-cjs-fixup.js.
11
- const importMetaUrl = `file://${__filename}`;
12
- const require_ = (0, module_1.createRequire)(importMetaUrl);
14
+ const node_module_1 = require("node:module");
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ // @ts-ignore `file://${__filename.split('\\').join('/')}` is shimmed at dist/cjs by dist-cjs-fixup.js.
17
+ const importMetaUrl = `file://${__filename.split('\\').join('/')}`;
18
+ const require_ = (0, node_module_1.createRequire)(importMetaUrl);
13
19
  (0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
14
20
  (0, assertSetup_js_1.assertIsNotProductionRuntime)();
15
- // We still can't use import.meta.resolve() as of 23.1.0 (November 2024) because `parent` argument requires an experimental flag.
16
- // - https://stackoverflow.com/questions/54977743/do-require-resolve-for-es-modules#comment139581675_62272600
17
- function requireResolve(importPath, cwd) {
21
+ function requireResolve_(importPath, cwd) {
18
22
  (0, path_js_1.assertPosixPath)(cwd);
23
+ (0, path_js_1.assertPosixPath)(importPath);
24
+ cwd = resolveCwd(cwd);
19
25
  const clean = addFileExtensionsToRequireResolve();
20
26
  importPath = removeFileExtention(importPath);
21
27
  let importedFile;
22
28
  try {
29
+ // We still can't use import.meta.resolve() as of 23.1.0 (November 2024) because `parent` argument requires an experimental flag.
30
+ // - https://stackoverflow.com/questions/54977743/do-require-resolve-for-es-modules#comment139581675_62272600
23
31
  importedFile = require_.resolve(importPath, { paths: [cwd] });
24
32
  }
25
- catch {
26
- importedFile = null;
27
- }
28
- finally {
33
+ catch (err) {
29
34
  clean();
35
+ return { importedFile: undefined, err, hasFailed: true };
30
36
  }
31
- if (importedFile) {
32
- importedFile = (0, path_js_1.toPosixPath)(importedFile);
37
+ clean();
38
+ importedFile = (0, path_js_1.toPosixPath)(importedFile);
39
+ return { importedFile, err: undefined, hasFailed: false };
40
+ }
41
+ function requireResolve(importPath, cwd) {
42
+ const res = requireResolve_(importPath, cwd);
43
+ if (res.hasFailed)
44
+ return null;
45
+ return res.importedFile;
46
+ }
47
+ function requireResolveExpected(importPath, cwd) {
48
+ const res = requireResolve_(importPath, cwd);
49
+ if (res.hasFailed)
50
+ throw res.err;
51
+ return res.importedFile;
52
+ }
53
+ // For internal Vike files that are expected to exist and to be .js files
54
+ function requireResolveInternal(importPath, cwd) {
55
+ (0, path_js_1.assertPosixPath)(cwd);
56
+ (0, path_js_1.assertPosixPath)(importPath);
57
+ cwd = resolveCwd(cwd);
58
+ let importedFile;
59
+ try {
60
+ importedFile = require_.resolve(importPath, { paths: [cwd] });
33
61
  }
62
+ catch (err) {
63
+ console.log('err', err);
64
+ (0, assert_js_1.assert)(false, { cwd, importPath });
65
+ }
66
+ importedFile = (0, path_js_1.toPosixPath)(importedFile);
34
67
  return importedFile;
35
68
  }
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);
76
+ }
77
+ (0, assert_js_1.assert)(!cwd.startsWith('file:'));
78
+ return cwd;
79
+ }
36
80
  function removeFileExtention(importPath) {
37
81
  // Skip for Bun: https://github.com/vikejs/vike/issues/2204
38
82
  //@ts-ignore
@@ -33,7 +33,8 @@ function commonConfig(vikeVitePluginOptions) {
33
33
  isPrerenderingEnabled,
34
34
  isPrerenderingEnabledForAllPages,
35
35
  output: null,
36
- pageContexts: null
36
+ pageContexts: null,
37
+ pageContexts404: null
37
38
  });
38
39
  assert(prerenderContext.isPrerenderingEnabled === isPrerenderingEnabled);
39
40
  assert(prerenderContext.isPrerenderingEnabledForAllPages === isPrerenderingEnabledForAllPages);
@@ -568,6 +568,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
568
568
  // Defined over pointer import
569
569
  assert(confVal.valueIsLoaded);
570
570
  const pointerImport = resolvePointerImport(confVal.value, plusFile.filePath, userRootDir, configName);
571
+ console.log('pointerImport', pointerImport);
571
572
  const configDefinedAt = getConfigDefinedAt('Config', configName, definedAtFilePath_);
572
573
  assertUsage(pointerImport, `${configDefinedAt} should be an import`);
573
574
  valueFilePath = pointerImport.fileExportPath.filePathAbsoluteVite;
@@ -1,9 +1,7 @@
1
1
  export { resolveClientEntriesDev };
2
- import { assert, assertPosixPath, toPosixPath, pathJoin, assertIsNpmPackageImport, assertIsNotProductionRuntime } from '../utils.js';
3
- import { createRequire } from 'module';
2
+ import { assert, assertPosixPath, toPosixPath, pathJoin, assertIsNpmPackageImport, assertIsNotProductionRuntime, requireResolveInternal, requireResolveExpected } from '../utils.js';
4
3
  // @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
5
4
  const importMetaUrl = import.meta.url;
6
- const require_ = createRequire(importMetaUrl);
7
5
  assertIsNotProductionRuntime();
8
6
  async function resolveClientEntriesDev(clientEntry, viteDevServer) {
9
7
  let root = viteDevServer.config.root;
@@ -30,17 +28,17 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
30
28
  try {
31
29
  // For Vitest (which doesn't resolve vike to its dist but to its source files)
32
30
  // [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/node/plugin/shared/resolveClientEntriesDev.js
33
- filePath = toPosixPath(require_.resolve(clientEntry.replace('@@vike/dist/esm/client/', '../../../client/').replace('.js', '.ts')));
31
+ filePath = requireResolveInternal(clientEntry.replace('@@vike/dist/esm/client/', '../../../client/').replace('.js', '.ts'), importMetaUrl);
34
32
  }
35
33
  catch {
36
34
  // For users
37
35
  // [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/dist/esm/node/plugin/shared/resolveClientEntriesDev.js
38
- filePath = toPosixPath(require_.resolve(clientEntry.replace('@@vike/dist/esm/client/', '../../../../../dist/esm/client/')));
36
+ filePath = requireResolveInternal(clientEntry.replace('@@vike/dist/esm/client/', '../../../../../dist/esm/client/'), importMetaUrl);
39
37
  }
40
38
  }
41
39
  else {
42
40
  assertIsNpmPackageImport(clientEntry);
43
- filePath = require_.resolve(clientEntry);
41
+ filePath = requireResolveExpected(clientEntry, root);
44
42
  }
45
43
  }
46
44
  if (!filePath.startsWith('/')) {
@@ -14,6 +14,7 @@ type ProvidedByHook = null | {
14
14
  type PageContextPrerendered = {
15
15
  urlOriginal: string;
16
16
  _providedByHook?: ProvidedByHook;
17
+ pageId: string;
17
18
  };
18
19
  type Output<PageContext = PageContextPrerendered> = {
19
20
  filePath: string;
@@ -53,4 +54,5 @@ declare function runPrerender_forceExit(): void;
53
54
  type PrerenderContextPublic = {
54
55
  output: Output<PageContextServer>;
55
56
  pageContexts: PageContextServer[];
57
+ pageContexts404: PageContextServer;
56
58
  };