vike 0.4.218 → 0.4.220
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 +11 -11
- package/dist/cjs/node/api/build.js +20 -11
- package/dist/cjs/node/api/context.js +5 -1
- package/dist/cjs/node/api/index.js +17 -7
- package/dist/cjs/node/api/prepareViteApiCall.js +39 -11
- package/dist/cjs/node/cli/entry.js +19 -7
- package/dist/cjs/node/plugin/index.js +5 -5
- package/dist/cjs/node/plugin/plugins/autoFullBuild.js +3 -4
- package/dist/cjs/node/plugin/plugins/baseUrls.js +3 -10
- package/dist/cjs/node/plugin/plugins/buildConfig.js +2 -2
- package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
- package/dist/cjs/node/plugin/plugins/commonConfig.js +39 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +26 -23
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +171 -68
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +4 -3
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -1
- package/dist/cjs/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
- package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +17 -7
- package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +16 -0
- package/dist/cjs/node/prerender/runPrerender.js +94 -66
- package/dist/cjs/node/prerender/utils.js +1 -0
- package/dist/cjs/node/runtime/globalContext.js +108 -34
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -2
- package/dist/cjs/node/runtime/index-common.js +0 -15
- package/dist/cjs/node/runtime/onLoad.js +17 -3
- package/dist/cjs/node/runtime/page-files/setup.js +2 -4
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +2 -2
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
- package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +9 -1
- package/dist/cjs/node/runtime/renderPage.js +21 -22
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/node/runtime-dev/index.js +17 -7
- package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -2
- package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +3 -3
- package/dist/cjs/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +8 -6
- package/dist/cjs/shared/getPageFiles.js +3 -9
- package/dist/cjs/shared/hooks/getHook.js +3 -3
- package/dist/cjs/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +113 -81
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +80 -55
- package/dist/cjs/shared/route/loadPageRoutes.js +3 -3
- package/dist/cjs/shared/utils.js +1 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +4 -3
- package/dist/cjs/utils/assertSetup.js +47 -16
- package/dist/cjs/utils/debug.js +11 -6
- package/dist/cjs/utils/getGlobalObject.js +1 -2
- package/dist/cjs/utils/objectReplace.js +9 -0
- package/dist/esm/__internal/index.d.ts +3 -5
- package/dist/esm/__internal/index.js +6 -8
- package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -1
- package/dist/esm/client/client-routing-runtime/entry.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/entry.js +0 -1
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +4 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +13 -3
- package/dist/esm/client/client-routing-runtime/initOnPopState.js +8 -0
- package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/skipLink.d.ts +2 -0
- package/dist/esm/client/client-routing-runtime/skipLink.js +1 -0
- package/dist/esm/client/server-routing-runtime/entry.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/entry.js +0 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.js +5 -2
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
- package/dist/esm/client/shared/normalizeClientSideUrl.js +2 -3
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/api/build.js +3 -4
- package/dist/esm/node/api/context.d.ts +3 -1
- package/dist/esm/node/api/context.js +6 -2
- package/dist/esm/node/api/prepareViteApiCall.d.ts +1 -1
- package/dist/esm/node/api/prepareViteApiCall.js +25 -7
- package/dist/esm/node/cli/entry.js +2 -0
- package/dist/esm/node/cli/parseCli.d.ts +1 -1
- package/dist/esm/node/plugin/index.d.ts +1 -1
- package/dist/esm/node/plugin/index.js +5 -5
- package/dist/esm/node/plugin/plugins/autoFullBuild.js +3 -4
- package/dist/esm/node/plugin/plugins/baseUrls.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +4 -11
- package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +40 -5
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +6 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +25 -22
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +96 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +167 -64
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +4 -3
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -1
- package/dist/esm/node/plugin/plugins/workaroundVite6HmrRegression.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
- package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +5 -0
- package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +14 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +1 -2
- package/dist/esm/node/prerender/runPrerender.js +78 -60
- package/dist/esm/node/prerender/utils.d.ts +1 -0
- package/dist/esm/node/prerender/utils.js +1 -0
- package/dist/esm/node/runtime/globalContext.d.ts +23 -7
- package/dist/esm/node/runtime/globalContext.js +108 -34
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
- package/dist/esm/node/runtime/index-common.d.ts +0 -1
- package/dist/esm/node/runtime/index-common.js +0 -15
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -0
- package/dist/esm/node/runtime/onLoad.js +16 -2
- package/dist/esm/node/runtime/page-files/setup.js +3 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +31 -46
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
- package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/resolveRedirects.js +9 -1
- package/dist/esm/node/runtime/renderPage.js +22 -23
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
- package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -1
- package/dist/esm/node/shared/assertRuntimeManifest.js +1 -3
- package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
- package/dist/esm/shared/getPageFiles/{setPageFiles.d.ts → getPageFiles.d.ts} +3 -1
- package/dist/esm/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +8 -6
- package/dist/esm/shared/getPageFiles.d.ts +2 -5
- package/dist/esm/shared/getPageFiles.js +1 -4
- package/dist/esm/shared/hooks/getHook.d.ts +3 -3
- package/dist/esm/shared/hooks/getHook.js +1 -1
- package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +9 -5
- package/dist/esm/shared/page-configs/Config.d.ts +20 -2
- package/dist/esm/shared/page-configs/PageConfig.d.ts +7 -3
- package/dist/esm/shared/{getPageFiles/getExports.d.ts → page-configs/getPageConfigUserFriendly.d.ts} +26 -12
- package/dist/esm/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +112 -80
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +26 -6
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +80 -55
- package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +1 -1
- package/dist/esm/shared/types.d.ts +1 -1
- package/dist/esm/shared/utils.d.ts +1 -0
- package/dist/esm/shared/utils.js +1 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assert.js +4 -3
- package/dist/esm/utils/assertSetup.js +47 -16
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +11 -6
- package/dist/esm/utils/getGlobalObject.js +1 -2
- package/dist/esm/utils/objectReplace.d.ts +1 -0
- package/dist/esm/utils/objectReplace.js +6 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +4 -13
- package/__internal/loadImportBuild.js +0 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -128
- package/dist/cjs/node/runtime/globalContext/loadImportBuild.js +0 -25
- package/dist/cjs/node/runtime/page-files/getPageFilesExports.js +0 -22
- package/dist/esm/client/client-routing-runtime/pageFiles.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/pageFiles.js +0 -4
- package/dist/esm/client/server-routing-runtime/pageFiles.d.ts +0 -1
- package/dist/esm/client/server-routing-runtime/pageFiles.js +0 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.d.ts +0 -104
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -123
- package/dist/esm/node/plugin/plugins/vite6HmrRegressionWorkaround.d.ts +0 -3
- package/dist/esm/node/runtime/globalContext/loadImportBuild.d.ts +0 -18
- package/dist/esm/node/runtime/globalContext/loadImportBuild.js +0 -23
- package/dist/esm/node/runtime/page-files/getPageFilesExports.d.ts +0 -2
- package/dist/esm/node/runtime/page-files/getPageFilesExports.js +0 -20
- /package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
- /package/dist/cjs/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
- /package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
- /package/dist/esm/shared/page-configs/{getConfigValue.d.ts → getConfigValueRuntime.d.ts} +0 -0
- /package/dist/esm/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -30,7 +40,6 @@ exports.runPrerenderFromAPI = runPrerenderFromAPI;
|
|
|
30
40
|
exports.runPrerenderFromCLIPrerenderCommand = runPrerenderFromCLIPrerenderCommand;
|
|
31
41
|
exports.runPrerenderFromAutoRun = runPrerenderFromAutoRun;
|
|
32
42
|
exports.runPrerender_forceExit = runPrerender_forceExit;
|
|
33
|
-
require("../runtime/page-files/setup.js");
|
|
34
43
|
const path_1 = __importDefault(require("path"));
|
|
35
44
|
const index_js_1 = require("../../shared/route/index.js");
|
|
36
45
|
const utils_js_1 = require("./utils.js");
|
|
@@ -43,7 +52,7 @@ const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
|
|
|
43
52
|
const getPageContextRequestUrl_js_1 = require("../../shared/getPageContextRequestUrl.js");
|
|
44
53
|
const resolveRouteString_js_1 = require("../../shared/route/resolveRouteString.js");
|
|
45
54
|
const helpers_js_1 = require("../../shared/page-configs/helpers.js");
|
|
46
|
-
const
|
|
55
|
+
const getConfigValueRuntime_js_1 = require("../../shared/page-configs/getConfigValueRuntime.js");
|
|
47
56
|
const loadConfigValues_js_1 = require("../../shared/page-configs/loadConfigValues.js");
|
|
48
57
|
const error_page_js_1 = require("../../shared/error-page.js");
|
|
49
58
|
const getPageContextUrlComputed_js_1 = require("../../shared/getPageContextUrlComputed.js");
|
|
@@ -74,7 +83,7 @@ async function runPrerenderFromCLIPrerenderCommand() {
|
|
|
74
83
|
}
|
|
75
84
|
runPrerender_forceExit();
|
|
76
85
|
}
|
|
77
|
-
async function runPrerenderFromAutoRun(viteConfig
|
|
86
|
+
async function runPrerenderFromAutoRun(viteConfig) {
|
|
78
87
|
try {
|
|
79
88
|
await runPrerender({ viteConfig });
|
|
80
89
|
}
|
|
@@ -83,8 +92,6 @@ async function runPrerenderFromAutoRun(viteConfig, forceExit) {
|
|
|
83
92
|
(0, logErrorHint_js_1.logErrorHint)(err);
|
|
84
93
|
process.exit(1);
|
|
85
94
|
}
|
|
86
|
-
if (forceExit)
|
|
87
|
-
runPrerender_forceExit();
|
|
88
95
|
}
|
|
89
96
|
async function runPrerender(options = {}, standaloneTrigger) {
|
|
90
97
|
checkOutdatedOptions(options);
|
|
@@ -97,11 +104,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
97
104
|
}
|
|
98
105
|
await disableReactStreaming();
|
|
99
106
|
const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
|
|
100
|
-
assertLoadedConfig(viteConfig, options);
|
|
101
107
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
|
|
102
108
|
const { outDirClient } = (0, utils_js_1.getOutDirs)(viteConfig);
|
|
103
109
|
const { root } = viteConfig;
|
|
104
110
|
const prerenderConfig = vikeConfig.vikeConfigGlobal.prerender;
|
|
111
|
+
validatePrerenderConfig(prerenderConfig);
|
|
105
112
|
if (!prerenderConfig) {
|
|
106
113
|
(0, utils_js_1.assert)(standaloneTrigger);
|
|
107
114
|
(0, utils_js_1.assertWarning)(prerenderConfig, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but the config ${picocolors_1.default.cyan('prerender')} isn't set to true`, {
|
|
@@ -111,8 +118,8 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
111
118
|
const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
|
|
112
119
|
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
113
120
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
114
|
-
const
|
|
115
|
-
|
|
121
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
122
|
+
globalContext.pageFilesAll.forEach(assertExportNames);
|
|
116
123
|
const prerenderContext = {};
|
|
117
124
|
(0, utils_js_1.objectAssign)(prerenderContext, {
|
|
118
125
|
_urlHandler: null,
|
|
@@ -121,10 +128,10 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
121
128
|
pageContextInit: options.pageContextInit ?? null
|
|
122
129
|
});
|
|
123
130
|
const doNotPrerenderList = [];
|
|
124
|
-
await collectDoNoPrerenderList(
|
|
125
|
-
await callOnBeforePrerenderStartHooks(prerenderContext,
|
|
126
|
-
await handlePagesWithStaticRoutes(prerenderContext,
|
|
127
|
-
await callOnPrerenderStartHook(prerenderContext
|
|
131
|
+
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
|
|
132
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
|
|
133
|
+
await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
|
|
134
|
+
await callOnPrerenderStartHook(prerenderContext);
|
|
128
135
|
const prerenderedPageContexts = {};
|
|
129
136
|
let prerenderedCount = 0;
|
|
130
137
|
const onComplete = async (htmlFile) => {
|
|
@@ -136,14 +143,14 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
136
143
|
};
|
|
137
144
|
await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
|
|
138
145
|
warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList);
|
|
139
|
-
await prerender404(prerenderedPageContexts,
|
|
146
|
+
await prerender404(prerenderedPageContexts, prerenderContext, onComplete);
|
|
140
147
|
if (logLevel === 'info') {
|
|
141
148
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
142
149
|
}
|
|
143
|
-
warnMissingPages(prerenderedPageContexts, doNotPrerenderList,
|
|
150
|
+
warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial);
|
|
144
151
|
return { viteConfig };
|
|
145
152
|
}
|
|
146
|
-
async function collectDoNoPrerenderList(
|
|
153
|
+
async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
|
|
147
154
|
// V1 design
|
|
148
155
|
pageConfigs.forEach((pageConfig) => {
|
|
149
156
|
const configName = 'prerender';
|
|
@@ -161,7 +168,8 @@ async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerend
|
|
|
161
168
|
});
|
|
162
169
|
// Old design
|
|
163
170
|
// TODO/v1-release: remove
|
|
164
|
-
|
|
171
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
172
|
+
await Promise.all(globalContext.pageFilesAll
|
|
165
173
|
.filter((p) => {
|
|
166
174
|
assertExportNames(p);
|
|
167
175
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
@@ -173,8 +181,8 @@ async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerend
|
|
|
173
181
|
(0, utils_js_1.assert)(p.loadFile);
|
|
174
182
|
await p.loadFile();
|
|
175
183
|
})));
|
|
176
|
-
|
|
177
|
-
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(
|
|
184
|
+
globalContext.allPageIds.forEach((pageId) => {
|
|
185
|
+
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext.pageFilesAll, pageId);
|
|
178
186
|
for (const p of pageFilesServerSide) {
|
|
179
187
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
180
188
|
continue;
|
|
@@ -203,10 +211,11 @@ function assertExportNames(pageFile) {
|
|
|
203
211
|
const { exportNames, fileType } = pageFile;
|
|
204
212
|
(0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
205
213
|
}
|
|
206
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext,
|
|
214
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList) {
|
|
207
215
|
const onBeforePrerenderStartHooks = [];
|
|
216
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
208
217
|
// V1 design
|
|
209
|
-
await Promise.all(
|
|
218
|
+
await Promise.all(globalContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
210
219
|
const hookName = 'onBeforePrerenderStart';
|
|
211
220
|
const pageConfigLoaded = await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, false);
|
|
212
221
|
const hook = (0, getHook_js_1.getHookFromPageConfig)(pageConfigLoaded, hookName);
|
|
@@ -222,7 +231,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
|
|
|
222
231
|
});
|
|
223
232
|
})));
|
|
224
233
|
// 0.4 design
|
|
225
|
-
await Promise.all(
|
|
234
|
+
await Promise.all(globalContext.pageFilesAll
|
|
226
235
|
.filter((p) => {
|
|
227
236
|
assertExportNames(p);
|
|
228
237
|
if (!p.exportNames?.includes('prerender'))
|
|
@@ -263,7 +272,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
|
|
|
263
272
|
(0, utils_js_1.assertUsage)(false, `URL ${picocolors_1.default.cyan(url)} provided ${providedTwice}. Make sure to provide the URL only once instead.`);
|
|
264
273
|
}
|
|
265
274
|
}
|
|
266
|
-
const pageContextNew = createPageContext(url,
|
|
275
|
+
const pageContextNew = createPageContext(url, prerenderContext);
|
|
267
276
|
(0, utils_js_1.objectAssign)(pageContextNew, {
|
|
268
277
|
_providedByHook: {
|
|
269
278
|
hookFilePath,
|
|
@@ -280,9 +289,10 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
|
|
|
280
289
|
});
|
|
281
290
|
})));
|
|
282
291
|
}
|
|
283
|
-
async function handlePagesWithStaticRoutes(prerenderContext,
|
|
292
|
+
async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit) {
|
|
284
293
|
// Pre-render pages with a static route
|
|
285
|
-
|
|
294
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
295
|
+
await Promise.all(globalContext.pageRoutes.map((pageRoute) => concurrencyLimit(async () => {
|
|
286
296
|
const { pageId } = pageRoute;
|
|
287
297
|
if (doNotPrerenderList.find((p) => p.pageId === pageId)) {
|
|
288
298
|
return;
|
|
@@ -307,7 +317,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, renderContext, doNo
|
|
|
307
317
|
return;
|
|
308
318
|
}
|
|
309
319
|
const routeParams = {};
|
|
310
|
-
const pageContext = createPageContext(urlOriginal,
|
|
320
|
+
const pageContext = createPageContext(urlOriginal, prerenderContext);
|
|
311
321
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
312
322
|
_providedByHook: null,
|
|
313
323
|
routeParams,
|
|
@@ -325,7 +335,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, renderContext, doNo
|
|
|
325
335
|
prerenderContext.pageContexts.push(pageContext);
|
|
326
336
|
})));
|
|
327
337
|
}
|
|
328
|
-
function createPageContext(urlOriginal,
|
|
338
|
+
function createPageContext(urlOriginal, prerenderContext) {
|
|
329
339
|
const pageContext = {
|
|
330
340
|
_urlHandler: null,
|
|
331
341
|
_urlRewrite: null,
|
|
@@ -337,17 +347,18 @@ function createPageContext(urlOriginal, renderContext, prerenderContext) {
|
|
|
337
347
|
};
|
|
338
348
|
(0, utils_js_1.objectAssign)(pageContextInit, prerenderContext.pageContextInit);
|
|
339
349
|
{
|
|
340
|
-
const pageContextInitEnhanced = (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit
|
|
350
|
+
const pageContextInitEnhanced = (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit);
|
|
341
351
|
(0, utils_js_1.objectAssign)(pageContext, pageContextInitEnhanced);
|
|
342
352
|
}
|
|
343
353
|
return pageContext;
|
|
344
354
|
}
|
|
345
|
-
async function callOnPrerenderStartHook(prerenderContext
|
|
355
|
+
async function callOnPrerenderStartHook(prerenderContext) {
|
|
356
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
346
357
|
let onPrerenderStartHook;
|
|
347
358
|
// V1 design
|
|
348
|
-
if (
|
|
359
|
+
if (globalContext.pageConfigs.length > 0) {
|
|
349
360
|
const hookName = 'onPrerenderStart';
|
|
350
|
-
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(
|
|
361
|
+
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext.pageConfigGlobal, hookName);
|
|
351
362
|
if (hook) {
|
|
352
363
|
(0, utils_js_1.assert)(hook.hookName === 'onPrerenderStart');
|
|
353
364
|
onPrerenderStartHook = {
|
|
@@ -359,9 +370,9 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
|
|
|
359
370
|
}
|
|
360
371
|
// Old design
|
|
361
372
|
// TODO/v1-release: remove
|
|
362
|
-
if (
|
|
373
|
+
if (globalContext.pageConfigs.length === 0) {
|
|
363
374
|
const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
|
|
364
|
-
const pageFilesWithOnBeforePrerenderHook =
|
|
375
|
+
const pageFilesWithOnBeforePrerenderHook = globalContext.pageFilesAll.filter((p) => {
|
|
365
376
|
assertExportNames(p);
|
|
366
377
|
if (!p.exportNames?.includes('onBeforePrerender'))
|
|
367
378
|
return false;
|
|
@@ -506,10 +517,10 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
|
|
|
506
517
|
if (pageContext._pageConfigs.length > 0) {
|
|
507
518
|
const pageConfig = pageContext._pageConfigs.find((p) => p.pageId === pageId);
|
|
508
519
|
(0, utils_js_1.assert)(pageConfig);
|
|
509
|
-
usesClientRouter = (0,
|
|
520
|
+
usesClientRouter = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
510
521
|
}
|
|
511
522
|
else {
|
|
512
|
-
usesClientRouter = globalContext.
|
|
523
|
+
usesClientRouter = globalContext.usesClientRouter;
|
|
513
524
|
}
|
|
514
525
|
}
|
|
515
526
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
@@ -549,27 +560,28 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
|
|
|
549
560
|
(0, utils_js_1.assertWarning)(false, `The ${providedByHook.hookName}() hook defined by ${providedByHook.hookFilePath} returns the URL ${picocolors_1.default.cyan(urlOriginal)}, while ${setByConfigFile} sets the config ${picocolors_1.default.cyan(setByConfigName)} to ${picocolors_1.default.cyan(String(setByConfigValue))}. This is contradictory: either don't set the config ${picocolors_1.default.cyan(setByConfigName)} to ${picocolors_1.default.cyan(String(setByConfigValue))} or remove the URL ${picocolors_1.default.cyan(urlOriginal)} from the list of URLs to be pre-rendered.`, { onlyOnce: true });
|
|
550
561
|
});
|
|
551
562
|
}
|
|
552
|
-
function warnMissingPages(prerenderedPageContexts, doNotPrerenderList,
|
|
553
|
-
const
|
|
563
|
+
function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial) {
|
|
564
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
565
|
+
const isV1 = globalContext.pageConfigs.length > 0;
|
|
554
566
|
const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
|
|
555
567
|
/* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
|
|
556
568
|
const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
|
|
557
569
|
const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
|
|
558
570
|
*/
|
|
559
|
-
|
|
571
|
+
globalContext.allPageIds
|
|
560
572
|
.filter((pageId) => !prerenderedPageContexts[pageId])
|
|
561
573
|
.filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
562
|
-
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId,
|
|
574
|
+
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext.pageConfigs))
|
|
563
575
|
.forEach((pageId) => {
|
|
564
576
|
const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
|
|
565
577
|
(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 });
|
|
566
578
|
});
|
|
567
579
|
}
|
|
568
|
-
async function prerender404(prerenderedPageContexts,
|
|
580
|
+
async function prerender404(prerenderedPageContexts, prerenderContext, onComplete) {
|
|
569
581
|
if (!Object.values(prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
|
|
570
582
|
let result;
|
|
571
583
|
try {
|
|
572
|
-
result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(
|
|
584
|
+
result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit);
|
|
573
585
|
}
|
|
574
586
|
catch (err) {
|
|
575
587
|
assertIsNotAbort(err, 'the 404 page');
|
|
@@ -700,25 +712,6 @@ async function disableReactStreaming() {
|
|
|
700
712
|
const { disable } = mod;
|
|
701
713
|
disable();
|
|
702
714
|
}
|
|
703
|
-
function assertLoadedConfig(viteConfig, options) {
|
|
704
|
-
if (viteConfig.plugins.some((p) => p.name.startsWith('vike'))) {
|
|
705
|
-
return;
|
|
706
|
-
}
|
|
707
|
-
const { configFile } = viteConfig;
|
|
708
|
-
if (configFile) {
|
|
709
|
-
(0, utils_js_1.assertUsage)(false, `${configFile} doesn't install the vike plugin`);
|
|
710
|
-
}
|
|
711
|
-
else {
|
|
712
|
-
if (!options.viteConfig) {
|
|
713
|
-
(0, utils_js_1.assertUsage)(false, `[prerender()] No vite.config.js file found at ${process.cwd()}. Use the option ${picocolors_1.default.cyan('prerender({ viteConfig })')}.`, { showStackTrace: true });
|
|
714
|
-
}
|
|
715
|
-
else {
|
|
716
|
-
(0, utils_js_1.assertUsage)(false, `[prerender()] The Vite config ${picocolors_1.default.cyan('prerender({ viteConfig })')} is missing the vike plugin.`, {
|
|
717
|
-
showStackTrace: true
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
715
|
function isSameUrl(url1, url2) {
|
|
723
716
|
return normalizeUrl(url1) === normalizeUrl(url2);
|
|
724
717
|
}
|
|
@@ -768,3 +761,38 @@ function makePageContextComputedUrlNonEnumerable(pageContexts) {
|
|
|
768
761
|
});
|
|
769
762
|
}
|
|
770
763
|
}
|
|
764
|
+
function validatePrerenderConfig(
|
|
765
|
+
// Guaranteed by configDef.type to be either an object or boolean
|
|
766
|
+
prerenderConfig) {
|
|
767
|
+
if (!prerenderConfig || typeof prerenderConfig === 'boolean')
|
|
768
|
+
return;
|
|
769
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(prerenderConfig));
|
|
770
|
+
const wrongValue = (() => {
|
|
771
|
+
{
|
|
772
|
+
const p = 'partial';
|
|
773
|
+
if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') && !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
|
|
774
|
+
return { prop: p, errMsg: 'should be a boolean' };
|
|
775
|
+
}
|
|
776
|
+
{
|
|
777
|
+
const p = 'noExtraDir';
|
|
778
|
+
if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') && !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
|
|
779
|
+
return { prop: p, errMsg: 'should be a boolean' };
|
|
780
|
+
}
|
|
781
|
+
{
|
|
782
|
+
const p = 'disableAutoRun';
|
|
783
|
+
if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') && !(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
|
|
784
|
+
return { prop: p, errMsg: 'should be a boolean' };
|
|
785
|
+
}
|
|
786
|
+
{
|
|
787
|
+
const p = 'parallel';
|
|
788
|
+
if (!(0, utils_js_1.hasProp)(prerenderConfig, p, 'boolean') &&
|
|
789
|
+
!(0, utils_js_1.hasProp)(prerenderConfig, p, 'number') &&
|
|
790
|
+
!(0, utils_js_1.hasProp)(prerenderConfig, p, 'undefined'))
|
|
791
|
+
return { prop: p, errMsg: 'should be a boolean or a number' };
|
|
792
|
+
}
|
|
793
|
+
})();
|
|
794
|
+
if (wrongValue) {
|
|
795
|
+
const { prop, errMsg } = wrongValue;
|
|
796
|
+
(0, utils_js_1.assertUsage)(false, `Setting ${picocolors_1.default.cyan(`prerender.${prop}`)} ${errMsg}`);
|
|
797
|
+
}
|
|
798
|
+
}
|
|
@@ -31,4 +31,5 @@ __exportStar(require("../../utils/assertSetup.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/pLimit.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
34
|
+
__exportStar(require("../../utils/isObject.js"), exports);
|
|
34
35
|
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|
|
@@ -17,23 +17,26 @@ exports.setGlobalContext_viteConfig = setGlobalContext_viteConfig;
|
|
|
17
17
|
exports.setGlobalContext_vikeConfig = setGlobalContext_vikeConfig;
|
|
18
18
|
exports.setGlobalContext_isViteDev = setGlobalContext_isViteDev;
|
|
19
19
|
exports.setGlobalContext_isPrerendering = setGlobalContext_isPrerendering;
|
|
20
|
+
exports.setGlobalContext_buildEntry = setGlobalContext_buildEntry;
|
|
21
|
+
exports.clearGlobalContext = clearGlobalContext;
|
|
20
22
|
const utils_js_1 = require("./utils.js");
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
+
const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
|
|
24
|
+
const virtualFileImportUserCode_js_1 = require("../shared/virtual-files/virtualFileImportUserCode.js");
|
|
25
|
+
const getPageFiles_js_1 = require("../../shared/getPageFiles/getPageFiles.js");
|
|
23
26
|
const assertPluginManifest_js_1 = require("../shared/assertPluginManifest.js");
|
|
24
27
|
const assertRuntimeManifest_js_1 = require("../shared/assertRuntimeManifest.js");
|
|
25
28
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
26
|
-
const getPageFilesExports_js_1 = require("./page-files/getPageFilesExports.js");
|
|
27
29
|
const resolveBase_js_1 = require("../shared/resolveBase.js");
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
34
|
-
})());
|
|
30
|
+
const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
|
|
31
|
+
const assertV1Design_js_1 = require("../shared/assertV1Design.js");
|
|
32
|
+
const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
|
|
33
|
+
const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', getInitialGlobalContext());
|
|
34
|
+
initDevEntry();
|
|
35
35
|
function getGlobalContext() {
|
|
36
|
-
|
|
36
|
+
if (!globalObject.globalContext) {
|
|
37
|
+
debug('getGlobalContext()', new Error().stack);
|
|
38
|
+
(0, utils_js_1.assert)(false);
|
|
39
|
+
}
|
|
37
40
|
return globalObject.globalContext;
|
|
38
41
|
}
|
|
39
42
|
/** @experimental https://vike.dev/getGlobalContext */
|
|
@@ -51,6 +54,7 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
51
54
|
}
|
|
52
55
|
function makePublic(globalContext) {
|
|
53
56
|
const globalContextPublic = {
|
|
57
|
+
// TODO/now: add viteConfig and vikeConfig
|
|
54
58
|
assetsManifest: globalContext.assetsManifest
|
|
55
59
|
};
|
|
56
60
|
// Add internals (and prepended _ prefix to their keys)
|
|
@@ -112,9 +116,11 @@ function getViteConfig() {
|
|
|
112
116
|
return globalObject.viteConfig ?? null;
|
|
113
117
|
}
|
|
114
118
|
async function initGlobalContext_renderPage() {
|
|
119
|
+
debug('initGlobalContext_renderPage()');
|
|
115
120
|
await initGlobalContext(!globalObject.isViteDev);
|
|
116
121
|
}
|
|
117
122
|
async function initGlobalContext_runPrerender() {
|
|
123
|
+
debug('initGlobalContext_runPrerender()');
|
|
118
124
|
if (globalObject.initGlobalContext_runPrerender_alreadyCalled)
|
|
119
125
|
return;
|
|
120
126
|
globalObject.initGlobalContext_runPrerender_alreadyCalled = true;
|
|
@@ -128,6 +134,7 @@ async function initGlobalContext_runPrerender() {
|
|
|
128
134
|
await initGlobalContext(true);
|
|
129
135
|
}
|
|
130
136
|
async function initGlobalContext_getGlobalContextAsync(isProduction) {
|
|
137
|
+
debug('initGlobalContext_getGlobalContextAsync()');
|
|
131
138
|
if (!isProduction) {
|
|
132
139
|
const waitFor = 20;
|
|
133
140
|
const timeout = setTimeout(() => {
|
|
@@ -141,6 +148,7 @@ async function initGlobalContext_getGlobalContextAsync(isProduction) {
|
|
|
141
148
|
}
|
|
142
149
|
await initGlobalContext(isProduction);
|
|
143
150
|
}
|
|
151
|
+
// TODO/now: refactor: move this to the top of the file
|
|
144
152
|
async function initGlobalContext(isProduction) {
|
|
145
153
|
if (globalObject.globalContext) {
|
|
146
154
|
(0, utils_js_1.assert)(globalObject.globalContext.isProduction === isProduction);
|
|
@@ -155,41 +163,45 @@ async function initGlobalContext(isProduction) {
|
|
|
155
163
|
(0, utils_js_1.assert)(vikeConfig);
|
|
156
164
|
(0, utils_js_1.assert)(viteDevServer);
|
|
157
165
|
(0, utils_js_1.assert)(!isPrerendering);
|
|
158
|
-
const
|
|
159
|
-
const pluginManifest = getRuntimeManifest(vikeConfigGlobal, viteConfig);
|
|
166
|
+
const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
|
|
167
|
+
const pluginManifest = getRuntimeManifest(vikeConfig.vikeConfigGlobal, viteConfig);
|
|
160
168
|
globalObject.globalContext = {
|
|
161
169
|
isProduction: false,
|
|
162
170
|
isPrerendering: false,
|
|
163
171
|
assetsManifest: null,
|
|
164
|
-
pluginManifest: null,
|
|
165
172
|
viteDevServer,
|
|
166
173
|
viteConfig,
|
|
167
|
-
vikeConfig
|
|
174
|
+
vikeConfig: {
|
|
175
|
+
global: globalConfig
|
|
176
|
+
},
|
|
177
|
+
...userFiles,
|
|
168
178
|
baseServer: pluginManifest.baseServer,
|
|
169
179
|
baseAssets: pluginManifest.baseAssets,
|
|
170
180
|
includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
|
|
171
|
-
redirects: pluginManifest.redirects,
|
|
172
181
|
trailingSlash: pluginManifest.trailingSlash,
|
|
173
182
|
disableUrlNormalization: pluginManifest.disableUrlNormalization
|
|
174
183
|
};
|
|
175
184
|
}
|
|
176
185
|
else {
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
186
|
+
const buildEntry = await getBuildEntry(globalObject.outDirRoot, isPrerendering);
|
|
187
|
+
const { assetsManifest, pluginManifest } = buildEntry;
|
|
188
|
+
(0, getPageFiles_js_1.setPageFiles)(buildEntry.pageFiles);
|
|
189
|
+
const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
|
|
181
190
|
assertViteManifest(assetsManifest);
|
|
182
191
|
(0, assertPluginManifest_js_1.assertPluginManifest)(pluginManifest);
|
|
183
192
|
const globalContext = {
|
|
184
193
|
isProduction: true,
|
|
185
194
|
assetsManifest,
|
|
186
|
-
|
|
195
|
+
vikeConfig: {
|
|
196
|
+
global: globalConfig
|
|
197
|
+
},
|
|
198
|
+
...userFiles,
|
|
187
199
|
viteDevServer: null,
|
|
188
200
|
baseServer: pluginManifest.baseServer,
|
|
189
201
|
baseAssets: pluginManifest.baseAssets,
|
|
190
202
|
includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
|
|
191
|
-
redirects: pluginManifest.redirects,
|
|
192
203
|
trailingSlash: pluginManifest.trailingSlash,
|
|
204
|
+
usesClientRouter: pluginManifest.usesClientRouter,
|
|
193
205
|
disableUrlNormalization: pluginManifest.disableUrlNormalization
|
|
194
206
|
};
|
|
195
207
|
if (isPrerendering) {
|
|
@@ -209,29 +221,35 @@ async function initGlobalContext(isProduction) {
|
|
|
209
221
|
}
|
|
210
222
|
}
|
|
211
223
|
}
|
|
224
|
+
async function getPageRuntimeInfo(isProduction) {
|
|
225
|
+
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig } = await (0, getPageFiles_js_1.getPageFilesAll)(false, isProduction);
|
|
226
|
+
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
227
|
+
const userFiles = {
|
|
228
|
+
pageFilesAll,
|
|
229
|
+
pageConfigs,
|
|
230
|
+
pageConfigGlobal,
|
|
231
|
+
allPageIds,
|
|
232
|
+
pageRoutes,
|
|
233
|
+
onBeforeRouteHook
|
|
234
|
+
};
|
|
235
|
+
(0, assertV1Design_js_1.assertV1Design)(
|
|
236
|
+
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
237
|
+
pageConfigs.length > 0, pageFilesAll);
|
|
238
|
+
return { userFiles, globalConfig };
|
|
239
|
+
}
|
|
212
240
|
function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
|
|
213
|
-
const { includeAssetsImportedByServer,
|
|
241
|
+
const { includeAssetsImportedByServer, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
|
|
214
242
|
const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseFromResolvedConfig)(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
|
|
215
243
|
const manifest = {
|
|
216
244
|
baseServer,
|
|
217
245
|
baseAssets,
|
|
218
246
|
includeAssetsImportedByServer,
|
|
219
|
-
redirects,
|
|
220
247
|
trailingSlash,
|
|
221
248
|
disableUrlNormalization
|
|
222
249
|
};
|
|
223
250
|
(0, assertRuntimeManifest_js_1.assertRuntimeManifest)(manifest);
|
|
224
251
|
return manifest;
|
|
225
252
|
}
|
|
226
|
-
function assertBuildEntries(buildEntries, isPreRendering) {
|
|
227
|
-
const errMsg = [
|
|
228
|
-
`You are tyring to run`,
|
|
229
|
-
isPreRendering ? 'pre-rendering' : 'the server for production',
|
|
230
|
-
`but your app isn't built yet. Run ${picocolors_1.default.cyan('$ vike build')} before `,
|
|
231
|
-
isPreRendering ? 'pre-rendering.' : 'running the server.'
|
|
232
|
-
].join(' ');
|
|
233
|
-
(0, utils_js_1.assertUsage)(buildEntries, errMsg);
|
|
234
|
-
}
|
|
235
253
|
function assertViteManifest(manifest) {
|
|
236
254
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(manifest));
|
|
237
255
|
/* We should include these assertions but we don't as a workaround for PWA manifests: https://github.com/vikejs/vike/issues/769
|
|
@@ -248,5 +266,61 @@ function assertViteManifest(manifest) {
|
|
|
248
266
|
function eagerlyLoadUserFiles() {
|
|
249
267
|
// Other than here, the getPageFilesExports() function is only called only upon calling the renderPage() function.
|
|
250
268
|
// We call it as early as possible here for better performance.
|
|
251
|
-
|
|
269
|
+
getPageFilesExports();
|
|
270
|
+
}
|
|
271
|
+
async function getBuildEntry(outDir, isPrerendering) {
|
|
272
|
+
debug('getBuildEntry()');
|
|
273
|
+
if (!globalObject.buildEntry) {
|
|
274
|
+
debug('importServerProductionEntry()');
|
|
275
|
+
// importServerProductionEntry() loads dist/server/entry.mjs which calls setGlobalContext_buildEntry()
|
|
276
|
+
await (0, runtime_1.importServerProductionEntry)({ outDir, doNotLoadServer: isPrerendering });
|
|
277
|
+
if (!globalObject.buildEntry) {
|
|
278
|
+
debug('globalObject.buildEntryPrevious');
|
|
279
|
+
// Needed, for example, when calling the API prerender() then preview() because both trigger a importServerProductionEntry() call but only the first only is applied because of the import() cache. (A proper implementation would be to clear the import() cache, but it probably isn't possible on platforms such as Cloudflare Workers.)
|
|
280
|
+
globalObject.buildEntry = globalObject.buildEntryPrevious;
|
|
281
|
+
}
|
|
282
|
+
(0, utils_js_1.assert)(globalObject.buildEntry);
|
|
283
|
+
}
|
|
284
|
+
const { buildEntry } = globalObject;
|
|
285
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
|
|
286
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
|
|
287
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
|
|
288
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pluginManifest', 'object'));
|
|
289
|
+
return buildEntry;
|
|
290
|
+
}
|
|
291
|
+
function setGlobalContext_buildEntry(buildEntry) {
|
|
292
|
+
debug('setGlobalContext_buildEntry()');
|
|
293
|
+
globalObject.buildEntry = buildEntry;
|
|
294
|
+
globalObject.buildEntryPrevious = buildEntry;
|
|
295
|
+
}
|
|
296
|
+
function initDevEntry() {
|
|
297
|
+
(0, getPageFiles_js_1.setPageFilesAsync)(getPageFilesExports);
|
|
298
|
+
}
|
|
299
|
+
async function getPageFilesExports() {
|
|
300
|
+
const viteDevServer = getViteDevServer();
|
|
301
|
+
(0, utils_js_1.assert)(viteDevServer);
|
|
302
|
+
let moduleExports;
|
|
303
|
+
try {
|
|
304
|
+
moduleExports = await viteDevServer.ssrLoadModule(virtualFileImportUserCode_js_1.virtualFileIdImportUserCodeServer);
|
|
305
|
+
}
|
|
306
|
+
catch (err) {
|
|
307
|
+
(0, utils_js_1.debugGlob)(`Glob error: ${virtualFileImportUserCode_js_1.virtualFileIdImportUserCodeServer} transpile error: `, err);
|
|
308
|
+
throw err;
|
|
309
|
+
}
|
|
310
|
+
moduleExports = moduleExports.default || moduleExports;
|
|
311
|
+
(0, utils_js_1.debugGlob)('Glob result: ', moduleExports);
|
|
312
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(moduleExports));
|
|
313
|
+
return moduleExports;
|
|
314
|
+
}
|
|
315
|
+
function clearGlobalContext() {
|
|
316
|
+
debug('clearGlobalContext()');
|
|
317
|
+
(0, utils_js_1.objectReplace)(globalObject, getInitialGlobalContext(), ['buildEntryPrevious']);
|
|
318
|
+
}
|
|
319
|
+
function getInitialGlobalContext() {
|
|
320
|
+
debug('getInitialGlobalContext()');
|
|
321
|
+
const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = (0, utils_js_1.genPromise)();
|
|
322
|
+
return {
|
|
323
|
+
viteDevServerPromise,
|
|
324
|
+
viteDevServerPromiseResolve
|
|
325
|
+
};
|
|
252
326
|
}
|
|
@@ -10,7 +10,7 @@ const sanitizeJson_js_1 = require("./sanitizeJson.js");
|
|
|
10
10
|
const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
|
|
11
11
|
const mergeScriptTags_js_1 = require("./mergeScriptTags.js");
|
|
12
12
|
const helpers_js_1 = require("../../../../shared/page-configs/helpers.js");
|
|
13
|
-
const
|
|
13
|
+
const getConfigValueRuntime_js_1 = require("../../../../shared/page-configs/getConfigValueRuntime.js");
|
|
14
14
|
const globalContext_js_1 = require("../../globalContext.js");
|
|
15
15
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
16
16
|
const getConfigDefinedAt_js_1 = require("../../../../shared/page-configs/getConfigDefinedAt.js");
|
|
@@ -218,7 +218,7 @@ function getInjectScriptsAt(pageId, pageConfigs) {
|
|
|
218
218
|
if (pageConfigs.length === 0)
|
|
219
219
|
return null; // only support V1 design
|
|
220
220
|
const pageConfig = (0, helpers_js_1.getPageConfig)(pageId, pageConfigs);
|
|
221
|
-
const configValue = (0,
|
|
221
|
+
const configValue = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'injectScriptsAt');
|
|
222
222
|
if (!configValue)
|
|
223
223
|
return null;
|
|
224
224
|
const injectScriptsAt = configValue.value;
|
|
@@ -24,18 +24,3 @@ Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: functio
|
|
|
24
24
|
// TODO/v1-release: remove
|
|
25
25
|
var createPageRenderer_js_1 = require("../createPageRenderer.js");
|
|
26
26
|
Object.defineProperty(exports, "createPageRenderer", { enumerable: true, get: function () { return createPageRenderer_js_1.createPageRenderer; } });
|
|
27
|
-
addEcosystemStamp();
|
|
28
|
-
require("./page-files/setup.js");
|
|
29
|
-
// Used by:
|
|
30
|
-
// - Telefunc (to detect the user's stack https://github.com/brillout/telefunc/blob/8288310e88e06a42b710d39c39fb502364ca6d30/telefunc/utils/isVikeApp.ts#L4)
|
|
31
|
-
function addEcosystemStamp() {
|
|
32
|
-
const g = globalThis;
|
|
33
|
-
g._isVikeApp =
|
|
34
|
-
/* Don't set to true so that consumers do `!!globalThis._isVikeApp` instead of `globalThis._isVikeApp === true`.
|
|
35
|
-
true
|
|
36
|
-
*/
|
|
37
|
-
// We use an object so that we can eventually, in the future, add helpful information as needed. (E.g. the Vike version, or global settings.)
|
|
38
|
-
{};
|
|
39
|
-
// We keep the old stamp for older Telefunc versions
|
|
40
|
-
g._isVitePluginSsr = true;
|
|
41
|
-
}
|