vike 0.4.161 → 0.4.162-commit-8995471
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.
- package/dist/cjs/__internal/index.js +2 -2
- package/dist/cjs/node/plugin/index.js +0 -2
- package/dist/cjs/node/plugin/plugins/buildConfig.js +41 -37
- package/dist/cjs/node/plugin/plugins/config/index.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -8
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -18
- package/dist/cjs/node/plugin/plugins/devConfig/index.js +2 -4
- package/dist/cjs/node/plugin/plugins/envVars.js +6 -2
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +10 -22
- package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
- package/dist/cjs/node/plugin/plugins/importBuild/getVikeManifest.js +1 -21
- package/dist/cjs/node/plugin/plugins/importBuild/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +29 -95
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +8 -8
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +1 -9
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +4 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +35 -36
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +109 -104
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -33
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +0 -14
- package/dist/cjs/node/plugin/shared/rollupSourceMap.js +20 -0
- package/dist/cjs/node/plugin/utils.js +0 -1
- package/dist/cjs/node/prerender/runPrerender.js +3 -2
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +8 -19
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +1 -0
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +2 -8
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +6 -7
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +23 -28
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -23
- package/dist/cjs/node/runtime/utils.js +1 -2
- package/dist/cjs/node/shared/assertPluginManifest.js +1 -4
- package/dist/cjs/node/shared/assertV1Design.js +26 -0
- package/dist/cjs/node/shared/{getClientEntryFilePath.js → getClientEntry.js} +3 -3
- package/dist/cjs/node/shared/prependEntriesDir.js +13 -0
- package/dist/cjs/node/shared/utils.js +2 -0
- package/dist/cjs/node/shared/virtual-files/virtualFileImportUserCode.js +1 -0
- package/dist/cjs/shared/hooks/getHook.js +1 -1
- package/dist/cjs/shared/page-configs/helpers/getConfigValue.js +1 -0
- package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +1 -1
- package/dist/cjs/shared/route/abort.js +1 -0
- package/dist/cjs/shared/route/resolvePrecedence.js +1 -0
- package/dist/cjs/utils/{nodeEnv.js → assertNodeEnv.js} +3 -0
- package/dist/cjs/utils/formatHintLog.js +1 -0
- package/dist/cjs/utils/hasProp.js +1 -0
- package/dist/cjs/utils/isScriptFile.js +15 -4
- package/dist/cjs/utils/projectInfo.js +1 -1
- package/dist/esm/__internal/index.js +1 -1
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +20 -14
- package/dist/esm/client/shared/getPageContextProxyForUser.js +19 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.js +1 -0
- package/dist/esm/node/plugin/index.js +0 -2
- package/dist/esm/node/plugin/plugins/buildConfig.js +40 -36
- package/dist/esm/node/plugin/plugins/config/index.js +2 -7
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.d.ts +1 -2
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.d.ts +1 -2
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -19
- package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -4
- package/dist/esm/node/plugin/plugins/envVars.js +6 -2
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +11 -23
- package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
- package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.d.ts +1 -2
- package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.js +2 -19
- package/dist/esm/node/plugin/plugins/importBuild/index.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +31 -97
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +8 -8
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +1 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +4 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.d.ts +1 -13
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformFileImports.js +35 -36
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +111 -106
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -33
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -15
- package/dist/esm/node/plugin/shared/rollupSourceMap.d.ts +14 -0
- package/dist/esm/node/plugin/shared/rollupSourceMap.js +17 -0
- package/dist/esm/node/plugin/utils.d.ts +0 -1
- package/dist/esm/node/plugin/utils.js +0 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +3 -3
- package/dist/esm/node/prerender/runPrerender.js +4 -3
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +3 -10
- package/dist/esm/node/runtime/globalContext.js +7 -18
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +1 -0
- package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +2 -8
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +6 -7
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +24 -29
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -24
- package/dist/esm/node/runtime/utils.d.ts +1 -2
- package/dist/esm/node/runtime/utils.js +1 -2
- package/dist/esm/node/shared/ViteManifest.d.ts +1 -0
- package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
- package/dist/esm/node/shared/assertPluginManifest.js +2 -5
- package/dist/esm/node/shared/assertV1Design.d.ts +4 -0
- package/dist/esm/node/shared/assertV1Design.js +23 -0
- package/dist/esm/node/shared/getClientEntry.d.ts +3 -0
- package/dist/esm/node/shared/{getClientEntryFilePath.js → getClientEntry.js} +2 -2
- package/dist/esm/node/shared/prependEntriesDir.d.ts +2 -0
- package/dist/esm/node/shared/prependEntriesDir.js +10 -0
- package/dist/esm/node/shared/utils.d.ts +2 -0
- package/dist/esm/node/shared/utils.js +2 -0
- package/dist/esm/node/shared/virtual-files/virtualFileImportUserCode.js +1 -0
- package/dist/esm/shared/ConfigVike.d.ts +0 -27
- package/dist/esm/shared/hooks/getHook.js +2 -2
- package/dist/esm/shared/page-configs/Config.d.ts +5 -0
- package/dist/esm/shared/page-configs/PageConfig.d.ts +2 -4
- package/dist/esm/shared/page-configs/helpers/getConfigValue.js +1 -0
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +1 -1
- package/dist/esm/shared/route/abort.js +1 -0
- package/dist/esm/shared/route/resolvePrecedence.js +1 -0
- package/dist/esm/utils/{nodeEnv.js → assertNodeEnv.js} +3 -0
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/formatHintLog.js +1 -0
- package/dist/esm/utils/hasProp.js +1 -0
- package/dist/esm/utils/isScriptFile.d.ts +3 -1
- package/dist/esm/utils/isScriptFile.js +14 -3
- package/dist/esm/utils/projectInfo.d.ts +2 -2
- package/dist/esm/utils/projectInfo.js +1 -1
- package/package.json +4 -3
- package/dist/cjs/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +0 -27
- package/dist/cjs/node/plugin/plugins/config/resolveExtensions.js +0 -107
- package/dist/cjs/node/plugin/plugins/config/stemUtils.js +0 -85
- package/dist/cjs/node/plugin/plugins/extensionsAssets.js +0 -101
- package/dist/cjs/node/plugin/shared/removeSourceMap.js +0 -12
- package/dist/cjs/utils/getDependencyPackageJson.js +0 -91
- package/dist/cjs/utils/isStemPackageName.js +0 -14
- package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.d.ts +0 -3
- package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +0 -24
- package/dist/esm/node/plugin/plugins/config/resolveExtensions.d.ts +0 -4
- package/dist/esm/node/plugin/plugins/config/resolveExtensions.js +0 -101
- package/dist/esm/node/plugin/plugins/config/stemUtils.d.ts +0 -8
- package/dist/esm/node/plugin/plugins/config/stemUtils.js +0 -79
- package/dist/esm/node/plugin/plugins/extensionsAssets.d.ts +0 -3
- package/dist/esm/node/plugin/plugins/extensionsAssets.js +0 -95
- package/dist/esm/node/plugin/shared/removeSourceMap.d.ts +0 -7
- package/dist/esm/node/plugin/shared/removeSourceMap.js +0 -9
- package/dist/esm/node/shared/getClientEntryFilePath.d.ts +0 -3
- package/dist/esm/utils/getDependencyPackageJson.d.ts +0 -6
- package/dist/esm/utils/getDependencyPackageJson.js +0 -85
- package/dist/esm/utils/isStemPackageName.d.ts +0 -1
- package/dist/esm/utils/isStemPackageName.js +0 -10
- /package/dist/esm/utils/{nodeEnv.d.ts → assertNodeEnv.d.ts} +0 -0
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assertClientEntryId = void 0;
|
|
4
|
-
const globalContext_js_1 = require("../../globalContext.js");
|
|
5
4
|
const utils_js_1 = require("../../utils.js");
|
|
6
5
|
const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
|
|
7
6
|
function assertClientEntryId(id) {
|
|
8
7
|
(0, utils_js_1.assertPosixPath)(id);
|
|
9
8
|
(0, utils_js_1.assert)(!id.startsWith('/@fs'), id);
|
|
10
|
-
const isPkg = (0, utils_js_1.isNpmPackageImport)(id);
|
|
11
9
|
(0, utils_js_1.assert)(
|
|
12
10
|
// Client entry
|
|
13
11
|
id.startsWith('@@vike/') ||
|
|
@@ -15,11 +13,7 @@ function assertClientEntryId(id) {
|
|
|
15
13
|
id.startsWith('/') ||
|
|
16
14
|
// Page code importer
|
|
17
15
|
(0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(id) ||
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
if (isPkg) {
|
|
21
|
-
const { configVike } = (0, globalContext_js_1.getGlobalContext)();
|
|
22
|
-
(0, utils_js_1.assert)(configVike === null || configVike.extensions.some(({ npmPackageName }) => id.startsWith(npmPackageName)), id);
|
|
23
|
-
}
|
|
16
|
+
// Import
|
|
17
|
+
(0, utils_js_1.isNpmPackageImport)(id), id);
|
|
24
18
|
}
|
|
25
19
|
exports.assertClientEntryId = assertClientEntryId;
|
|
@@ -4,7 +4,8 @@ exports.getManifestEntry = void 0;
|
|
|
4
4
|
const utils_js_1 = require("../../utils.js");
|
|
5
5
|
const assertClientEntryId_js_1 = require("./assertClientEntryId.js");
|
|
6
6
|
const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
|
|
7
|
-
|
|
7
|
+
const prependEntriesDir_js_1 = require("../../../shared/prependEntriesDir.js");
|
|
8
|
+
function getManifestEntry(id, clientManifest) {
|
|
8
9
|
(0, assertClientEntryId_js_1.assertClientEntryId)(id);
|
|
9
10
|
const debugInfo = getDebugInfo(id, clientManifest);
|
|
10
11
|
// Vike client entry
|
|
@@ -42,13 +43,11 @@ function getManifestEntry(id, clientManifest, manifestKeyMap) {
|
|
|
42
43
|
(0, utils_js_1.assert)(manifestEntry, debugInfo);
|
|
43
44
|
return { manifestEntry, manifestKey };
|
|
44
45
|
}
|
|
45
|
-
//
|
|
46
|
+
// npm package import
|
|
46
47
|
if ((0, utils_js_1.isNpmPackageImport)(id)) {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const manifestEntry = clientManifest[manifestKey];
|
|
51
|
-
(0, utils_js_1.assert)(manifestEntry, debugInfo2);
|
|
48
|
+
const found = Object.entries(clientManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
|
|
49
|
+
(0, utils_js_1.assert)(found);
|
|
50
|
+
const [manifestKey, manifestEntry] = found;
|
|
52
51
|
return { manifestEntry, manifestKey };
|
|
53
52
|
}
|
|
54
53
|
// extensions[number].pageConfigsSrcDir
|
|
@@ -4,7 +4,7 @@ exports.retrieveAssetsProd = void 0;
|
|
|
4
4
|
const utils_js_1 = require("../../utils.js");
|
|
5
5
|
const getManifestEntry_js_1 = require("./getManifestEntry.js");
|
|
6
6
|
const extractAssetsQuery_js_1 = require("../../../shared/extractAssetsQuery.js");
|
|
7
|
-
function retrieveAssetsProd(clientDependencies, clientManifest, includeAssetsImportedByServer
|
|
7
|
+
function retrieveAssetsProd(clientDependencies, clientManifest, includeAssetsImportedByServer) {
|
|
8
8
|
let assetUrls = new Set();
|
|
9
9
|
(0, utils_js_1.assert)(clientManifest);
|
|
10
10
|
const visistedAssets = new Set();
|
|
@@ -21,7 +21,7 @@ function retrieveAssetsProd(clientDependencies, clientManifest, includeAssetsImp
|
|
|
21
21
|
id = (0, extractAssetsQuery_js_1.extractAssetsAddQuery)(id);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
const { manifestKey } = (0, getManifestEntry_js_1.getManifestEntry)(id, clientManifest
|
|
24
|
+
const { manifestKey } = (0, getManifestEntry_js_1.getManifestEntry)(id, clientManifest);
|
|
25
25
|
collectAssets(manifestKey, assetUrls, visistedAssets, clientManifest, onlyAssets);
|
|
26
26
|
});
|
|
27
27
|
collectSingleStyle(assetUrls, clientManifest);
|
|
@@ -16,15 +16,14 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
|
16
16
|
let assetUrls;
|
|
17
17
|
let clientEntriesSrc;
|
|
18
18
|
if (isDev) {
|
|
19
|
-
const { viteDevServer
|
|
20
|
-
clientEntriesSrc = await Promise.all(clientEntries.map((clientEntry) => resolveClientEntriesDev(clientEntry, viteDevServer
|
|
19
|
+
const { viteDevServer } = globalContext;
|
|
20
|
+
clientEntriesSrc = await Promise.all(clientEntries.map((clientEntry) => resolveClientEntriesDev(clientEntry, viteDevServer)));
|
|
21
21
|
assetUrls = await (0, retrieveAssetsDev_js_1.retrieveAssetsDev)(clientDependencies, viteDevServer);
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
|
-
const {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
assetUrls = (0, retrieveAssetsProd_js_1.retrieveAssetsProd)(clientDependencies, clientManifest, pageContext._includeAssetsImportedByServer, manifestKeyMap);
|
|
24
|
+
const { clientManifest } = globalContext;
|
|
25
|
+
clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, clientManifest));
|
|
26
|
+
assetUrls = (0, retrieveAssetsProd_js_1.retrieveAssetsProd)(clientDependencies, clientManifest, pageContext._includeAssetsImportedByServer);
|
|
28
27
|
}
|
|
29
28
|
let pageAssets = [];
|
|
30
29
|
(0, utils_js_1.unique)([...clientEntriesSrc, ...assetUrls]).forEach((src) => {
|
|
@@ -59,7 +58,7 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
|
59
58
|
return pageAssets;
|
|
60
59
|
}
|
|
61
60
|
exports.getPageAssets = getPageAssets;
|
|
62
|
-
async function resolveClientEntriesDev(clientEntry, viteDevServer
|
|
61
|
+
async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
63
62
|
(0, assertClientEntryId_js_1.assertClientEntryId)(clientEntry);
|
|
64
63
|
let root = viteDevServer.config.root;
|
|
65
64
|
(0, utils_js_1.assert)(root);
|
|
@@ -80,7 +79,7 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer, configVike) {
|
|
|
80
79
|
// User files
|
|
81
80
|
filePath = (0, utils_js_1.pathJoin)(root, clientEntry);
|
|
82
81
|
}
|
|
83
|
-
else if (clientEntry.startsWith('@@vike/')) {
|
|
82
|
+
else if (clientEntry.startsWith('@@vike/') || (0, utils_js_1.isNpmPackageImport)(clientEntry)) {
|
|
84
83
|
// Vike client entry
|
|
85
84
|
const { createRequire } = (await (0, import_1.import_)('module')).default;
|
|
86
85
|
const { dirname } = (await (0, import_1.import_)('path')).default;
|
|
@@ -92,27 +91,23 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer, configVike) {
|
|
|
92
91
|
// @ts-expect-error
|
|
93
92
|
// Bun workaround https://github.com/vikejs/vike/pull/1048
|
|
94
93
|
const res = typeof Bun !== 'undefined' ? (toPath) => Bun.resolveSync(toPath, __dirname_) : require_.resolve;
|
|
95
|
-
(0, utils_js_1.
|
|
96
|
-
|
|
97
|
-
// For Vitest (which doesn't resolve vike to its dist but to its source files)
|
|
98
|
-
// [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/node/runtime/renderPage/getPageAssets.js
|
|
99
|
-
filePath = (0, utils_js_1.toPosixPath)(res(clientEntry.replace('@@vike/dist/esm/client/', '../../../client/').replace('.js', '.ts')));
|
|
94
|
+
if ((0, utils_js_1.isNpmPackageImport)(clientEntry)) {
|
|
95
|
+
filePath = res(clientEntry);
|
|
100
96
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
else {
|
|
98
|
+
(0, utils_js_1.assert)(clientEntry.endsWith('.js'));
|
|
99
|
+
try {
|
|
100
|
+
// For Vitest (which doesn't resolve vike to its dist but to its source files)
|
|
101
|
+
// [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/node/runtime/renderPage/getPageAssets.js
|
|
102
|
+
filePath = (0, utils_js_1.toPosixPath)(res(clientEntry.replace('@@vike/dist/esm/client/', '../../../client/').replace('.js', '.ts')));
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// For users
|
|
106
|
+
// [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/dist/esm/node/runtime/renderPage/getPageAssets.js
|
|
107
|
+
filePath = (0, utils_js_1.toPosixPath)(res(clientEntry.replace('@@vike/dist/esm/client/', '../../../../../dist/esm/client/')));
|
|
108
|
+
}
|
|
105
109
|
}
|
|
106
110
|
}
|
|
107
|
-
else if ((0, utils_js_1.isNpmPackageImport)(clientEntry)) {
|
|
108
|
-
const extensionPageFile = configVike.extensions
|
|
109
|
-
.map(({ pageConfigsDistFiles }) => pageConfigsDistFiles)
|
|
110
|
-
.flat()
|
|
111
|
-
.filter(utils_js_1.isNotNullish)
|
|
112
|
-
.find((e) => e.importPath === clientEntry);
|
|
113
|
-
(0, utils_js_1.assert)(extensionPageFile, clientEntry);
|
|
114
|
-
filePath = extensionPageFile.filePath;
|
|
115
|
-
}
|
|
116
111
|
else {
|
|
117
112
|
(0, utils_js_1.assert)(false);
|
|
118
113
|
}
|
|
@@ -124,8 +119,8 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer, configVike) {
|
|
|
124
119
|
(0, utils_js_1.assertPosixPath)(filePath);
|
|
125
120
|
return filePath;
|
|
126
121
|
}
|
|
127
|
-
function resolveClientEntriesProd(clientEntry, clientManifest
|
|
128
|
-
const { manifestEntry } = (0, getManifestEntry_js_1.getManifestEntry)(clientEntry, clientManifest
|
|
122
|
+
function resolveClientEntriesProd(clientEntry, clientManifest) {
|
|
123
|
+
const { manifestEntry } = (0, getManifestEntry_js_1.getManifestEntry)(clientEntry, clientManifest);
|
|
129
124
|
(0, utils_js_1.assert)(manifestEntry.isEntry || manifestEntry.isDynamicEntry || clientEntry.endsWith('.css'), { clientEntry });
|
|
130
125
|
let { file } = manifestEntry;
|
|
131
126
|
(0, utils_js_1.assert)(!file.startsWith('/'));
|
|
@@ -21,8 +21,8 @@ const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePa
|
|
|
21
21
|
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
|
-
const helpers_js_1 = require("../../../shared/page-configs/helpers.js");
|
|
25
24
|
const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
|
|
25
|
+
const assertV1Design_js_1 = require("../../shared/assertV1Design.js");
|
|
26
26
|
async function renderPageAlreadyRouted(pageContext) {
|
|
27
27
|
// pageContext._pageId can either be the:
|
|
28
28
|
// - ID of the page matching the routing, or the
|
|
@@ -156,7 +156,7 @@ async function getRenderContext() {
|
|
|
156
156
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
157
157
|
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = await (0, getPageFiles_js_1.getPageFilesAll)(false, globalContext.isProduction);
|
|
158
158
|
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
159
|
-
assertV1Design(pageFilesAll, pageConfigs);
|
|
159
|
+
(0, assertV1Design_js_1.assertV1Design)(pageFilesAll.length > 0, pageConfigs, pageFilesAll);
|
|
160
160
|
const renderContext = {
|
|
161
161
|
pageFilesAll: pageFilesAll,
|
|
162
162
|
pageConfigs,
|
|
@@ -168,24 +168,3 @@ async function getRenderContext() {
|
|
|
168
168
|
return renderContext;
|
|
169
169
|
}
|
|
170
170
|
exports.getRenderContext = getRenderContext;
|
|
171
|
-
function assertV1Design(pageFilesAll, pageConfigs) {
|
|
172
|
-
const isV1Design = pageConfigs.length !== 0;
|
|
173
|
-
const isDesignOld = pageFilesAll.length !== 0;
|
|
174
|
-
if (isV1Design && isDesignOld) {
|
|
175
|
-
const indent = '- ';
|
|
176
|
-
const v1Files = (0, utils_js_1.unique)(pageConfigs
|
|
177
|
-
.map((p) => Object.values(p.configValues)
|
|
178
|
-
.map(helpers_js_1.getConfigValueFilePathToShowToUser)
|
|
179
|
-
.filter(utils_js_1.isNotNullish)
|
|
180
|
-
.map((filePathToShowToUser) => indent + filePathToShowToUser))
|
|
181
|
-
.flat(2));
|
|
182
|
-
(0, utils_js_1.assertUsage)(false, [
|
|
183
|
-
'Mixing the new V1 design with the old V0.4 design is forbidden.',
|
|
184
|
-
'V1 files:',
|
|
185
|
-
...v1Files,
|
|
186
|
-
'V0.4 files:',
|
|
187
|
-
...pageFilesAll.map((p) => indent + p.filePath)
|
|
188
|
-
].join('\n'));
|
|
189
|
-
}
|
|
190
|
-
(0, utils_js_1.assertWarning)(!isDesignOld, "You are using Vike's deprecated design. Update to the new V1 design, see https://vike.dev/migration/v1-design for how to migrate.", { onlyOnce: true });
|
|
191
|
-
}
|
|
@@ -49,7 +49,6 @@ __exportStar(require("../../utils/debug.js"), exports);
|
|
|
49
49
|
__exportStar(require("../../utils/urlToFile.js"), exports);
|
|
50
50
|
__exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
51
51
|
__exportStar(require("../../shared/hooks/executeHook.js"), exports);
|
|
52
|
-
__exportStar(require("../../utils/isStemPackageName.js"), exports);
|
|
53
52
|
__exportStar(require("../../utils/freezePartial.js"), exports);
|
|
54
53
|
__exportStar(require("../../utils/isNpmPackage.js"), exports);
|
|
55
54
|
__exportStar(require("../../utils/isNotNullish.js"), exports);
|
|
@@ -61,7 +60,7 @@ __exportStar(require("../../utils/getFileExtension.js"), exports);
|
|
|
61
60
|
__exportStar(require("../../utils/assertIsNotProductionRuntime.js"), exports);
|
|
62
61
|
__exportStar(require("../../utils/virtual-files.js"), exports);
|
|
63
62
|
__exportStar(require("../../utils/path-shim.js"), exports);
|
|
64
|
-
__exportStar(require("../../utils/
|
|
63
|
+
__exportStar(require("../../utils/assertNodeEnv.js"), exports);
|
|
65
64
|
__exportStar(require("../../utils/isHtml.js"), exports);
|
|
66
65
|
__exportStar(require("../../utils/warnIfErrorIsNotObject.js"), exports);
|
|
67
66
|
__exportStar(require("../../utils/stripAnsi.js"), exports);
|
|
@@ -9,16 +9,13 @@ function assertPluginManifest(pluginManifest) {
|
|
|
9
9
|
(0, assertRuntimeManifest_js_1.assertRuntimeManifest)(pluginManifest);
|
|
10
10
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pluginManifest, 'usesClientRouter', 'boolean'));
|
|
11
11
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pluginManifest, 'version', 'string'));
|
|
12
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pluginManifest, 'manifestKeyMap', 'object'));
|
|
13
|
-
const { manifestKeyMap } = pluginManifest;
|
|
14
|
-
(0, utils_js_1.assert)((0, utils_js_1.isStringRecord)(manifestKeyMap));
|
|
15
12
|
// Avoid:
|
|
16
13
|
// ```
|
|
17
14
|
// Uncaught (in promise) TypeError: Cannot set property manifestKeyMap of #<Object> which has only a getter
|
|
18
15
|
// ```
|
|
16
|
+
// We removed manifestKeyMap, maybe this isn't needed anymore.
|
|
19
17
|
// See https://github.com/vikejs/vike/issues/596
|
|
20
18
|
const pluginManifestClone = { ...pluginManifest };
|
|
21
|
-
(0, utils_js_1.objectAssign)(pluginManifestClone, { manifestKeyMap });
|
|
22
19
|
(0, utils_js_1.checkType)(pluginManifestClone);
|
|
23
20
|
}
|
|
24
21
|
exports.assertPluginManifest = assertPluginManifest;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertV1Design = void 0;
|
|
4
|
+
const helpers_js_1 = require("../../shared/page-configs/helpers.js");
|
|
5
|
+
const utils_js_1 = require("./utils.js");
|
|
6
|
+
function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
|
|
7
|
+
const isV1Design = pageConfigs.length > 0;
|
|
8
|
+
if (isV1Design && isOldDesign) {
|
|
9
|
+
const lines = ['Mixing the new V1 design with the old V0.4 design is forbidden.'];
|
|
10
|
+
if (pageFilesAll) {
|
|
11
|
+
(0, utils_js_1.assert)(pageFilesAll.length > 0);
|
|
12
|
+
const indent = '- ';
|
|
13
|
+
const filesV1 = (0, utils_js_1.unique)(pageConfigs
|
|
14
|
+
.map((p) => Object.values(p.configValues)
|
|
15
|
+
.map(helpers_js_1.getConfigValueFilePathToShowToUser)
|
|
16
|
+
.filter(utils_js_1.isNotNullish)
|
|
17
|
+
.map((filePathToShowToUser) => indent + filePathToShowToUser))
|
|
18
|
+
.flat(2));
|
|
19
|
+
const filesOld = pageFilesAll.map((p) => indent + p.filePath);
|
|
20
|
+
lines.push(...['V1 design files:', ...filesV1, 'Old design files:', ...filesOld]);
|
|
21
|
+
}
|
|
22
|
+
(0, utils_js_1.assertUsage)(false, lines.join('\n'));
|
|
23
|
+
}
|
|
24
|
+
(0, utils_js_1.assertWarning)(!isOldDesign, "You are using Vike's deprecated design. Update to the new V1 design, see https://vike.dev/migration/v1-design for how to migrate.", { onlyOnce: true });
|
|
25
|
+
}
|
|
26
|
+
exports.assertV1Design = assertV1Design;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getClientEntry = void 0;
|
|
4
4
|
const helpers_js_1 = require("../../shared/page-configs/helpers.js");
|
|
5
|
-
function
|
|
5
|
+
function getClientEntry(pageConfig) {
|
|
6
6
|
const configName = 'client';
|
|
7
7
|
const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, configName, 'string');
|
|
8
8
|
if (!configValue)
|
|
9
9
|
return null;
|
|
10
10
|
return configValue.value;
|
|
11
11
|
}
|
|
12
|
-
exports.
|
|
12
|
+
exports.getClientEntry = getClientEntry;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prependEntriesDir = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
function prependEntriesDir(entryName) {
|
|
6
|
+
if (entryName.startsWith('/')) {
|
|
7
|
+
entryName = entryName.slice(1);
|
|
8
|
+
}
|
|
9
|
+
(0, utils_js_1.assert)(!entryName.startsWith('/'));
|
|
10
|
+
entryName = `entries/${entryName}`;
|
|
11
|
+
return entryName;
|
|
12
|
+
}
|
|
13
|
+
exports.prependEntriesDir = prependEntriesDir;
|
|
@@ -31,3 +31,5 @@ __exportStar(require("../../utils/parseUrl-extras.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/virtual-files.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/assertIsNotBrowser.js"), exports);
|
|
34
|
+
__exportStar(require("../../utils/isNotNullish.js"), exports);
|
|
35
|
+
__exportStar(require("../../utils/unique.js"), exports);
|
|
@@ -56,7 +56,7 @@ function getHookFromPageConfigGlobal(pageConfigGlobal, hookName) {
|
|
|
56
56
|
// hook isn't a computed nor a cumulative config => definedAt should always be defined
|
|
57
57
|
(0, utils_js_1.assert)(hookFilePath);
|
|
58
58
|
assertHookFn(hookFn, { hookName, hookFilePath });
|
|
59
|
-
// We could use the global value of
|
|
59
|
+
// We could use the global value of configooksTimeout but it requires some non-trivial refactoring
|
|
60
60
|
const hookTimeout = getHookTimeoutDefault(hookName);
|
|
61
61
|
return { hookFn, hookName, hookFilePath, hookTimeout };
|
|
62
62
|
}
|
|
@@ -8,6 +8,7 @@ const utils_js_1 = require("../../utils.js");
|
|
|
8
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
9
9
|
const getConfigDefinedAtString_js_1 = require("./getConfigDefinedAtString.js");
|
|
10
10
|
// prettier-ignore
|
|
11
|
+
// biome-ignore format:
|
|
11
12
|
function getConfigValue(pageConfig, configName, type) {
|
|
12
13
|
const configValue = getConfigValueEntry(pageConfig, configName);
|
|
13
14
|
if (configValue === null)
|
|
@@ -78,7 +78,7 @@ function assertIsNotNull(configValue, configName, importPath) {
|
|
|
78
78
|
* - for cumulative values in the future: we don't need this for now because, currently, cumulative values are never imported.
|
|
79
79
|
assertUsage(
|
|
80
80
|
configValue !== null,
|
|
81
|
-
`Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.
|
|
81
|
+
`Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.js file instead of ${importPath}`
|
|
82
82
|
)
|
|
83
83
|
*/
|
|
84
84
|
}
|
|
@@ -164,6 +164,7 @@ function assertNoInfiniteLoop(pageContextsFromRewrite) {
|
|
|
164
164
|
function assertNoInfiniteAbortLoop(rewriteCount, redirectCount) {
|
|
165
165
|
const abortCalls = [
|
|
166
166
|
// prettier-ignore
|
|
167
|
+
// biome-ignore format:
|
|
167
168
|
rewriteCount > 0 && picocolors_1.default.cyan("throw render('/some-url')"),
|
|
168
169
|
redirectCount > 0 && picocolors_1.default.cyan("throw redirect('/some-url')")
|
|
169
170
|
]
|
|
@@ -9,6 +9,7 @@ const resolveRouteString_js_2 = require("./resolveRouteString.js");
|
|
|
9
9
|
// See https://vike.dev/route-function#precedence
|
|
10
10
|
function resolvePrecendence(routeMatches) {
|
|
11
11
|
// prettier-ignore
|
|
12
|
+
// biome-ignore format:
|
|
12
13
|
routeMatches
|
|
13
14
|
.sort(sortMatches)
|
|
14
15
|
.sort((0, utils_js_2.makeFirst)((routeMatch) => routeMatch.routeType === 'FUNCTION' && !!routeMatch.precedence && routeMatch.precedence < 0))
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// Utils to manage process.env.NODE_ENV and, most notably, to assert correct usage, which is crucial:
|
|
3
|
+
// - https://github.com/vikejs/vike/issues/1469#issuecomment-1919518096
|
|
4
|
+
// - https://github.com/vitejs/vite/blob/76f30ae23b92f9af910ec02d98e2baaefa12141f/packages/vite/src/node/config.ts#L567
|
|
2
5
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
7
|
};
|
|
@@ -6,6 +6,7 @@ exports.hasProp = void 0;
|
|
|
6
6
|
const isCallable_js_1 = require("./isCallable.js");
|
|
7
7
|
const isObject_js_1 = require("./isObject.js");
|
|
8
8
|
// prettier-ignore
|
|
9
|
+
// biome-ignore format:
|
|
9
10
|
function hasProp(obj, prop, type = 'unknown') {
|
|
10
11
|
if (!(0, isObject_js_1.isObject)(obj))
|
|
11
12
|
return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.scriptFileExtensionList = exports.scriptFileExtensions = exports.isTemplateFile = exports.isScriptFile = void 0;
|
|
3
|
+
exports.scriptFileExtensionList = exports.scriptFileExtensions = exports.isTemplateFile = exports.isJavaScriptFile = exports.isScriptFile = void 0;
|
|
4
4
|
const assert_js_1 = require("./assert.js");
|
|
5
5
|
// We can't use a RegExp:
|
|
6
6
|
// - Needs to work with Micromatch: https://github.com/micromatch/micromatch because:
|
|
@@ -12,6 +12,7 @@ const assert_js_1 = require("./assert.js");
|
|
|
12
12
|
// - We cannot implement a blacklist with a glob pattern.
|
|
13
13
|
// - A post `import.meta.glob()` blacklist filtering doesn't work because Vite would still process the files (e.g. including them in the bundle).
|
|
14
14
|
// prettier-ignore
|
|
15
|
+
// biome-ignore format:
|
|
15
16
|
const extJavaScript = [
|
|
16
17
|
'js',
|
|
17
18
|
'ts',
|
|
@@ -19,6 +20,10 @@ const extJavaScript = [
|
|
|
19
20
|
'cts',
|
|
20
21
|
'mjs',
|
|
21
22
|
'mts',
|
|
23
|
+
];
|
|
24
|
+
// prettier-ignore
|
|
25
|
+
// biome-ignore format:
|
|
26
|
+
const extJsx = [
|
|
22
27
|
'jsx',
|
|
23
28
|
'tsx',
|
|
24
29
|
'cjsx',
|
|
@@ -27,6 +32,7 @@ const extJavaScript = [
|
|
|
27
32
|
'mtsx',
|
|
28
33
|
];
|
|
29
34
|
// prettier-ignore
|
|
35
|
+
// biome-ignore format:
|
|
30
36
|
const extTemplates = [
|
|
31
37
|
'vue',
|
|
32
38
|
'svelte',
|
|
@@ -34,19 +40,24 @@ const extTemplates = [
|
|
|
34
40
|
'md',
|
|
35
41
|
'mdx'
|
|
36
42
|
];
|
|
37
|
-
const scriptFileExtensionList = [...extJavaScript, ...extTemplates];
|
|
43
|
+
const scriptFileExtensionList = [...extJavaScript, ...extJsx, ...extTemplates];
|
|
38
44
|
exports.scriptFileExtensionList = scriptFileExtensionList;
|
|
39
45
|
const scriptFileExtensions = '(' + scriptFileExtensionList.join('|') + ')';
|
|
40
46
|
exports.scriptFileExtensions = scriptFileExtensions;
|
|
41
47
|
function isScriptFile(filePath) {
|
|
42
48
|
const yes = scriptFileExtensionList.some((ext) => filePath.endsWith('.' + ext));
|
|
43
|
-
|
|
49
|
+
if (isJavaScriptFile(filePath))
|
|
50
|
+
(0, assert_js_1.assert)(yes);
|
|
44
51
|
return yes;
|
|
45
52
|
}
|
|
46
53
|
exports.isScriptFile = isScriptFile;
|
|
47
54
|
function isJavaScriptFile(filePath) {
|
|
48
|
-
|
|
55
|
+
const yes1 = /\.(c|m)?(j|t)s$/.test(filePath);
|
|
56
|
+
const yes2 = extJavaScript.some((ext) => filePath.endsWith('.' + ext));
|
|
57
|
+
(0, assert_js_1.assert)(yes1 === yes2);
|
|
58
|
+
return yes1;
|
|
49
59
|
}
|
|
60
|
+
exports.isJavaScriptFile = isJavaScriptFile;
|
|
50
61
|
function isTemplateFile(filePath) {
|
|
51
62
|
return extTemplates.some((ext) => filePath.endsWith('.' + ext));
|
|
52
63
|
}
|
|
@@ -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.
|
|
5
|
+
const PROJECT_VERSION = '0.4.162-commit-8995471';
|
|
6
6
|
exports.PROJECT_VERSION = PROJECT_VERSION;
|
|
7
7
|
const projectInfo = {
|
|
8
8
|
projectName: 'Vike',
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export { route, getPagesAndRoutes };
|
|
3
3
|
import { route as routeInternal } from '../shared/route/index.js';
|
|
4
4
|
import { getGlobalContext, initGlobalContext } from '../node/runtime/globalContext.js';
|
|
5
|
-
import { setNodeEnvToProduction } from '../utils/
|
|
5
|
+
import { setNodeEnvToProduction } from '../utils/assertNodeEnv.js';
|
|
6
6
|
import { assert } from '../utils/assert.js';
|
|
7
7
|
import { getRenderContext } from '../node/runtime/renderPage/renderPageAlreadyRouted.js';
|
|
8
8
|
/**
|
|
@@ -308,35 +308,41 @@ async function renderPageClientSide(renderArgs) {
|
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
};
|
|
311
|
-
// We use globalObject.
|
|
312
|
-
if (globalObject.
|
|
311
|
+
// We use globalObject.onRenderClientPromise in order to ensure that there is never two concurrent onRenderClient() calls
|
|
312
|
+
if (globalObject.onRenderClientPromise) {
|
|
313
313
|
// Make sure that the previous render has finished
|
|
314
|
-
await globalObject.
|
|
315
|
-
assert(globalObject.
|
|
314
|
+
await globalObject.onRenderClientPromise;
|
|
315
|
+
assert(globalObject.onRenderClientPromise === undefined);
|
|
316
316
|
if (isRenderOutdated())
|
|
317
317
|
return;
|
|
318
318
|
}
|
|
319
319
|
changeUrl(urlOriginal, overwriteLastHistoryEntry);
|
|
320
320
|
globalObject.previousPageContext = pageContext;
|
|
321
|
-
assert(globalObject.
|
|
322
|
-
globalObject.
|
|
321
|
+
assert(globalObject.onRenderClientPromise === undefined);
|
|
322
|
+
globalObject.onRenderClientPromise = (async () => {
|
|
323
|
+
let onRenderClientError;
|
|
323
324
|
try {
|
|
324
325
|
await executeOnRenderClientHook(pageContext, true);
|
|
325
326
|
}
|
|
326
327
|
catch (err) {
|
|
327
|
-
|
|
328
|
-
return;
|
|
328
|
+
onRenderClientError = err;
|
|
329
329
|
}
|
|
330
|
-
|
|
331
|
-
|
|
330
|
+
globalObject.onRenderClientPromise = undefined;
|
|
331
|
+
return onRenderClientError;
|
|
332
332
|
})();
|
|
333
|
-
await globalObject.
|
|
334
|
-
assert(globalObject.
|
|
333
|
+
const onRenderClientError = await globalObject.onRenderClientPromise;
|
|
334
|
+
assert(globalObject.onRenderClientPromise === undefined);
|
|
335
|
+
if (onRenderClientError) {
|
|
336
|
+
await onError(onRenderClientError);
|
|
337
|
+
if (!isErrorPage)
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
335
340
|
/* We don't abort in order to ensure that onHydrationEnd() is called: we abort only after onHydrationEnd() is called.
|
|
336
341
|
if (isRenderOutdated(true)) return
|
|
337
342
|
*/
|
|
343
|
+
addLinkPrefetchHandlers(pageContext);
|
|
338
344
|
// onHydrationEnd()
|
|
339
|
-
if (isHydrationRender) {
|
|
345
|
+
if (isHydrationRender && !onRenderClientError) {
|
|
340
346
|
assertHook(pageContext, 'onHydrationEnd');
|
|
341
347
|
const hook = getHook(pageContext, 'onHydrationEnd');
|
|
342
348
|
if (hook) {
|
|
@@ -353,7 +359,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
353
359
|
return;
|
|
354
360
|
}
|
|
355
361
|
}
|
|
356
|
-
// We abort *after* onHydrationEnd() is called
|
|
362
|
+
// We purposely abort *after* onHydrationEnd() is called (see comment above).
|
|
357
363
|
if (isRenderOutdated(true))
|
|
358
364
|
return;
|
|
359
365
|
// onPageTransitionEnd()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { getPageContextProxyForUser };
|
|
2
|
-
import { assert, assertUsage, getGlobalObject } from '../server-routing-runtime/utils.js';
|
|
2
|
+
import { assert, assertUsage, assertWarning, getGlobalObject } from '../server-routing-runtime/utils.js';
|
|
3
3
|
import { notSerializable } from '../../shared/notSerializable.js';
|
|
4
4
|
const globalObject = getGlobalObject('getPageContextProxyForUser.ts', {});
|
|
5
5
|
/**
|
|
@@ -30,6 +30,10 @@ function assertIsDefined(pageContext, prop) {
|
|
|
30
30
|
return;
|
|
31
31
|
if (isExpected(prop))
|
|
32
32
|
return;
|
|
33
|
+
// - If no pageContext was fetchd from the server, then adding props to passToClient is useless.
|
|
34
|
+
// - Showing a warning, even though no pageContext was fetched from the server, is actually erroneous as the client runtime cannot deduce the passToClient list.
|
|
35
|
+
if (!pageContext._hasPageContextFromServer)
|
|
36
|
+
return;
|
|
33
37
|
const propName = JSON.stringify(prop);
|
|
34
38
|
/* This handling would be the clearest but, unfortunately, it's fundamentally problematic:
|
|
35
39
|
* - It would force the pageContext value consumer to be synchronized with the pageContext value provider. For example, if vike-react wants to conditionally do something dependening on wehther some optional pageContext value was provided by some optional vike-react-* integration package.
|
|
@@ -37,7 +41,7 @@ function assertIsDefined(pageContext, prop) {
|
|
|
37
41
|
const errMsg = `pageContext[${propName}] is \`undefined\` on the client-side. If it's defined on the server-side then add ${propName} to passToClient (https://vike.dev/passToClient), otherwise make sure your client-side hooks always define it (e.g. set it to \`null\` instead of \`undefined\`).`
|
|
38
42
|
assertUsage(false, errMsg)
|
|
39
43
|
*/
|
|
40
|
-
if (
|
|
44
|
+
if (!pageContext._hasPageContextFromClient) {
|
|
41
45
|
// We can safely assume that the property is missing in passToClient, because the server-side defines all passToClient properties even if they have an undefined value:
|
|
42
46
|
// ```
|
|
43
47
|
// <script id="vike_pageContext" type="application/json">{"_pageId":"/pages/admin","user":"!undefined","pageProps":"!undefined","title":"!undefined","abortReason":"!undefined","_urlRewrite":null}</script>
|
|
@@ -47,6 +51,19 @@ function assertIsDefined(pageContext, prop) {
|
|
|
47
51
|
}
|
|
48
52
|
else {
|
|
49
53
|
// Do nothing, not even a warning, because we don't know whether the user expects that the pageContext value can be undefined. (E.g. a pageContext value that is defined by an optional hook.)
|
|
54
|
+
// TODO/next-major-release make it an assertUsage()
|
|
55
|
+
assertWarning(false, [
|
|
56
|
+
`pageContext[${propName}] isn't defined on the client-side:`,
|
|
57
|
+
`1. if it's defined by the server-side then add ${propName} to passToClient (https://vike.dev/passToClient), or`,
|
|
58
|
+
`2. if it's expected that it may not be defined:`,
|
|
59
|
+
' ```js',
|
|
60
|
+
' // ❌ Replace code like this:',
|
|
61
|
+
` const val = pageContext[${propName}] ?? someDefaultValue`,
|
|
62
|
+
' // ✅ With that:',
|
|
63
|
+
` const val = ${propName} in pageContext ? pageContext[${propName}] : someDefaultValue`,
|
|
64
|
+
' ```',
|
|
65
|
+
`See stack track below to find where pageContext[${propName}] is being accessed.`
|
|
66
|
+
].join('\n'), { showStackTrace: true, onlyOnce: false });
|
|
50
67
|
}
|
|
51
68
|
}
|
|
52
69
|
const IGNORE_LIST = [
|
|
@@ -12,6 +12,7 @@ async function loadUserFilesClientSide(pageId, pageFilesAll, pageConfigs) {
|
|
|
12
12
|
const isDev = import.meta.env.DEV;
|
|
13
13
|
try {
|
|
14
14
|
// prettier-ignore
|
|
15
|
+
// biome-ignore format:
|
|
15
16
|
const result = await Promise.all([
|
|
16
17
|
pageConfig && loadConfigValues(pageConfig, isDev),
|
|
17
18
|
...pageFilesClientSide.map((p) => p.loadFile?.()),
|
|
@@ -19,7 +19,6 @@ import { suppressRollupWarning } from './plugins/suppressRollupWarning.js';
|
|
|
19
19
|
import { setGlobalContext } from './plugins/setGlobalContext.js';
|
|
20
20
|
import { importBuild } from './plugins/importBuild/index.js';
|
|
21
21
|
import { commonConfig } from './plugins/commonConfig.js';
|
|
22
|
-
import { extensionsAssets } from './plugins/extensionsAssets.js';
|
|
23
22
|
import { baseUrls } from './plugins/baseUrls.js';
|
|
24
23
|
import { envVarsPlugin } from './plugins/envVars.js';
|
|
25
24
|
import pc from '@brillout/picocolors';
|
|
@@ -44,7 +43,6 @@ function plugin(vikeConfig) {
|
|
|
44
43
|
suppressRollupWarning(),
|
|
45
44
|
setGlobalContext(),
|
|
46
45
|
...importBuild(),
|
|
47
|
-
extensionsAssets(),
|
|
48
46
|
baseUrls(vikeConfig),
|
|
49
47
|
envVarsPlugin(),
|
|
50
48
|
fileEnv()
|