vike 0.4.165-commit-8eba585 → 0.4.166-commit-6a8acaa

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 (84) hide show
  1. package/dist/cjs/node/plugin/plugins/buildConfig.js +11 -6
  2. package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -1
  3. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +17 -22
  4. package/dist/cjs/node/plugin/plugins/envVars.js +3 -2
  5. package/dist/cjs/node/plugin/plugins/fileEnv.js +6 -3
  6. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +6 -2
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +6 -2
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +22 -18
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +7 -6
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +7 -3
  11. package/dist/cjs/node/plugin/shared/getFilePath.js +142 -0
  12. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +3 -8
  13. package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -1
  14. package/dist/cjs/node/plugin/utils.js +1 -1
  15. package/dist/cjs/node/prerender/runPrerender.js +6 -7
  16. package/dist/cjs/node/prerender/utils.js +2 -1
  17. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
  18. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -1
  19. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +5 -9
  20. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +9 -8
  21. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +6 -12
  22. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +5 -0
  23. package/dist/cjs/node/runtime/utils.js +0 -1
  24. package/dist/cjs/shared/route/abort.js +2 -1
  25. package/dist/cjs/shared/route/executeGuardHook.js +2 -1
  26. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +2 -1
  27. package/dist/cjs/shared/route/utils.js +0 -1
  28. package/dist/cjs/utils/assertPathIsFilesystemAbsolute.js +1 -0
  29. package/dist/cjs/utils/isNpmPackage.js +11 -2
  30. package/dist/cjs/utils/parseUrl.js +8 -1
  31. package/dist/cjs/utils/projectInfo.js +1 -1
  32. package/dist/esm/client/client-routing-runtime/history.d.ts +1 -1
  33. package/dist/esm/client/client-routing-runtime/history.js +5 -5
  34. package/dist/esm/client/client-routing-runtime/onBrowserHistoryNavigation.js +1 -1
  35. package/dist/esm/node/plugin/plugins/buildConfig.js +12 -7
  36. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -1
  37. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -23
  38. package/dist/esm/node/plugin/plugins/envVars.js +4 -3
  39. package/dist/esm/node/plugin/plugins/fileEnv.js +7 -4
  40. package/dist/esm/node/plugin/plugins/importUserCode/index.js +7 -3
  41. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +6 -2
  42. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +22 -18
  43. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +7 -6
  44. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +7 -3
  45. package/dist/esm/node/plugin/shared/getFilePath.d.ts +21 -0
  46. package/dist/esm/node/plugin/shared/getFilePath.js +136 -0
  47. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +4 -9
  48. package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -1
  49. package/dist/esm/node/plugin/utils.d.ts +1 -1
  50. package/dist/esm/node/plugin/utils.js +1 -1
  51. package/dist/esm/node/prerender/runPrerender.js +2 -3
  52. package/dist/esm/node/prerender/utils.d.ts +2 -1
  53. package/dist/esm/node/prerender/utils.js +2 -1
  54. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +1 -1
  55. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -1
  56. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +6 -10
  57. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +9 -8
  58. package/dist/esm/node/runtime/renderPage/getPageAssets.js +7 -13
  59. package/dist/esm/node/runtime/renderPage/logErrorHint.js +2 -0
  60. package/dist/esm/node/runtime/utils.d.ts +0 -1
  61. package/dist/esm/node/runtime/utils.js +0 -1
  62. package/dist/esm/shared/page-configs/FilePath.d.ts +41 -29
  63. package/dist/esm/shared/route/abort.js +2 -1
  64. package/dist/esm/shared/route/executeGuardHook.js +2 -1
  65. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +2 -1
  66. package/dist/esm/shared/route/utils.d.ts +0 -1
  67. package/dist/esm/shared/route/utils.js +0 -1
  68. package/dist/esm/utils/assertPathIsFilesystemAbsolute.js +1 -0
  69. package/dist/esm/utils/debug.d.ts +1 -1
  70. package/dist/esm/utils/isNpmPackage.d.ts +5 -1
  71. package/dist/esm/utils/isNpmPackage.js +10 -1
  72. package/dist/esm/utils/parseUrl.js +8 -1
  73. package/dist/esm/utils/projectInfo.d.ts +2 -2
  74. package/dist/esm/utils/projectInfo.js +1 -1
  75. package/package.json +25 -13
  76. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getFilePath.js +0 -90
  77. package/dist/cjs/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +0 -19
  78. package/dist/cjs/utils/getFilePathAbsolute.js +0 -70
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getFilePath.d.ts +0 -20
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getFilePath.js +0 -84
  81. package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.d.ts +0 -2
  82. package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +0 -16
  83. package/dist/esm/utils/getFilePathAbsolute.d.ts +0 -5
  84. package/dist/esm/utils/getFilePathAbsolute.js +0 -64
@@ -31,7 +31,6 @@ 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");
33
33
  const utils_js_1 = require("./utils.js");
34
- const pLimit_js_1 = require("../../utils/pLimit.js");
35
34
  const renderPageAlreadyRouted_js_1 = require("../runtime/renderPage/renderPageAlreadyRouted.js");
36
35
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
37
36
  const os_1 = require("os");
