vike 0.4.228 → 0.4.229
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/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +22 -0
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +5 -1
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +13 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +7 -19
- package/dist/cjs/node/plugin/utils.js +1 -0
- package/dist/cjs/node/prerender/runPrerender.js +44 -41
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +102 -125
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +1 -1
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/index-deprecated.js +9 -38
- package/dist/cjs/node/runtime/index.js +56 -2
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
- package/dist/cjs/node/runtime/renderPage.js +102 -81
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +54 -0
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
- package/dist/cjs/shared/hooks/getHook.js +45 -27
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/isImportPath.js +21 -0
- package/dist/cjs/utils/objectAssign.js +6 -10
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +23 -23
- package/dist/cjs/utils/path.js +12 -2
- package/dist/cjs/utils/requireResolve.js +134 -53
- package/dist/esm/__internal/index.js +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
- package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
- package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/utils.js +0 -1
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/node.js +1 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/utils.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/removeFoucBuster.js +1 -0
- package/dist/esm/client/shared/utils.d.ts +4 -0
- package/dist/esm/client/shared/utils.js +4 -0
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +5 -1
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +13 -10
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +8 -20
- package/dist/esm/node/plugin/utils.d.ts +1 -0
- package/dist/esm/node/plugin/utils.js +1 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
- package/dist/esm/node/prerender/runPrerender.js +48 -45
- 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 +425 -47
- package/dist/esm/node/runtime/globalContext.js +103 -126
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +1 -1
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
- package/dist/esm/node/runtime/index-deprecated.js +9 -36
- package/dist/esm/node/runtime/index.d.ts +23 -1
- package/dist/esm/node/runtime/index.js +38 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
- package/dist/esm/node/runtime/renderPage.d.ts +146 -7
- package/dist/esm/node/runtime/renderPage.js +105 -84
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/shared/VikeNamespace.d.ts +35 -13
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
- package/dist/esm/shared/createGlobalContextShared.js +51 -0
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
- package/dist/esm/shared/hooks/getHook.d.ts +5 -3
- package/dist/esm/shared/hooks/getHook.js +47 -29
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +12 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/esm/shared/route/executeGuardHook.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -1
- package/dist/esm/shared/types.d.ts +64 -32
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/isImportPath.d.ts +4 -0
- package/dist/esm/utils/isImportPath.js +19 -0
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +6 -10
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/dist/esm/utils/parseNpmPackage.d.ts +17 -0
- package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +23 -23
- package/dist/esm/utils/path.d.ts +1 -1
- package/dist/esm/utils/path.js +12 -2
- package/dist/esm/utils/requireResolve.d.ts +20 -7
- package/dist/esm/utils/requireResolve.js +134 -53
- package/package.json +14 -13
- package/dist/cjs/node/runtime/index-common.js +0 -27
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
- package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/index-common.d.ts +0 -8
- package/dist/esm/node/runtime/index-common.js +0 -10
- package/dist/esm/utils/isNpmPackage.d.ts +0 -17
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js
CHANGED
|
@@ -7,13 +7,12 @@ exports.resolvePointerImport = resolvePointerImport;
|
|
|
7
7
|
exports.resolvePointerImportData = resolvePointerImportData;
|
|
8
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
9
9
|
const utils_js_1 = require("../../../../utils.js");
|
|
10
|
-
const
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const pointerImports_js_1 = require("./pointerImports.js");
|
|
12
11
|
const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
|
|
13
12
|
function resolvePointerImport(configValue, importerFilePath, userRootDir, configName) {
|
|
14
13
|
if (typeof configValue !== 'string')
|
|
15
14
|
return null;
|
|
16
|
-
const pointerImportData = (0,
|
|
15
|
+
const pointerImportData = (0, pointerImports_js_1.parsePointerImportData)(configValue);
|
|
17
16
|
if (!pointerImportData)
|
|
18
17
|
return null;
|
|
19
18
|
const { exportName } = pointerImportData;
|
|
@@ -27,24 +26,18 @@ function resolvePointerImport(configValue, importerFilePath, userRootDir, config
|
|
|
27
26
|
return { fileExportPath };
|
|
28
27
|
}
|
|
29
28
|
function resolvePointerImportData(pointerImportData, importerFilePath, userRootDir) {
|
|
30
|
-
// `importPath` should be one of the following:
|
|
31
|
-
// - A relative import path
|
|
32
|
-
// - A filesystem absolute path
|
|
33
|
-
// - An npm package import
|
|
34
29
|
const { importPath } = pointerImportData;
|
|
35
|
-
|
|
30
|
+
(0, pointerImports_js_1.assertPointerImportPath)(importPath);
|
|
31
|
+
const filePathAbsoluteFilesystem = resolveImportPathWithNode(pointerImportData, importerFilePath, userRootDir);
|
|
36
32
|
let filePath;
|
|
37
33
|
(0, utils_js_1.assertPosixPath)(importPath);
|
|
38
|
-
if (
|
|
39
|
-
if (importPath.startsWith('.')) {
|
|
40
|
-
(0, utils_js_1.assertUsage)((0, utils_js_1.pathIsRelative)(importPath), `Invalid relative import path ${picocolors_1.default.code(importPath)} defined by ${importerFilePath.filePathToShowToUser} because it should start with ${picocolors_1.default.code('./')} or ${picocolors_1.default.code('../')}, or use an npm package import instead.`);
|
|
41
|
-
}
|
|
34
|
+
if ((0, utils_js_1.isImportPathRelative)(importPath) || (0, utils_js_1.isFilePathAbsolute)(importPath)) {
|
|
42
35
|
// Pointer imports are included in virtual files, thus relative imports need to be resolved. (Virtual modules cannot contain relative imports.)
|
|
43
36
|
assertUsageResolutionSuccess(filePathAbsoluteFilesystem, pointerImportData, importerFilePath);
|
|
44
37
|
// Pointer imports are included in virtual files, and we need filePathAbsoluteUserRootDir because we didn't find a way to have filesystem absolute import paths in virtual files: https://gist.github.com/brillout/2315231c9a8164f950c64b4b4a7bbd39
|
|
45
38
|
const errSuffix = `outside of the ${userRootDir} directory which is forbidden: make sure your import paths resolve inside the ${userRootDir} directory, or import from an npm package.`;
|
|
46
39
|
const filePathAbsoluteUserRootDir = (0, getFilePath_js_1.getFilePathAbsoluteUserRootDir)({ filePathAbsoluteFilesystem, userRootDir });
|
|
47
|
-
if (
|
|
40
|
+
if ((0, utils_js_1.isImportPathRelative)(importPath)) {
|
|
48
41
|
(0, utils_js_1.assertUsage)(filePathAbsoluteUserRootDir, `The relative import ${picocolors_1.default.cyan(importPath)} defined by ${importerFilePath.filePathToShowToUser} resolves to ${filePathAbsoluteFilesystem} ${errSuffix}`);
|
|
49
42
|
}
|
|
50
43
|
else {
|
|
@@ -56,6 +49,7 @@ function resolvePointerImportData(pointerImportData, importerFilePath, userRootD
|
|
|
56
49
|
filePath = (0, getFilePath_js_1.getFilePathResolved)({ filePathAbsoluteUserRootDir, userRootDir });
|
|
57
50
|
}
|
|
58
51
|
else {
|
|
52
|
+
(0, utils_js_1.assert)((0, utils_js_1.isImportPathNpmPackageOrPathAlias)(importPath));
|
|
59
53
|
const importPathAbsolute = importPath;
|
|
60
54
|
if (filePathAbsoluteFilesystem) {
|
|
61
55
|
filePath = (0, getFilePath_js_1.getFilePathResolved)({
|
|
@@ -73,12 +67,20 @@ function resolvePointerImportData(pointerImportData, importerFilePath, userRootD
|
|
|
73
67
|
}
|
|
74
68
|
return filePath;
|
|
75
69
|
}
|
|
76
|
-
function resolveImportPathWithNode(pointerImportData, importerFilePath) {
|
|
70
|
+
function resolveImportPathWithNode(pointerImportData, importerFilePath, userRootDir) {
|
|
77
71
|
const importerFilePathAbsolute = importerFilePath.filePathAbsoluteFilesystem;
|
|
78
72
|
(0, utils_js_1.assertPosixPath)(importerFilePathAbsolute);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
// filePathAbsoluteFilesystem is null when pointerImportData.importPath is a path alias that Node.js doesn't know about
|
|
74
|
+
const filePathAbsoluteFilesystem = (0, utils_js_1.requireResolveOptional)({
|
|
75
|
+
importPath: pointerImportData.importPath,
|
|
76
|
+
importerFilePath: importerFilePathAbsolute,
|
|
77
|
+
userRootDir
|
|
78
|
+
});
|
|
79
|
+
if (!filePathAbsoluteFilesystem) {
|
|
80
|
+
(0, utils_js_1.assert)(!(0, utils_js_1.isImportPathRelative)(pointerImportData.importPath));
|
|
81
|
+
// Libraries don't use path aliases => filePathAbsoluteFilesystem should be defined
|
|
82
|
+
(0, utils_js_1.assert)(!importerFilePathAbsolute.includes('node_modules'));
|
|
83
|
+
}
|
|
82
84
|
return filePathAbsoluteFilesystem;
|
|
83
85
|
}
|
|
84
86
|
function assertUsageResolutionSuccess(filePathAbsoluteFilesystem, pointerImportData, importerFilePath) {
|
|
@@ -90,8 +92,7 @@ function assertUsageResolutionSuccess(filePathAbsoluteFilesystem, pointerImportD
|
|
|
90
92
|
? `The import path ${importPathString} in ${filePathToShowToUser}`
|
|
91
93
|
: `The import ${picocolors_1.default.code(importString)} defined by ${filePathToShowToUser}`;
|
|
92
94
|
const errIntro2 = `${errIntro} couldn't be resolved: does ${importPathString}`;
|
|
93
|
-
if (
|
|
94
|
-
(0, utils_js_1.assert)((0, utils_js_1.pathIsRelative)(importPath));
|
|
95
|
+
if ((0, utils_js_1.isImportPathRelative)(importPath)) {
|
|
95
96
|
(0, utils_js_1.assertUsage)(false, `${errIntro2} point to an existing file?`);
|
|
96
97
|
}
|
|
97
98
|
else {
|
|
@@ -13,7 +13,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
13
13
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
14
14
|
const import_1 = require("@brillout/import");
|
|
15
15
|
const utils_js_1 = require("../../../../utils.js");
|
|
16
|
-
const
|
|
16
|
+
const pointerImports_js_1 = require("./pointerImports.js");
|
|
17
17
|
const source_map_support_1 = __importDefault(require("source-map-support"));
|
|
18
18
|
const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
|
|
19
19
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
@@ -61,7 +61,7 @@ async function transpileFile(filePath, transformImports, userRootDir, esbuildCac
|
|
|
61
61
|
debug(`code, post esbuild (${filePathToShowToUserResolved})`, code);
|
|
62
62
|
let isImportTransformed = false;
|
|
63
63
|
if (transformImports) {
|
|
64
|
-
const codeMod = (0,
|
|
64
|
+
const codeMod = (0, pointerImports_js_1.transformPointerImports)(code, filePathToShowToUserResolved, pointerImports);
|
|
65
65
|
if (codeMod) {
|
|
66
66
|
code = codeMod;
|
|
67
67
|
isImportTransformed = true;
|
|
@@ -126,7 +126,11 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports, esb
|
|
|
126
126
|
// - Sitll required for esbuild@0.24.0 (November 2024).
|
|
127
127
|
// - Let's try to remove this workaround again later.
|
|
128
128
|
if (resolved.errors.length > 0) {
|
|
129
|
-
const resolvedWithNode = (0, utils_js_1.
|
|
129
|
+
const resolvedWithNode = (0, utils_js_1.requireResolveOptionalDir)({
|
|
130
|
+
importPath: path,
|
|
131
|
+
importerDir: (0, utils_js_1.toPosixPath)(args.resolveDir),
|
|
132
|
+
userRootDir
|
|
133
|
+
});
|
|
130
134
|
if (debugEsbuildResolve.isActivated)
|
|
131
135
|
debugEsbuildResolve('resolvedWithNode', resolvedWithNode);
|
|
132
136
|
if (resolvedWithNode)
|
|
@@ -146,8 +150,8 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports, esb
|
|
|
146
150
|
const importPathOriginal = args.path;
|
|
147
151
|
// Esbuild resolves path aliases.
|
|
148
152
|
// - Enabling us to use:
|
|
149
|
-
// -
|
|
150
|
-
// -
|
|
153
|
+
// - assertIsImportPathNpmPackage()
|
|
154
|
+
// - isImportPathNpmPackage(str, { cannotBePathAlias: true })
|
|
151
155
|
(0, utils_js_1.assertFilePathAbsoluteFilesystem)(importPathResolved);
|
|
152
156
|
// Should be remove this? See comment below.
|
|
153
157
|
const isVikeExtensionImport = (path.startsWith('vike-') && path.endsWith('/config')) || importPathResolved.endsWith('+config.js');
|
|
@@ -165,7 +169,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports, esb
|
|
|
165
169
|
const isNpmPkgImport = (() => {
|
|
166
170
|
if (importPathResolved.includes('/node_modules/')) {
|
|
167
171
|
// So far I can't think of a use case where this assertion would fail, but let's eventually remove it to avoid artificially restricting the user.
|
|
168
|
-
(0, utils_js_1.assert)((0, utils_js_1.
|
|
172
|
+
(0, utils_js_1.assert)((0, utils_js_1.isImportPathNpmPackageOrPathAlias)(importPathOriginal));
|
|
169
173
|
return true;
|
|
170
174
|
}
|
|
171
175
|
// Linked npm packages
|
|
@@ -174,7 +178,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports, esb
|
|
|
174
178
|
// - This isn't always the case: https://github.com/vikejs/vike/issues/2326
|
|
175
179
|
!importPathResolved.startsWith(userRootDir) &&
|
|
176
180
|
// False positive if `importPathOriginal` is a path alias that a) looks like an npm package import and b) resolves outside of `userRootDir` => we then we wrongfully assume that `importPathOriginal` is an npm package import.
|
|
177
|
-
(0, utils_js_1.
|
|
181
|
+
(0, utils_js_1.isImportPathNpmPackageOrPathAlias)(importPathOriginal)) {
|
|
178
182
|
return true;
|
|
179
183
|
}
|
|
180
184
|
return false;
|
|
@@ -191,7 +195,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports, esb
|
|
|
191
195
|
}
|
|
192
196
|
let importPathTranspiled;
|
|
193
197
|
(0, utils_js_1.assertPosixPath)(importPathOriginal);
|
|
194
|
-
if (
|
|
198
|
+
if ((0, utils_js_1.isImportPathRelative)(importPathOriginal)) {
|
|
195
199
|
importPathTranspiled = importPathResolved;
|
|
196
200
|
}
|
|
197
201
|
else {
|
|
@@ -208,12 +212,11 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports, esb
|
|
|
208
212
|
// - Vike doesn't resolve path aliases at all.
|
|
209
213
|
// - Node.js doesn't support `tsconfig.js#compilerOptions.paths`.
|
|
210
214
|
// - Esbuild path alias resolution seems reliable, e.g. it supports `tsconfig.js#compilerOptions.paths`.
|
|
211
|
-
(0, utils_js_1.assert)(!(0, utils_js_1.isNpmPackageImport_unreliable)(importPathOriginal));
|
|
212
215
|
importPathTranspiled = importPathResolved;
|
|
213
216
|
}
|
|
214
217
|
else {
|
|
215
218
|
// `importPathOriginal` is most likely an npm package import.
|
|
216
|
-
(0, utils_js_1.
|
|
219
|
+
(0, utils_js_1.assertIsImportPathNpmPackage)(importPathOriginal);
|
|
217
220
|
// For improved error messages, let the resolution be handled by Vike or Node.js.
|
|
218
221
|
importPathTranspiled = importPathOriginal;
|
|
219
222
|
}
|
|
@@ -75,7 +75,7 @@ async function handleReloadSideEffects() {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
// TODO/soon: predominantly use
|
|
78
|
+
// TODO/soon: predominantly use getVikeConfigInternal() instead of getVikeConfig() then maybe refector?
|
|
79
79
|
async function getVikeConfig(config, { doNotRestartViteOnError } = {}) {
|
|
80
80
|
const userRootDir = config.root;
|
|
81
81
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
@@ -410,7 +410,7 @@ function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
|
410
410
|
Object.entries(configValues).forEach(([configName, value]) => {
|
|
411
411
|
var _a;
|
|
412
412
|
const sourceName = `The ${(0, getConfigDefinedAt_js_1.getDefinedByString)(definedBy, configName)}`;
|
|
413
|
-
assertKnownConfig(configName, configDefinitionsResolved.configNamesKnownGlobal, configDefinitionsResolved, '/', sourceName, exitOnError);
|
|
413
|
+
assertKnownConfig(configName, configDefinitionsResolved.configNamesKnownGlobal, configDefinitionsResolved, '/', false, sourceName, exitOnError);
|
|
414
414
|
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
415
415
|
sources.unshift(getSourceNonConfigFile(configName, value, definedBy));
|
|
416
416
|
});
|
|
@@ -682,15 +682,12 @@ function resolveIsGlobalValue(configDefGlobal, source, plusFilesAll) {
|
|
|
682
682
|
return isGlobal;
|
|
683
683
|
}
|
|
684
684
|
function getConfigNamesSetByPlusFile(plusFile) {
|
|
685
|
-
let configNames = [];
|
|
686
685
|
if (!plusFile.isConfigFile) {
|
|
687
|
-
|
|
686
|
+
return [plusFile.configName];
|
|
688
687
|
}
|
|
689
|
-
|
|
690
|
-
|
|
688
|
+
else {
|
|
689
|
+
return Object.keys(plusFile.fileExportsByConfigName);
|
|
691
690
|
}
|
|
692
|
-
configNames = (0, utils_js_1.unique)(configNames);
|
|
693
|
-
return configNames;
|
|
694
691
|
}
|
|
695
692
|
function getConfigDefinitions(plusFilesRelevant, filter) {
|
|
696
693
|
let configDefinitions = { ...configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn };
|
|
@@ -885,12 +882,12 @@ function assertKnownConfigs(configDefinitionsResolved) {
|
|
|
885
882
|
configNames.forEach((configName) => {
|
|
886
883
|
const { locationId } = plusFile;
|
|
887
884
|
const sourceName = plusFile.filePath.filePathToShowToUser;
|
|
888
|
-
assertKnownConfig(configName, configNamesKnownLocal, configDefinitionsResolved, locationId, sourceName, false);
|
|
885
|
+
assertKnownConfig(configName, configNamesKnownLocal, configDefinitionsResolved, locationId, true, sourceName, false);
|
|
889
886
|
});
|
|
890
887
|
});
|
|
891
888
|
});
|
|
892
889
|
}
|
|
893
|
-
function assertKnownConfig(configName, configNamesKnownRelevant, configDefinitionsResolved, locationId, sourceName, exitOnError) {
|
|
890
|
+
function assertKnownConfig(configName, configNamesKnownRelevant, configDefinitionsResolved, locationId, isPlusFile, sourceName, exitOnError) {
|
|
894
891
|
const { configNamesKnownAll } = configDefinitionsResolved;
|
|
895
892
|
if (configNamesKnownRelevant.includes(configName)) {
|
|
896
893
|
(0, utils_js_1.assert)(configNamesKnownAll.includes(configName));
|
|
@@ -901,7 +898,10 @@ function assertKnownConfig(configName, configNamesKnownRelevant, configDefinitio
|
|
|
901
898
|
if (configNamesKnownAll.includes(configName)) {
|
|
902
899
|
(0, utils_js_1.assertUsage)(false, `${sourceName} sets the value of the config ${configNameColored} which is a custom config that is defined with ${picocolors_1.default.underline('https://vike.dev/meta')} at a path that doesn't apply to ${locationId} — see ${picocolors_1.default.underline('https://vike.dev/config#inheritance')}`, { exitOnError });
|
|
903
900
|
}
|
|
904
|
-
const errMsg =
|
|
901
|
+
const errMsg = isPlusFile
|
|
902
|
+
? `${sourceName} sets an unknown config ${configNameColored}`
|
|
903
|
+
: `${sourceName} sets an unknown Vike config, see ${picocolors_1.default.underline('https://vike.dev/cli')} for the list of CLI options`;
|
|
904
|
+
(0, utils_js_1.assert)(errMsg.includes(configName));
|
|
905
905
|
// Missing vike-{react,vue,solid} installation
|
|
906
906
|
{
|
|
907
907
|
const ui = ['vike-react', 'vike-vue', 'vike-solid'];
|
|
@@ -44,7 +44,7 @@ function getComputedProps(args) {
|
|
|
44
44
|
const importPathAbsolute = args.importPathAbsolute ?? null;
|
|
45
45
|
const { filePathAbsoluteUserRootDir } = args;
|
|
46
46
|
if (importPathAbsolute)
|
|
47
|
-
(0, utils_js_1.
|
|
47
|
+
(0, utils_js_1.assertIsImportPathNpmPackage)(importPathAbsolute);
|
|
48
48
|
return {
|
|
49
49
|
importPathAbsolute,
|
|
50
50
|
filePathAbsoluteUserRootDir,
|
|
@@ -58,7 +58,7 @@ function getComputedProps(args) {
|
|
|
58
58
|
}
|
|
59
59
|
function getComputedPropsImportPathAbsolute(args) {
|
|
60
60
|
const { importPathAbsolute } = args;
|
|
61
|
-
(0, utils_js_1.
|
|
61
|
+
(0, utils_js_1.assertIsImportPathNpmPackage)(importPathAbsolute);
|
|
62
62
|
return {
|
|
63
63
|
filePathAbsoluteUserRootDir: null,
|
|
64
64
|
importPathAbsolute,
|
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveClientEntriesDev = resolveClientEntriesDev;
|
|
4
4
|
const utils_js_1 = require("../utils.js");
|
|
5
|
-
// @ts-ignore `file:///${__filename.split('\\').join('/')}` is shimmed at dist/cjs by dist-cjs-fixup.js.
|
|
6
|
-
const importMetaUrl = `file:///${__filename.split('\\').join('/')}`;
|
|
7
5
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
8
6
|
async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
9
|
-
let
|
|
10
|
-
(0, utils_js_1.assert)(
|
|
11
|
-
|
|
7
|
+
let userRootDir = viteDevServer.config.root;
|
|
8
|
+
(0, utils_js_1.assert)(userRootDir);
|
|
9
|
+
userRootDir = (0, utils_js_1.toPosixPath)(userRootDir);
|
|
12
10
|
// The `?import` suffix is needed for MDX to be transpiled:
|
|
13
11
|
// - Not transpiled: `/pages/markdown.page.mdx`
|
|
14
12
|
// - Transpiled: `/pages/markdown.page.mdx?import`
|
|
@@ -22,26 +20,16 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
|
22
20
|
(0, utils_js_1.assertPosixPath)(clientEntry);
|
|
23
21
|
let filePath;
|
|
24
22
|
if (clientEntry.startsWith('/')) {
|
|
25
|
-
filePath = (0, utils_js_1.pathJoin)(
|
|
23
|
+
filePath = (0, utils_js_1.pathJoin)(userRootDir, clientEntry);
|
|
26
24
|
}
|
|
27
25
|
else {
|
|
28
26
|
if (clientEntry.startsWith('@@vike/')) {
|
|
29
27
|
(0, utils_js_1.assert)(clientEntry.endsWith('.js'));
|
|
30
|
-
|
|
31
|
-
// For Vitest (which doesn't resolve vike to its dist but to its source files)
|
|
32
|
-
// [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/node/plugin/shared/resolveClientEntriesDev.js
|
|
33
|
-
filePath_ = (0, utils_js_1.requireResolveOptionalNonUserFile)(clientEntry.replace('@@vike/dist/esm/client/', '../../../client/').replace('.js', '.ts'), importMetaUrl);
|
|
34
|
-
if (!filePath_) {
|
|
35
|
-
// For users
|
|
36
|
-
// [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/dist/esm/node/plugin/shared/resolveClientEntriesDev.js
|
|
37
|
-
filePath_ = (0, utils_js_1.requireResolveOptionalNonUserFile)(clientEntry.replace('@@vike/dist/esm/client/', '../../../../../dist/esm/client/'), importMetaUrl);
|
|
38
|
-
}
|
|
39
|
-
(0, utils_js_1.assert)(filePath_);
|
|
40
|
-
filePath = filePath_;
|
|
28
|
+
filePath = (0, utils_js_1.requireResolveVikeDistFile)(`dist/esm/${clientEntry.replace('@@vike/dist/esm/', '')}`);
|
|
41
29
|
}
|
|
42
30
|
else {
|
|
43
|
-
(0, utils_js_1.
|
|
44
|
-
filePath = (0, utils_js_1.
|
|
31
|
+
(0, utils_js_1.assertIsImportPathNpmPackage)(clientEntry);
|
|
32
|
+
filePath = (0, utils_js_1.requireResolveNpmPackage)({ importPathNpmPackage: clientEntry, userRootDir });
|
|
45
33
|
}
|
|
46
34
|
}
|
|
47
35
|
if (!filePath.startsWith('/')) {
|
|
@@ -46,3 +46,4 @@ __exportStar(require("../../utils/isEqualStringList.js"), exports);
|
|
|
46
46
|
__exportStar(require("../../utils/isDocker.js"), exports);
|
|
47
47
|
__exportStar(require("../../utils/isVitest.js"), exports);
|
|
48
48
|
__exportStar(require("../../utils/rollupSourceMap.js"), exports);
|
|
49
|
+
__exportStar(require("../../utils/isImportPath.js"), exports);
|
|
@@ -44,6 +44,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
44
44
|
const index_js_1 = require("../../shared/route/index.js");
|
|
45
45
|
const utils_js_1 = require("./utils.js");
|
|
46
46
|
const renderPageAlreadyRouted_js_1 = require("../runtime/renderPage/renderPageAlreadyRouted.js");
|
|
47
|
+
const createPageContextServerSide_js_1 = require("../runtime/renderPage/createPageContextServerSide.js");
|
|
47
48
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
48
49
|
const os_1 = require("os");
|
|
49
50
|
const globalContext_js_1 = require("../runtime/globalContext.js");
|
|
@@ -114,7 +115,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
114
115
|
await disableReactStreaming();
|
|
115
116
|
const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
|
|
116
117
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
|
|
117
|
-
const vike = (0, commonConfig_js_1.
|
|
118
|
+
const vike = (0, commonConfig_js_1.getVikeConfigInternal)(viteConfig);
|
|
118
119
|
const { outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(viteConfig);
|
|
119
120
|
const { root } = viteConfig;
|
|
120
121
|
const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
|
|
@@ -131,26 +132,26 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
131
132
|
}
|
|
132
133
|
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
133
134
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
134
|
-
const globalContext = await (0, globalContext_js_1.
|
|
135
|
-
globalContext.
|
|
135
|
+
const { globalContext, globalContext_public } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
|
|
136
|
+
globalContext._pageFilesAll.forEach(assertExportNames);
|
|
136
137
|
const prerenderContext = {
|
|
137
|
-
noExtraDir,
|
|
138
138
|
pageContexts: [],
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
output: [],
|
|
140
|
+
_noExtraDir: noExtraDir,
|
|
141
|
+
_pageContextInit: options.pageContextInit ?? null,
|
|
142
|
+
_prerenderedPageContexts: {}
|
|
142
143
|
};
|
|
143
144
|
const doNotPrerenderList = [];
|
|
144
145
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
|
|
145
146
|
// Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
|
|
146
147
|
// https://vike.dev/onBeforePrerenderStart
|
|
147
|
-
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
|
|
148
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList);
|
|
148
149
|
// Create `pageContext` for each page with a static route
|
|
149
150
|
const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
|
|
150
|
-
await
|
|
151
|
+
await createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, false);
|
|
151
152
|
// Create `pageContext` for 404 page
|
|
152
153
|
const urlList404 = getUrlList404(globalContext);
|
|
153
|
-
await
|
|
154
|
+
await createPageContexts(urlList404, prerenderContext, globalContext, globalContext_public, concurrencyLimit, true);
|
|
154
155
|
// Allow user to duplicate the list of `pageContext` for i18n
|
|
155
156
|
// https://vike.dev/onPrerenderStart
|
|
156
157
|
await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
|
|
@@ -160,15 +161,15 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
160
161
|
prerenderedCount++;
|
|
161
162
|
const { pageId } = htmlFile.pageContext;
|
|
162
163
|
(0, utils_js_1.assert)(pageId);
|
|
163
|
-
prerenderContext.
|
|
164
|
+
prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
|
|
164
165
|
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
|
|
165
166
|
};
|
|
166
167
|
await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
|
|
167
|
-
warnContradictoryNoPrerenderList(prerenderContext.
|
|
168
|
+
warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
|
|
168
169
|
if (logLevel === 'info') {
|
|
169
170
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
170
171
|
}
|
|
171
|
-
await warnMissingPages(prerenderContext.
|
|
172
|
+
await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
|
|
172
173
|
const prerenderContextPublic = makePublic(prerenderContext);
|
|
173
174
|
(0, utils_js_1.objectAssign)(vike.prerenderContext, prerenderContextPublic);
|
|
174
175
|
if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
|
|
@@ -195,7 +196,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
195
196
|
});
|
|
196
197
|
// Old design
|
|
197
198
|
// TODO/v1-release: remove
|
|
198
|
-
await Promise.all(globalContext.
|
|
199
|
+
await Promise.all(globalContext._pageFilesAll
|
|
199
200
|
.filter((p) => {
|
|
200
201
|
assertExportNames(p);
|
|
201
202
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
@@ -207,8 +208,8 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
207
208
|
(0, utils_js_1.assert)(p.loadFile);
|
|
208
209
|
await p.loadFile();
|
|
209
210
|
})));
|
|
210
|
-
globalContext.
|
|
211
|
-
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext.
|
|
211
|
+
globalContext._allPageIds.forEach((pageId) => {
|
|
212
|
+
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext._pageFilesAll, pageId);
|
|
212
213
|
for (const p of pageFilesServerSide) {
|
|
213
214
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
214
215
|
continue;
|
|
@@ -232,10 +233,10 @@ function assertExportNames(pageFile) {
|
|
|
232
233
|
const { exportNames, fileType } = pageFile;
|
|
233
234
|
(0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
234
235
|
}
|
|
235
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
|
|
236
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList) {
|
|
236
237
|
const onBeforePrerenderStartHooks = [];
|
|
237
238
|
// V1 design
|
|
238
|
-
await Promise.all(globalContext.
|
|
239
|
+
await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
239
240
|
const hookName = 'onBeforePrerenderStart';
|
|
240
241
|
const pageConfigLoaded = await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, false);
|
|
241
242
|
const hook = (0, getHook_js_1.getHookFromPageConfig)(pageConfigLoaded, hookName);
|
|
@@ -251,7 +252,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
251
252
|
});
|
|
252
253
|
})));
|
|
253
254
|
// 0.4 design
|
|
254
|
-
await Promise.all(globalContext.
|
|
255
|
+
await Promise.all(globalContext._pageFilesAll
|
|
255
256
|
.filter((p) => {
|
|
256
257
|
assertExportNames(p);
|
|
257
258
|
if (!p.exportNames?.includes('prerender'))
|
|
@@ -295,7 +296,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
295
296
|
}
|
|
296
297
|
// Add result
|
|
297
298
|
const providedByHook = { hookFilePath, hookName };
|
|
298
|
-
const pageContextNew = await
|
|
299
|
+
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, globalContext_public, false, undefined, providedByHook);
|
|
299
300
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
300
301
|
if (pageContext) {
|
|
301
302
|
(0, utils_js_1.objectAssign)(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
|
|
@@ -306,7 +307,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
306
307
|
}
|
|
307
308
|
function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
308
309
|
const urlList = [];
|
|
309
|
-
globalContext.
|
|
310
|
+
globalContext._pageRoutes.map((pageRoute) => {
|
|
310
311
|
const { pageId } = pageRoute;
|
|
311
312
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
312
313
|
return;
|
|
@@ -331,7 +332,7 @@ function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
|
331
332
|
}
|
|
332
333
|
function getUrlList404(globalContext) {
|
|
333
334
|
const urlList = [];
|
|
334
|
-
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.
|
|
335
|
+
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
335
336
|
if (errorPageId) {
|
|
336
337
|
urlList.push({
|
|
337
338
|
// A URL is required for `viteDevServer.transformIndexHtml(url,html)`
|
|
@@ -341,28 +342,30 @@ function getUrlList404(globalContext) {
|
|
|
341
342
|
}
|
|
342
343
|
return urlList;
|
|
343
344
|
}
|
|
344
|
-
async function
|
|
345
|
+
async function createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, is404) {
|
|
345
346
|
await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
|
|
346
347
|
// Already included in a onBeforePrerenderStart() hook
|
|
347
348
|
if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
|
|
348
349
|
return;
|
|
349
350
|
}
|
|
350
|
-
const pageContext = await
|
|
351
|
+
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, null);
|
|
351
352
|
prerenderContext.pageContexts.push(pageContext);
|
|
352
353
|
})));
|
|
353
354
|
}
|
|
354
|
-
async function
|
|
355
|
+
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, providedByHook) {
|
|
355
356
|
const pageContextInit = {
|
|
356
357
|
urlOriginal,
|
|
357
|
-
...prerenderContext.
|
|
358
|
+
...prerenderContext._pageContextInit
|
|
358
359
|
};
|
|
359
|
-
const pageContext = await (0,
|
|
360
|
+
const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, globalContext_public, {
|
|
361
|
+
isPrerendering: true
|
|
362
|
+
});
|
|
360
363
|
(0, utils_js_1.assert)(pageContext.isPrerendering === true);
|
|
361
364
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
362
365
|
_urlHandler: null,
|
|
363
366
|
_httpRequestId: null,
|
|
364
367
|
_urlRewrite: null,
|
|
365
|
-
_noExtraDir: prerenderContext.
|
|
368
|
+
_noExtraDir: prerenderContext._noExtraDir,
|
|
366
369
|
_prerenderContext: prerenderContext,
|
|
367
370
|
_providedByHook: providedByHook,
|
|
368
371
|
_urlOriginalModifiedByHook: null,
|
|
@@ -388,14 +391,14 @@ async function createPageContext(urlOriginal, prerenderContext, globalContext, i
|
|
|
388
391
|
{
|
|
389
392
|
const { pageId } = pageContext;
|
|
390
393
|
(0, utils_js_1.assert)(pageId);
|
|
391
|
-
(0, utils_js_1.assert)(globalContext.
|
|
392
|
-
if (globalContext.
|
|
393
|
-
const pageConfig = globalContext.
|
|
394
|
+
(0, utils_js_1.assert)(globalContext._isPrerendering);
|
|
395
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
396
|
+
const pageConfig = globalContext._pageConfigs.find((p) => p.pageId === pageId);
|
|
394
397
|
(0, utils_js_1.assert)(pageConfig);
|
|
395
398
|
usesClientRouter = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
396
399
|
}
|
|
397
400
|
else {
|
|
398
|
-
usesClientRouter = globalContext.
|
|
401
|
+
usesClientRouter = globalContext._usesClientRouter;
|
|
399
402
|
}
|
|
400
403
|
}
|
|
401
404
|
(0, utils_js_1.objectAssign)(pageContext, { _usesClientRouter: usesClientRouter });
|
|
@@ -432,9 +435,9 @@ function assertRouteMatch(pageContextFromRoute, pageContext) {
|
|
|
432
435
|
async function callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit) {
|
|
433
436
|
let onPrerenderStartHook;
|
|
434
437
|
// V1 design
|
|
435
|
-
if (globalContext.
|
|
438
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
436
439
|
const hookName = 'onPrerenderStart';
|
|
437
|
-
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext.
|
|
440
|
+
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext._pageConfigGlobal, hookName);
|
|
438
441
|
if (hook) {
|
|
439
442
|
(0, utils_js_1.assert)(hook.hookName === 'onPrerenderStart');
|
|
440
443
|
onPrerenderStartHook = {
|
|
@@ -446,9 +449,9 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
446
449
|
}
|
|
447
450
|
// Old design
|
|
448
451
|
// TODO/v1-release: remove
|
|
449
|
-
if (globalContext.
|
|
452
|
+
if (globalContext._pageConfigs.length === 0) {
|
|
450
453
|
const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
|
|
451
|
-
const pageFilesWithOnBeforePrerenderHook = globalContext.
|
|
454
|
+
const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
|
|
452
455
|
assertExportNames(p);
|
|
453
456
|
if (!p.exportNames?.includes('onBeforePrerender'))
|
|
454
457
|
return false;
|
|
@@ -588,7 +591,7 @@ async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
|
|
|
588
591
|
pageContext,
|
|
589
592
|
htmlString: documentHtml,
|
|
590
593
|
pageContextSerialized,
|
|
591
|
-
doNotCreateExtraDirectory: prerenderContext.
|
|
594
|
+
doNotCreateExtraDirectory: prerenderContext._noExtraDir ?? pageContext.is404
|
|
592
595
|
});
|
|
593
596
|
})));
|
|
594
597
|
}
|
|
@@ -605,16 +608,16 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
|
|
|
605
608
|
});
|
|
606
609
|
}
|
|
607
610
|
async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
|
|
608
|
-
const isV1 = globalContext.
|
|
611
|
+
const isV1 = globalContext._pageConfigs.length > 0;
|
|
609
612
|
const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
|
|
610
613
|
/* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
|
|
611
614
|
const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
|
|
612
615
|
const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
|
|
613
616
|
*/
|
|
614
|
-
globalContext.
|
|
617
|
+
globalContext._allPageIds
|
|
615
618
|
.filter((pageId) => !prerenderedPageContexts[pageId])
|
|
616
619
|
.filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
617
|
-
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext.
|
|
620
|
+
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext._pageConfigs))
|
|
618
621
|
.forEach((pageId) => {
|
|
619
622
|
const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
|
|
620
623
|
(0, utils_js_1.assertWarning)(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
|
|
@@ -767,7 +770,7 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
767
770
|
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
768
771
|
}
|
|
769
772
|
function makePublic(prerenderContext) {
|
|
770
|
-
const prerenderContextPublic = (0, utils_js_1.
|
|
773
|
+
const prerenderContextPublic = (0, utils_js_1.getPublicProxy)(prerenderContext, 'prerenderContext', [
|
|
771
774
|
'output', // vite-plugin-vercel
|
|
772
775
|
'pageContexts' // https://vike.dev/i18n#pre-rendering
|
|
773
776
|
]);
|
|
@@ -31,6 +31,6 @@ __exportStar(require("../../utils/pLimit.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
34
|
-
__exportStar(require("../../utils/
|
|
34
|
+
__exportStar(require("../../utils/getPublicProxy.js"), exports);
|
|
35
35
|
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
36
36
|
__exportStar(require("../../utils/preservePropertyGetters.js"), exports);
|