@@ -45,13 +44,13 @@ const helpers_js_1 = require("../../shared/page-configs/helpers.js");
45
44
  const loadConfigValues_js_1 = require("../../shared/page-configs/loadConfigValues.js");
46
45
  const error_page_js_1 = require("../../shared/error-page.js");
47
46
  const addUrlComputedProps_js_1 = require("../../shared/addUrlComputedProps.js");
48
- const assertPathIsFilesystemAbsolute_js_1 = require("../../utils/assertPathIsFilesystemAbsolute.js");
49
47
  const abort_js_1 = require("../../shared/route/abort.js");
50
48
  const loadUserFilesServerSide_js_1 = require("../runtime/renderPage/loadUserFilesServerSide.js");
51
49
  const getHook_js_1 = require("../../shared/hooks/getHook.js");
52
50
  const noRouteMatch_js_1 = require("../../shared/route/noRouteMatch.js");
53
51
  const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js");
54
52
  const logErrorHint_js_1 = require("../runtime/renderPage/logErrorHint.js");
53
+ const executeHook_js_1 = require("../../shared/hooks/executeHook.js");
55
54
  async function runPrerenderFromAPI(options = {}) {
56
55
  await runPrerender(options, 'prerender()');
57
56
  // - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
@@ -103,8 +102,8 @@ async function runPrerender(options, manuallyTriggered) {
103
102
  });
104
103
  }
105
104
  const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
106
- const concurrencyLimit = (0, pLimit_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
107
- (0, assertPathIsFilesystemAbsolute_js_1.assertPathIsFilesystemAbsolute)(outDirRoot); // Needed for loadImportBuild(outDir) of @brillout/vite-plugin-server-entry
105
+ const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
106
+ (0, utils_js_1.assertPathIsFilesystemAbsolute)(outDirRoot); // Needed for loadImportBuild(outDir) of @brillout/vite-plugin-server-entry
108
107
  await (0, globalContext_js_1.initGlobalContext)(true, outDirRoot);
109
108
  const renderContext = await (0, renderPageAlreadyRouted_js_1.getRenderContext)();
110
109
  renderContext.pageFilesAll.forEach(assertExportNames);
@@ -245,7 +244,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
245
244
  if (doNotPrerenderList.find((p) => p.pageId === pageId)) {
246
245
  return;
247
246
  }
248
- const prerenderResult = await (0, utils_js_1.executeHook)(() => hookFn(), { hookName, hookFilePath, hookTimeout });
247
+ const prerenderResult = await (0, executeHook_js_1.executeHook)(() => hookFn(), { hookName, hookFilePath, hookTimeout });
249
248
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
250
249
  result.forEach(({ url, pageContext }) => {
251
250
  {
@@ -410,7 +409,7 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
410
409
  pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
411
410
  });
412
411
  const docLink = 'https://vike.dev/i18n#pre-rendering';
413
- let result = await (0, utils_js_1.executeHook)(() => hookFn({
412
+ let result = await (0, executeHook_js_1.executeHook)(() => hookFn({
414
413
  pageContexts: prerenderContext.pageContexts,
415
414
  // TODO/v1-release: remove warning
416
415
  get prerenderPageContexts() {
@@ -734,7 +733,7 @@ function assertIsNotAbort(err, urlOr404) {
734
733
  if (!(0, abort_js_1.isAbortError)(err))
735
734
  return;
736
735
  const pageContextAbort = err._pageContextAbort;
737
- const hookLoc = (0, utils_js_1.isUserHookError)(err);
736
+ const hookLoc = (0, executeHook_js_1.isUserHookError)(err);
738
737
  (0, utils_js_1.assert)(hookLoc);
739
738
  const thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
740
739
  const abortCaller = pageContextAbort._abortCaller;
@@ -26,6 +26,7 @@ __exportStar(require("../../utils/getOutDirs.js"), exports);
26
26
  __exportStar(require("../../utils/isPropertyGetter.js"), exports);
27
27
  __exportStar(require("../../utils/filesystemPathHandling.js"), exports);
28
28
  __exportStar(require("../../utils/urlToFile.js"), exports);
29
- __exportStar(require("../../shared/hooks/executeHook.js"), exports);
30
29
  __exportStar(require("../../utils/isPlainObject.js"), exports);
31
30
  __exportStar(require("../../utils/assertNodeEnv.js"), exports);
31
+ __exportStar(require("../../utils/pLimit.js"), exports);
32
+ __exportStar(require("../../utils/assertPathIsFilesystemAbsolute.js"), exports);
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.executeOnBeforeRenderAndDataHooks = void 0;
4
4
  const getHook_js_1 = require("../../../shared/hooks/getHook.js");
5
5
  const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePageContextForUserConsumptionServerSide.js");
6
- const utils_js_1 = require("../utils.js");
7
6
  const assertOnBeforeRenderHookReturn_js_1 = require("../../../shared/assertOnBeforeRenderHookReturn.js");
7
+ const executeHook_js_1 = require("../../../shared/hooks/executeHook.js");
8
8
  async function executeOnBeforeRenderAndDataHooks(pageContext) {
9
9
  if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
10
10
  return;
@@ -16,7 +16,7 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
16
16
  }
17
17
  (0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext);
18
18
  if (dataHook) {
19
- const hookResult = await (0, utils_js_1.executeHook)(() => dataHook.hookFn(pageContext), dataHook);
19
+ const hookResult = await (0, executeHook_js_1.executeHook)(() => dataHook.hookFn(pageContext), dataHook);
20
20
  // Note: hookResult can be anything (e.g. an object) and is to be assigned to pageContext.data
21
21
  const pageContextFromHook = {
22
22
  data: hookResult
@@ -24,7 +24,7 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
24
24
  Object.assign(pageContext, pageContextFromHook);
25
25
  }
26
26
  if (onBeforeRenderHook) {
27
- const hookResult = await (0, utils_js_1.executeHook)(() => onBeforeRenderHook.hookFn(pageContext), onBeforeRenderHook);
27
+ const hookResult = await (0, executeHook_js_1.executeHook)(() => onBeforeRenderHook.hookFn(pageContext), onBeforeRenderHook);
28
28
  (0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(hookResult, onBeforeRenderHook.hookFilePath);
29
29
  const pageContextFromHook = hookResult?.pageContext;
30
30
  Object.assign(pageContext, pageContextFromHook);
@@ -13,11 +13,12 @@ const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePa
13
13
  const assertHookReturnedObject_js_1 = require("../../../shared/assertHookReturnedObject.js");
14
14
  const loggerRuntime_js_1 = require("./loggerRuntime.js");
15
15
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
16
+ const executeHook_js_1 = require("../../../shared/hooks/executeHook.js");
16
17
  async function executeOnRenderHtmlHook(pageContext) {
17
18
  const { renderHook, hookFn } = getRenderHook(pageContext);
18
19
  (0, utils_js_1.objectAssign)(pageContext, { _renderHook: renderHook });
19
20
  (0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext);
20
- const hookReturnValue = await (0, utils_js_1.executeHook)(() => hookFn(pageContext), renderHook);
21
+ const hookReturnValue = await (0, executeHook_js_1.executeHook)(() => hookFn(pageContext), renderHook);
21
22
  const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturnValue, renderHook);
22
23
  Object.assign(pageContext, pageContextProvidedByRenderHook);
23
24
  (0, utils_js_1.objectAssign)(pageContext, { _pageContextPromise: pageContextPromise });
@@ -2,11 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getManifestEntry = void 0;
4
4
  const utils_js_1 = require("../../utils.js");
5
- const assertClientEntryId_js_1 = require("./assertClientEntryId.js");
6
5
  const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
7
6
  const prependEntriesDir_js_1 = require("../../../shared/prependEntriesDir.js");
8
7
  function getManifestEntry(id, assetsManifest) {
9
- (0, assertClientEntryId_js_1.assertClientEntryId)(id);
10
8
  const debugInfo = getDebugInfo(id, assetsManifest);
11
9
  // Vike client entry
12
10
  if (id.startsWith('@@vike/')) {
@@ -44,12 +42,11 @@ function getManifestEntry(id, assetsManifest) {
44
42
  return { manifestEntry, manifestKey };
45
43
  }
46
44
  // npm package import
47
- if ((0, utils_js_1.isNpmPackageImport)(id)) {
48
- const found = Object.entries(assetsManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
49
- (0, utils_js_1.assert)(found);
50
- const [manifestKey, manifestEntry] = found;
51
- return { manifestEntry, manifestKey };
52
- }
45
+ (0, utils_js_1.assertIsNpmPackageImport)(id);
46
+ const found = Object.entries(assetsManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
47
+ (0, utils_js_1.assert)(found);
48
+ const [manifestKey, manifestEntry] = found;
49
+ return { manifestEntry, manifestKey };
53
50
  /* Can we remove this?
54
51
  // extensions[number].pageConfigsSrcDir
55
52
  if (id.startsWith('/node_modules/') || id.startsWith('/../')) {
@@ -81,7 +78,6 @@ function getManifestEntry(id, assetsManifest) {
81
78
  assert(false, debugInfo)
82
79
  }
83
80
  */
84
- (0, utils_js_1.assert)(false, debugInfo);
85
81
  }
86
82
  exports.getManifestEntry = getManifestEntry;
87
83
  function findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id) {
@@ -11,15 +11,16 @@ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImp
11
11
  clientDependencies.forEach(({ id, onlyAssets, eagerlyImported }) => {
12
12
  if (eagerlyImported)
13
13
  return; // Eagerly imported assets aren't imported with import() and therefore don't create a new Rollup entry and aren't listed in the manifest file
14
- if (onlyAssets) {
15
- if (!includeAssetsImportedByServer)
16
- return;
14
+ // TODO/v1-release: remove
15
+ if (includeAssetsImportedByServer &&
16
+ onlyAssets &&
17
+ id.includes('.page.server.') &&
17
18
  // We assume that all npm packages have already built their files: bundlers (Rollup, esbuild, tsup, ...) extract the CSS out of JavaScript => we can assume JavaScript to not import any CSS/assets.
18
- if ((0, utils_js_1.isNpmPackageImport)(id))
19
- return;
20
- if (id.includes('.page.server.')) {
21
- id = (0, extractAssetsQuery_js_1.extractAssetsAddQuery)(id);
22
- }
19
+ !(0, utils_js_1.isNpmPackageImport)(id, {
20
+ // I presume Vite already resolves path aliases when Vite sets the module's id
21
+ cannotBePathAlias: true
22
+ })) {
23
+ id = (0, extractAssetsQuery_js_1.extractAssetsAddQuery)(id);
23
24
  }
24
25
  const { manifestKey } = (0, getManifestEntry_js_1.getManifestEntry)(id, assetsManifest);
25
26
  collectAssets(manifestKey, assetUrls, visistedAssets, assetsManifest, onlyAssets);
@@ -8,7 +8,6 @@ const inferMediaType_js_1 = require("./inferMediaType.js");
8
8
  const getManifestEntry_js_1 = require("./getPageAssets/getManifestEntry.js");
9
9
  const sortPageAssetsForEarlyHintsHeader_js_1 = require("./getPageAssets/sortPageAssetsForEarlyHintsHeader.js");
10
10
  const globalContext_js_1 = require("../globalContext.js");
11
- const assertClientEntryId_js_1 = require("./getPageAssets/assertClientEntryId.js");
12
11
  const import_1 = require("@brillout/import");
13
12
  async function getPageAssets(pageContext, clientDependencies, clientEntries) {
14
13
  const globalContext = (0, globalContext_js_1.getGlobalContext)();
@@ -59,7 +58,6 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
59
58
  }
60
59
  exports.getPageAssets = getPageAssets;
61
60
  async function resolveClientEntriesDev(clientEntry, viteDevServer) {
62
- (0, assertClientEntryId_js_1.assertClientEntryId)(clientEntry);
63
61
  let root = viteDevServer.config.root;
64
62
  (0, utils_js_1.assert)(root);
65
63
  root = (0, utils_js_1.toPosixPath)(root);
@@ -76,11 +74,9 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
76
74
  (0, utils_js_1.assertPosixPath)(clientEntry);
77
75
  let filePath;
78
76
  if (clientEntry.startsWith('/')) {
79
- // User files
80
77
  filePath = (0, utils_js_1.pathJoin)(root, clientEntry);
81
78
  }
82
- else if (clientEntry.startsWith('@@vike/') || (0, utils_js_1.isNpmPackageImport)(clientEntry)) {
83
- // Vike client entry
79
+ else {
84
80
  const { createRequire } = (await (0, import_1.import_)('module')).default;
85
81
  const { dirname } = (await (0, import_1.import_)('path')).default;
86
82
  const { fileURLToPath } = (await (0, import_1.import_)('url')).default;
@@ -91,10 +87,7 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
91
87
  // @ts-expect-error
92
88
  // Bun workaround https://github.com/vikejs/vike/pull/1048
93
89
  const res = typeof Bun !== 'undefined' ? (toPath) => Bun.resolveSync(toPath, __dirname_) : require_.resolve;
94
- if ((0, utils_js_1.isNpmPackageImport)(clientEntry)) {
95
- filePath = res(clientEntry);
96
- }
97
- else {
90
+ if (clientEntry.startsWith('@@vike/')) {
98
91
  (0, utils_js_1.assert)(clientEntry.endsWith('.js'));
99
92
  try {
100
93
  // For Vitest (which doesn't resolve vike to its dist but to its source files)
@@ -107,9 +100,10 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
107
100
  filePath = (0, utils_js_1.toPosixPath)(res(clientEntry.replace('@@vike/dist/esm/client/', '../../../../../dist/esm/client/')));
108
101
  }
109
102
  }
110
- }
111
- else {
112
- (0, utils_js_1.assert)(false);
103
+ else {
104
+ (0, utils_js_1.assertIsNpmPackageImport)(clientEntry);
105
+ filePath = res(clientEntry);
106
+ }
113
107
  }
114
108
  if (!filePath.startsWith('/')) {
115
109
  (0, utils_js_1.assert)(process.platform === 'win32');
@@ -1,7 +1,11 @@
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.getHint = exports.isKnownError = exports.isCjsEsmError = exports.logErrorHint = void 0;
4
7
  const utils_js_1 = require("../utils.js");
8
+ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
5
9
  const knownErrors = [
6
10
  {
7
11
  errMsg: 'jsxDEV is not a function',
@@ -44,6 +48,7 @@ function getHint(error) {
44
48
  exports.getHint = getHint;
45
49
  function logHint(hint) {
46
50
  hint = (0, utils_js_1.formatHintLog)(hint);
51
+ hint = picocolors_1.default.bold(hint);
47
52
  console.error(hint);
48
53
  }
49
54
  function isKnownError(error) {
@@ -48,7 +48,6 @@ __exportStar(require("../../utils/isPropertyGetter.js"), exports);
48
48
  __exportStar(require("../../utils/debug.js"), exports);
49
49
  __exportStar(require("../../utils/urlToFile.js"), exports);
50
50
  __exportStar(require("../../utils/getGlobalObject.js"), exports);
51
- __exportStar(require("../../shared/hooks/executeHook.js"), exports);
52
51
  __exportStar(require("../../utils/freezePartial.js"), exports);
53
52
  __exportStar(require("../../utils/isNpmPackage.js"), exports);
54
53
  __exportStar(require("../../utils/isNotNullish.js"), exports);
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.assertNoInfiniteAbortLoop = exports.AbortRender = exports.getPageContextFromAllRewrites = exports.logAbortErrorHandled = exports.isAbortPageContext = exports.isAbortError = exports.RenderErrorPage = exports.render = exports.redirect = void 0;
7
+ const executeHook_js_1 = require("../hooks/executeHook.js");
7
8
  const utils_js_1 = require("./utils.js");
8
9
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
10
  /**
@@ -121,7 +122,7 @@ function logAbortErrorHandled(err, isProduction, pageContext) {
121
122
  (0, utils_js_1.assert)(urlCurrent);
122
123
  const abortCall = err._pageContextAbort._abortCall;
123
124
  (0, utils_js_1.assert)(abortCall);
124
- const hookLoc = (0, utils_js_1.isUserHookError)(err);
125
+ const hookLoc = (0, executeHook_js_1.isUserHookError)(err);
125
126
  let thrownBy = '';
126
127
  if (hookLoc) {
127
128
  thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.executeGuardHook = void 0;
4
4
  const getHook_js_1 = require("../hooks/getHook.js");
5
5
  const utils_js_1 = require("./utils.js");
6
+ const executeHook_js_1 = require("../hooks/executeHook.js");
6
7
  const errIntro = 'The guard() hook defined by';
7
8
  async function executeGuardHook(pageContext, prepareForUserConsumption) {
8
9
  let hook;
@@ -22,7 +23,7 @@ async function executeGuardHook(pageContext, prepareForUserConsumption) {
22
23
  const res = prepareForUserConsumption(pageContext);
23
24
  if (res)
24
25
  pageContextForUserConsumption = res;
25
- const hookResult = await (0, utils_js_1.executeHook)(() => guard(pageContextForUserConsumption), hook);
26
+ const hookResult = await (0, executeHook_js_1.executeHook)(() => guard(pageContextForUserConsumption), hook);
26
27
  (0, utils_js_1.assertUsage)(hookResult === undefined, `${errIntro} ${hook.hookFilePath} returns a value, but guard() shouldn't return any value`);
27
28
  }
28
29
  exports.executeGuardHook = executeGuardHook;
@@ -8,6 +8,7 @@ const assertPageContextProvidedByUser_js_1 = require("../assertPageContextProvid
8
8
  const utils_js_1 = require("./utils.js");
9
9
  const resolveRouteFunction_js_1 = require("./resolveRouteFunction.js");
10
10
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
11
+ const executeHook_js_1 = require("../hooks/executeHook.js");
11
12
  async function executeOnBeforeRouteHook(pageContext) {
12
13
  const pageContextFromOnBeforeRouteHook = {};
13
14
  if (!pageContext._onBeforeRouteHook)
@@ -41,7 +42,7 @@ async function getPageContextFromHook(onBeforeRouteHook, pageContext) {
41
42
  let hookReturn = onBeforeRouteHook.hookFn(pageContext);
42
43
  (0, resolveRouteFunction_js_1.assertSyncRouting)(hookReturn, `The onBeforeRoute() hook ${onBeforeRouteHook.hookFilePath}`);
43
44
  // TODO/v1-release: make executeOnBeforeRouteHook() and route() sync
44
- hookReturn = await (0, utils_js_1.executeHook)(() => hookReturn, onBeforeRouteHook);
45
+ hookReturn = await (0, executeHook_js_1.executeHook)(() => hookReturn, onBeforeRouteHook);
45
46
  const errPrefix = `The onBeforeRoute() hook defined by ${onBeforeRouteHook.hookFilePath}`;
46
47
  (0, utils_js_1.assertUsage)(hookReturn === null ||
47
48
  hookReturn === undefined ||
@@ -35,7 +35,6 @@ __exportStar(require("../../utils/isStringRecord.js"), exports);
35
35
  __exportStar(require("../../utils/unique.js"), exports);
36
36
  __exportStar(require("../../utils/isBrowser.js"), exports);
37
37
  __exportStar(require("../../utils/parseUrl.js"), exports);
38
- __exportStar(require("../hooks/executeHook.js"), exports);
39
38
  __exportStar(require("../../utils/checkType.js"), exports);
40
39
  __exportStar(require("../../utils/joinEnglish.js"), exports);
41
40
  __exportStar(require("../../utils/projectInfo.js"), exports);
@@ -10,6 +10,7 @@ const filesystemPathHandling_js_1 = require("./filesystemPathHandling.js");
10
10
  /** Assert path is absolute from the filesystem root */
11
11
  function assertPathIsFilesystemAbsolute(p) {
12
12
  (0, filesystemPathHandling_js_1.assertPosixPath)(p);
13
+ (0, assert_js_1.assert)(!p.startsWith('/@fs/'));
13
14
  if (process.platform === 'win32') {
14
15
  (0, assert_js_1.assert)(path_1.default.win32.isAbsolute(p));
15
16
  }
@@ -1,14 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDistinguishable = exports.parse = exports.isValidPathAlias = exports.isNpmPackageImport = void 0;
3
+ exports.isDistinguishable = exports.parse = exports.isValidPathAlias = exports.assertIsNpmPackageImport = exports.isNpmPackageImport = void 0;
4
4
  const assert_js_1 = require("./assert.js");
5
5
  const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
6
6
  (0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
7
- function isNpmPackageImport(str) {
7
+ function isNpmPackageImport(str, { cannotBePathAlias }) {
8
+ // We cannot distinguish path alises that look like npm package imports
9
+ (0, assert_js_1.assert)(cannotBePathAlias);
8
10
  const res = parse(str);
9
11
  return res !== null;
10
12
  }
11
13
  exports.isNpmPackageImport = isNpmPackageImport;
14
+ function assertIsNpmPackageImport(str) {
15
+ (0, assert_js_1.assert)(isNpmPackageImport(str, {
16
+ // If `str` is a path alias that looks like an npm package => assertIsNpmPackageImport() is erroneous but that's okay because the assertion will eventually fail for some other user using a disambiguated path alias.
17
+ cannotBePathAlias: true
18
+ }));
19
+ }
20
+ exports.assertIsNpmPackageImport = assertIsNpmPackageImport;
12
21
  function isNpmPackageName(str) {
13
22
  const res = parse(str);
14
23
  return res !== null && res.importPath === null;
@@ -10,7 +10,14 @@ exports.isUriWithProtocol = exports.createUrlFromComponents = exports.assertUrlC
10
10
  const slice_js_1 = require("./slice.js");
11
11
  const assert_js_1 = require("./assert.js");
12
12
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
13
- const PROTOCOLS = ['http://', 'https://', 'tauri://', 'file://'];
13
+ const PROTOCOLS = [
14
+ 'http://',
15
+ 'https://',
16
+ // For [Tauri](https://tauri.app/)
17
+ 'tauri://',
18
+ // For Electron: https://github.com/vikejs/vike/issues/1557
19
+ 'file://'
20
+ ];
14
21
  function isParsable(url) {
15
22
  // `parseUrl()` works with these URLs
16
23
  return (PROTOCOLS.some((p) => url.startsWith(p)) ||
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = exports.projectInfo = void 0;
4
- const PROJECT_VERSION = '0.4.165-commit-8eba585';
4
+ const PROJECT_VERSION = '0.4.166-commit-6a8acaa';
5
5
  exports.PROJECT_VERSION = PROJECT_VERSION;
6
6
  const projectInfo = {
7
7
  projectName: 'Vike',
@@ -2,7 +2,7 @@ export { initHistoryState, getHistoryState, pushHistory, ScrollPosition, saveScr
2
2
  type HistoryState = {
3
3
  timestamp?: number;
4
4
  scrollPosition?: null | ScrollPosition;
5
- triggedBy?: 'user' | 'vike' | 'browser';
5
+ triggeredBy?: 'user' | 'vike' | 'browser';
6
6
  };
7
7
  type ScrollPosition = {
8
8
  x: number;
@@ -21,8 +21,8 @@ function initHistoryState() {
21
21
  hasModifications = true;
22
22
  state.scrollPosition = getScrollPosition();
23
23
  }
24
- if (!('triggedBy' in state)) {
25
- state.triggedBy = 'browser';
24
+ if (!('triggeredBy' in state)) {
25
+ state.triggeredBy = 'browser';
26
26
  }
27
27
  assertState(state);
28
28
  if (hasModifications) {
@@ -49,7 +49,7 @@ function saveScrollPosition() {
49
49
  function pushHistory(url, overwriteLastHistoryEntry) {
50
50
  if (!overwriteLastHistoryEntry) {
51
51
  const timestamp = getTimestamp();
52
- pushHistoryState({ timestamp, scrollPosition: null, triggedBy: 'vike' }, url);
52
+ pushHistoryState({ timestamp, scrollPosition: null, triggeredBy: 'vike' }, url);
53
53
  }
54
54
  else {
55
55
  replaceHistoryState(getHistoryState(), url);
@@ -82,8 +82,8 @@ function monkeyPatchHistoryPushState() {
82
82
  scrollPosition: getScrollPosition(),
83
83
  timestamp: getTimestamp(),
84
84
  ...stateFromUser,
85
- // Don't allow user to overwrite triggedBy as it would break Vike's handling of the 'popstate' event
86
- triggedBy: 'user'
85
+ // Don't allow user to overwrite triggeredBy as it would break Vike's handling of the 'popstate' event
86
+ triggeredBy: 'user'
87
87
  };
88
88
  return pushStateOriginal(state, ...rest);
89
89
  };
@@ -18,7 +18,7 @@ function onBrowserHistoryNavigation() {
18
18
  window.addEventListener('popstate', async () => {
19
19
  const currentState = getState();
20
20
  const scrollTarget = currentState.historyState.scrollPosition || 'scroll-to-top-or-hash';
21
- const isUserLandPushStateNavigation = currentState.historyState.triggedBy === 'user';
21
+ const isUserLandPushStateNavigation = currentState.historyState.triggeredBy === 'user';
22
22
  const isHashNavigation = currentState.urlWithoutHash === globalObject.previousState.urlWithoutHash;
23
23
  const isBackwardNavigation = !currentState.historyState.timestamp || !globalObject.previousState.historyState.timestamp
24
24
  ? null
@@ -2,7 +2,7 @@ export { buildConfig };
2
2
  export { assertRollupInput };
3
3
  export { analyzeClientEntries };
4
4
  export { manifestTempFile };
5
- import { assert, resolveOutDir, viteIsSSR, getFilePathAbsoluteFilesystem, addOnBeforeLogHook, removeFileExtention, unique, assertPosixPath, assertUsage, injectRollupInputs, normalizeRollupInput, getOutDirs, isNpmPackageImport, assertNodeEnv_build } from '../utils.js';
5
+ import { assert, resolveOutDir, viteIsSSR, addOnBeforeLogHook, removeFileExtention, unique, assertUsage, injectRollupInputs, normalizeRollupInput, getOutDirs, assertNodeEnv_build, assertIsNpmPackageImport } from '../utils.js';
6
6
  import { getVikeConfig, isV1Design } from './importUserCode/v1-design/getVikeConfig.js';
7
7
  import { getConfigValue } from '../../../shared/page-configs/helpers.js';
8
8
  import { findPageFiles } from '../shared/findPageFiles.js';
@@ -16,6 +16,7 @@ import path from 'path';
16
16
  import { fixServerAssets, fixServerAssets_isEnabled } from './buildConfig/fixServerAssets.js';
17
17
  import { set_constant_ASSETS_MAP } from './importBuild/index.js';
18
18
  import { prependEntriesDir } from '../../shared/prependEntriesDir.js';
19
+ import { getFilePathResolved } from '../shared/getFilePath.js';
19
20
  // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
20
21
  const importMetaUrl = import.meta.url;
21
22
  const require_ = createRequire(importMetaUrl);
@@ -200,18 +201,22 @@ async function getPageFileEntries(config, includeAssetsImportedByServer) {
200
201
  return pageFileEntries;
201
202
  }
202
203
  function getEntryFromClientEntry(clientEntry, config, addExtractAssetsQuery) {
203
- if (isNpmPackageImport(clientEntry)) {
204
+ if (!clientEntry.startsWith('/')) {
205
+ assertIsNpmPackageImport(clientEntry);
204
206
  const entryTarget = clientEntry;
205
207
  const entryName = prependEntriesDir(clientEntry);
206
208
  return { entryName, entryTarget };
207
209
  }
208
- const filePath = clientEntry;
209
- assertPosixPath(filePath);
210
- assert(filePath.startsWith('/'));
211
- let entryTarget = getFilePathAbsoluteFilesystem(filePath, config);
210
+ const filePathAbsoluteUserRootDir = clientEntry;
211
+ assert(filePathAbsoluteUserRootDir.startsWith('/'));
212
+ const filePath = getFilePathResolved({
213
+ filePathAbsoluteUserRootDir,
214
+ userRootDir: config.root
215
+ });
216
+ let entryTarget = filePath.filePathAbsoluteFilesystem;
212
217
  if (addExtractAssetsQuery)
213
218
  entryTarget = extractAssetsAddQuery(entryTarget);
214
- let entryName = filePath;
219
+ let entryName = filePathAbsoluteUserRootDir;
215
220
  if (addExtractAssetsQuery)
216
221
  entryName = extractAssetsAddQuery(entryName);
217
222
  entryName = removeFileExtention(entryName);
@@ -13,8 +13,9 @@ import pc from '@brillout/picocolors';
13
13
  // - Aliases react imports
14
14
  // - @vitejs/plugin-vue2
15
15
  // - https://github.com/vikejs/vike/issues/1329
16
- // TODO/v1-release: replace assertWarning() with assertUsage()
17
16
  function assertResolveAlias(config) {
17
+ // TODO: re-implement warning https://github.com/vikejs/vike/issues/1567
18
+ return;
18
19
  const aliases = getAliases(config);
19
20
  const errPrefix = config.configFile || 'Your Vite configuration';
20
21
  const errSuffix1 = 'see https://vike.dev/path-aliases#vite';
@@ -1,10 +1,12 @@
1
1
  export { determineOptimizeDeps };
2
2
  import { findPageFiles } from '../../shared/findPageFiles.js';
3
- import { assert, getFilePathAbsoluteFilesystem, isNpmPackageImport, unique } from '../../utils.js';
3
+ import { assert, assertIsNpmPackageImport, createDebugger, unique } from '../../utils.js';
4
4
  import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
5
5
  import { getConfigValueSourcesNotOverriden } from '../../shared/getConfigValueSourcesNotOverriden.js';
6
6
  import { analyzeClientEntries } from '../buildConfig.js';
7
7
  import { virtualFileIdImportUserCodeClientCR, virtualFileIdImportUserCodeClientSR } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
8
+ import { getFilePathResolved } from '../../shared/getFilePath.js';
9
+ const debug = createDebugger('vike:optimizeDeps');
8
10
  async function determineOptimizeDeps(config, isDev) {
9
11
  const { pageConfigs } = await getVikeConfig(config, isDev);
10
12
  const { entries, include } = await getPageDeps(config, pageConfigs, isDev);
@@ -21,7 +23,11 @@ async function determineOptimizeDeps(config, isDev) {
21
23
  */
22
24
  config.optimizeDeps.include = [...include, ...normalizeInclude(config.optimizeDeps.include)];
23
25
  config.optimizeDeps.entries = [...entries, ...normalizeEntries(config.optimizeDeps.entries)];
24
- // console.log('config.optimizeDeps', { entries: config.optimizeDeps.entries, include: config.optimizeDeps.include })
26
+ if (debug.isEnabled)
27
+ debug('config.optimizeDeps', {
28
+ 'config.optimizeDeps.entries': config.optimizeDeps.entries,
29
+ 'config.optimizeDeps.include': config.optimizeDeps.include
30
+ });
25
31
  }
26
32
  async function getPageDeps(config, pageConfigs, isDev) {
27
33
  let entries = [];
@@ -44,24 +50,10 @@ async function getPageDeps(config, pageConfigs, isDev) {
44
50
  else {
45
51
  // Adding definedAt.filePathAbsoluteFilesystem doesn't work for npm packages, I guess because of Vite's config.server.fs.allow
46
52
  const { importPathAbsolute } = definedAt;
47
- assert(importPathAbsolute);
48
- // We need to differentiate between npm package imports and path aliases.
49
- // There are path aliases that cannot be distinguished from npm package names.
50
- // We recommend users to use the '#' prefix convention for path aliases, see https://vike.dev/path-aliases#vite and assertResolveAlias()
51
- if (isNpmPackageImport(importPathAbsolute)) {
52
- // isNpmPackageImport() returns false for a path alias like #root/renderer/onRenderClient
53
- assert(!importPathAbsolute.startsWith('#'));
54
- include.push(importPathAbsolute);
55
- }
56
- else {
57
- /* Path aliases, e.g.:
58
- * ```js
59
- * // /renderer/+config.js
60
- * import onRenderClient from '#root/renderer/onRenderClient'
61
- * ```
62
- */
63
- entries.push(importPathAbsolute);
64
- }
53
+ assert(importPathAbsolute); // Help TS
54
+ // Shouldn't be a path alias, as path aliases would need to be added to config.optimizeDeps.entries instead of config.optimizeDeps.include
55
+ assertIsNpmPackageImport(importPathAbsolute);
56
+ include.push(importPathAbsolute);
65
57
  }
66
58
  });
67
59
  });
@@ -69,9 +61,12 @@ async function getPageDeps(config, pageConfigs, isDev) {
69
61
  // V0.4 design
70
62
  {
71
63
  const pageFiles = await findPageFiles(config, ['.page', '.page.client'], isDev);
72
- pageFiles.forEach((filePath) => {
73
- const entry = getFilePathAbsoluteFilesystem(filePath, config);
74
- entries.push(entry);
64
+ const userRootDir = config.root;
65
+ pageFiles.forEach((filePathAbsoluteUserRootDir) => {
66
+ const entry = getFilePathResolved({ filePathAbsoluteUserRootDir, userRootDir });
67
+ const { filePathAbsoluteFilesystem } = entry;
68
+ assert(filePathAbsoluteFilesystem);
69
+ entries.push(filePathAbsoluteFilesystem);
75
70
  });
76
71
  }
77
72
  entries = unique(entries);
@@ -2,8 +2,9 @@ export { envVarsPlugin };
2
2
  // For ./envVars.spec.ts
3
3
  export { applyEnvVar };
4
4
  import { loadEnv } from 'vite';
5
- import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, getFilePathAbsoluteUserRootDir, lowerFirst } from '../utils.js';
5
+ import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, lowerFirst } from '../utils.js';
6
6
  import { sourceMapPassthrough } from '../shared/rollupSourceMap.js';
7
+ import { getModuleFilePath } from '../shared/getFilePath.js';
7
8
  function envVarsPlugin() {
8
9
  let envsAll;
9
10
  let config;
@@ -45,10 +46,10 @@ function envVarsPlugin() {
45
46
  if (isPrivate && isClientSide) {
46
47
  if (!code.includes(envStatement))
47
48
  return;
48
- const filePathToShowToUser = getFilePathAbsoluteUserRootDir(id, config.root);
49
+ const modulePath = getModuleFilePath(id, config);
49
50
  const errMsgAddendum = isBuild ? '' : ' (Vike will prevent your app from building for production)';
50
51
  const keyPublic = `${publicPrefix}${envName}`;
51
- const errMsg = `${envStatement} is used in client-side file ${filePathToShowToUser} which means that the environment variable ${envName} will be included in client-side bundles and, therefore, ${envName} will be publicly exposed which can be a security leak${errMsgAddendum}. Use ${envStatement} only in server-side files, or rename ${envName} to ${keyPublic}, see https://vike.dev/env`;
52
+ const errMsg = `${envStatement} is used in client-side file ${modulePath} which means that the environment variable ${envName} will be included in client-side bundles and, therefore, ${envName} will be publicly exposed which can be a security leak${errMsgAddendum}. Use ${envStatement} only in server-side files, or rename ${envName} to ${keyPublic}, see https://vike.dev/env`;
52
53
  if (isBuild) {
53
54
  assertUsage(false, errMsg);
54
55
  }