vike 0.4.219 → 0.4.220-commit-a9f46b8
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/node/api/build.js +23 -58
- package/dist/cjs/node/api/context.js +6 -8
- package/dist/cjs/node/api/prepareViteApiCall.js +6 -7
- package/dist/cjs/node/cli/context.js +16 -0
- package/dist/cjs/node/cli/entry.js +2 -0
- package/dist/cjs/node/cli/utils.js +1 -0
- package/dist/cjs/node/plugin/plugins/autoFullBuild.js +32 -19
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +10 -8
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +3 -2
- package/dist/cjs/node/prerender/{isPrerenderAutoRunEnabled.js → context.js} +9 -1
- package/dist/cjs/node/prerender/runPrerender.js +55 -33
- package/dist/cjs/node/prerender/utils.js +1 -0
- package/dist/cjs/node/runtime/globalContext.js +2 -22
- package/dist/cjs/node/runtime/page-files/setup.js +1 -1
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/shared/page-configs/loadConfigValues.js +5 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +15 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +34 -0
- package/dist/cjs/utils/isDev.js +2 -0
- package/dist/cjs/utils/makePublicCopy.js +32 -0
- package/dist/esm/client/client-routing-runtime/history.d.ts +3 -1
- package/dist/esm/client/client-routing-runtime/history.js +23 -18
- package/dist/esm/client/client-routing-runtime/index.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/index.js +0 -1
- package/dist/esm/client/client-routing-runtime/initClientRouter.js +2 -2
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +3 -4
- package/dist/esm/client/client-routing-runtime/initOnPopState.d.ts +0 -10
- package/dist/esm/client/client-routing-runtime/initOnPopState.js +50 -62
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +15 -15
- package/dist/esm/client/client-routing-runtime/scrollRestoration.d.ts +4 -6
- package/dist/esm/client/client-routing-runtime/scrollRestoration.js +17 -12
- package/dist/esm/client/client-routing-runtime/setScrollPosition.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/setScrollPosition.js +29 -5
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/shared/normalizeClientSideUrl.js +2 -3
- package/dist/esm/node/api/build.d.ts +1 -6
- package/dist/esm/node/api/build.js +20 -25
- package/dist/esm/node/api/context.d.ts +4 -4
- package/dist/esm/node/api/context.js +6 -9
- package/dist/esm/node/api/prepareViteApiCall.d.ts +0 -1
- package/dist/esm/node/api/prepareViteApiCall.js +7 -8
- package/dist/esm/node/cli/context.d.ts +5 -0
- package/dist/esm/node/cli/context.js +14 -0
- package/dist/esm/node/cli/entry.js +2 -0
- package/dist/esm/node/cli/parseCli.d.ts +3 -1
- package/dist/esm/node/cli/utils.d.ts +1 -0
- package/dist/esm/node/cli/utils.js +1 -0
- package/dist/esm/node/plugin/plugins/autoFullBuild.js +31 -18
- package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +8 -2
- package/dist/esm/node/plugin/plugins/commonConfig.js +8 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +3 -2
- package/dist/esm/node/prerender/{isPrerenderAutoRunEnabled.d.ts → context.d.ts} +4 -0
- package/dist/esm/node/prerender/{isPrerenderAutoRunEnabled.js → context.js} +9 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +42 -1
- package/dist/esm/node/prerender/runPrerender.js +56 -34
- 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.js +3 -23
- package/dist/esm/node/runtime/page-files/setup.js +1 -1
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/shared/page-configs/PageConfig.d.ts +6 -3
- package/dist/esm/shared/page-configs/loadConfigValues.js +6 -2
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSetup.js +15 -1
- package/dist/esm/utils/catchInfiniteLoop.d.ts +2 -0
- package/dist/esm/utils/catchInfiniteLoop.js +32 -0
- package/dist/esm/utils/isDev.js +2 -0
- package/dist/esm/utils/makePublicCopy.d.ts +3 -0
- package/dist/esm/utils/makePublicCopy.js +30 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,72 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
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
|
-
})();
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
35
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
6
|
exports.build = build;
|
|
37
7
|
const prepareViteApiCall_js_1 = require("./prepareViteApiCall.js");
|
|
38
8
|
const vite_1 = require("vite");
|
|
39
|
-
const
|
|
9
|
+
const assert_1 = __importDefault(require("assert"));
|
|
10
|
+
const context_js_1 = require("../cli/context.js");
|
|
11
|
+
const context_js_2 = require("../prerender/context.js");
|
|
40
12
|
/**
|
|
41
13
|
* Programmatically trigger `$ vike build`
|
|
42
14
|
*
|
|
43
15
|
* https://vike.dev/api#build
|
|
44
16
|
*/
|
|
45
17
|
async function build(options = {}) {
|
|
46
|
-
const { viteConfigEnhanced
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
rollupOutputClient: outputClient,
|
|
61
|
-
rollupOutputServer: outputServer
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function setSSR(viteConfig) {
|
|
18
|
+
const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options.viteConfig, 'build');
|
|
19
|
+
// Pass it to autoFullBuild()
|
|
20
|
+
if (viteConfigEnhanced)
|
|
21
|
+
viteConfigEnhanced._viteConfigEnhanced = viteConfigEnhanced;
|
|
22
|
+
// 1. Build client-side
|
|
23
|
+
// 2. Build server-side
|
|
24
|
+
// > See: https://github.com/vikejs/vike/blob/c6c7533a56b3a16fc43ed644fc5c10c02d0ff375/vike/node/plugin/plugins/autoFullBuild.ts#L90
|
|
25
|
+
// 3. Pre-render (if enabled)
|
|
26
|
+
// > See: https://github.com/vikejs/vike/blob/c6c7533a56b3a16fc43ed644fc5c10c02d0ff375/vike/node/plugin/plugins/autoFullBuild.ts#L98
|
|
27
|
+
// > We purposely don't start the pre-rendering in this `build()` function but in a Rollup hook instead.
|
|
28
|
+
// > Rationale: https://github.com/vikejs/vike/issues/2123
|
|
29
|
+
await (0, vite_1.build)(viteConfigEnhanced);
|
|
30
|
+
// When using the Vike CLI with pre-rendering the process is forcefully exited at the end of the buildVite() call above
|
|
31
|
+
(0, assert_1.default)(!((0, context_js_1.isVikeCli)() && (0, context_js_2.isPrerendering)()));
|
|
65
32
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
ssr: true
|
|
70
|
-
}
|
|
33
|
+
/* We don't return `viteConfig` because `viteConfigEnhanced` is `InlineConfig` not `ResolvedConfig`
|
|
34
|
+
viteConfig: viteConfigEnhanced,
|
|
35
|
+
*/
|
|
71
36
|
};
|
|
72
37
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setOperation = setOperation;
|
|
4
|
-
exports.clearOperation = clearOperation;
|
|
5
3
|
exports.isVikeCliOrApi = isVikeCliOrApi;
|
|
4
|
+
exports.setContextApiOperation = setContextApiOperation;
|
|
5
|
+
exports.clearContextApiOperation = clearContextApiOperation;
|
|
6
6
|
const utils_js_1 = require("./utils.js");
|
|
7
|
-
const globalObject = (0, utils_js_1.getGlobalObject)('context.ts', {
|
|
8
|
-
|
|
9
|
-
});
|
|
10
|
-
function getOperation() {
|
|
7
|
+
const globalObject = (0, utils_js_1.getGlobalObject)('api/context.ts', {});
|
|
8
|
+
function getApiOperation() {
|
|
11
9
|
(0, utils_js_1.assert)(globalObject.apiOperation);
|
|
12
10
|
return globalObject.apiOperation;
|
|
13
11
|
}
|
|
@@ -15,10 +13,10 @@ function isVikeCliOrApi() {
|
|
|
15
13
|
// The CLI uses the API
|
|
16
14
|
return !!globalObject.apiOperation;
|
|
17
15
|
}
|
|
18
|
-
function
|
|
16
|
+
function setContextApiOperation(operation) {
|
|
19
17
|
(0, utils_js_1.assert)(!globalObject.apiOperation);
|
|
20
18
|
globalObject.apiOperation = operation;
|
|
21
19
|
}
|
|
22
|
-
function
|
|
20
|
+
function clearContextApiOperation() {
|
|
23
21
|
globalObject.apiOperation = undefined;
|
|
24
22
|
}
|
|
@@ -51,31 +51,30 @@ const globalContext_js_1 = require("../runtime/globalContext.js");
|
|
|
51
51
|
const globalObject = (0, utils_js_1.getGlobalObject)('prepareViteApiCall.ts', {});
|
|
52
52
|
async function prepareViteApiCall(viteConfig, operation) {
|
|
53
53
|
clear();
|
|
54
|
-
(0, context_js_1.
|
|
54
|
+
(0, context_js_1.setContextApiOperation)(operation);
|
|
55
55
|
return enhanceViteConfig(viteConfig, operation);
|
|
56
56
|
}
|
|
57
57
|
// For subsequent API calls, e.g. calling prerender() after build()
|
|
58
58
|
function clear() {
|
|
59
|
-
(0, context_js_1.
|
|
59
|
+
(0, context_js_1.clearContextApiOperation)();
|
|
60
60
|
(0, globalContext_js_1.clearGlobalContext)();
|
|
61
61
|
}
|
|
62
62
|
async function enhanceViteConfig(viteConfig, operation) {
|
|
63
63
|
const viteInfo = await getInfoFromVite(viteConfig, operation);
|
|
64
64
|
await assertViteRoot2(viteInfo.root, viteInfo.viteConfigEnhanced, operation);
|
|
65
65
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig2)(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
|
|
66
|
-
const viteConfigEnhanced =
|
|
66
|
+
const viteConfigEnhanced = addViteSettingsSetByVikeConfig(viteInfo.viteConfigEnhanced, vikeConfig);
|
|
67
67
|
return {
|
|
68
|
-
viteConfigEnhanced
|
|
69
|
-
vikeConfigGlobal: vikeConfig.vikeConfigGlobal
|
|
68
|
+
viteConfigEnhanced
|
|
70
69
|
};
|
|
71
70
|
}
|
|
72
|
-
function
|
|
71
|
+
function addViteSettingsSetByVikeConfig(viteConfigEnhanced, vikeConfig) {
|
|
73
72
|
const viteConfigs = vikeConfig.global.from.configsCumulative.vite;
|
|
74
73
|
if (!viteConfigs)
|
|
75
74
|
return viteConfigEnhanced;
|
|
76
75
|
viteConfigs.values.forEach((v) => {
|
|
77
76
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(v.value), `${v.definedAt} should be an object`);
|
|
78
|
-
viteConfigEnhanced = (0, vite_1.mergeConfig)(
|
|
77
|
+
viteConfigEnhanced = (0, vite_1.mergeConfig)(viteConfigEnhanced ?? {}, v.value);
|
|
79
78
|
});
|
|
80
79
|
return viteConfigEnhanced;
|
|
81
80
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isVikeCli = isVikeCli;
|
|
4
|
+
exports.setContextCliCommand = setContextCliCommand;
|
|
5
|
+
const utils_js_1 = require("./utils.js");
|
|
6
|
+
const globalObject = (0, utils_js_1.getGlobalObject)('cli/context.ts', {});
|
|
7
|
+
function getCliCommand() {
|
|
8
|
+
return globalObject.cliCommand;
|
|
9
|
+
}
|
|
10
|
+
function isVikeCli() {
|
|
11
|
+
return !!globalObject.cliCommand;
|
|
12
|
+
}
|
|
13
|
+
function setContextCliCommand(command) {
|
|
14
|
+
(0, utils_js_1.assert)(!globalObject.cliCommand);
|
|
15
|
+
globalObject.cliCommand = command;
|
|
16
|
+
}
|
|
@@ -40,9 +40,11 @@ const utils_js_1 = require("./utils.js");
|
|
|
40
40
|
const index_js_1 = require("../api/index.js");
|
|
41
41
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
42
42
|
const parseCli_js_1 = require("./parseCli.js");
|
|
43
|
+
const context_js_1 = require("./context.js");
|
|
43
44
|
cli();
|
|
44
45
|
async function cli() {
|
|
45
46
|
const { command } = (0, parseCli_js_1.parseCli)();
|
|
47
|
+
(0, context_js_1.setContextCliCommand)(command);
|
|
46
48
|
if (command === 'dev') {
|
|
47
49
|
await cmdDev();
|
|
48
50
|
}
|
|
@@ -21,3 +21,4 @@ const onLoad_js_1 = require("./onLoad.js");
|
|
|
21
21
|
__exportStar(require("../../utils/assert.js"), exports);
|
|
22
22
|
__exportStar(require("../../utils/projectInfo.js"), exports);
|
|
23
23
|
__exportStar(require("../../utils/includes.js"), exports);
|
|
24
|
+
__exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
@@ -8,12 +8,14 @@ exports.autoFullBuild = autoFullBuild;
|
|
|
8
8
|
const vite_1 = require("vite");
|
|
9
9
|
const utils_js_1 = require("../utils.js");
|
|
10
10
|
const runPrerender_js_1 = require("../../prerender/runPrerender.js");
|
|
11
|
-
const
|
|
11
|
+
const context_js_1 = require("../../prerender/context.js");
|
|
12
12
|
const isViteCliCall_js_1 = require("../shared/isViteCliCall.js");
|
|
13
13
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
14
14
|
const logErrorHint_js_1 = require("../../runtime/renderPage/logErrorHint.js");
|
|
15
15
|
const buildConfig_js_1 = require("./buildConfig.js");
|
|
16
16
|
const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
|
|
17
|
+
const context_js_2 = require("../../api/context.js");
|
|
18
|
+
const context_js_3 = require("../../cli/context.js");
|
|
17
19
|
let forceExit = false;
|
|
18
20
|
function autoFullBuild() {
|
|
19
21
|
let config;
|
|
@@ -74,33 +76,43 @@ async function triggerFullBuild(config, vikeConfigGlobal, bundle) {
|
|
|
74
76
|
if (!bundle[buildConfig_js_1.manifestTempFile])
|
|
75
77
|
return;
|
|
76
78
|
const configFromCli = !(0, isViteCliCall_js_1.isViteCliCall)() ? null : (0, isViteCliCall_js_1.getViteConfigFromCli)();
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
await (0, vite_1.build)({
|
|
87
|
-
...configInline,
|
|
79
|
+
let configInline;
|
|
80
|
+
if (config._viteConfigEnhanced) {
|
|
81
|
+
configInline = config._viteConfigEnhanced;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
configInline = {
|
|
85
|
+
...configFromCli,
|
|
86
|
+
configFile: configFromCli?.configFile || config.configFile,
|
|
87
|
+
root: config.root,
|
|
88
88
|
build: {
|
|
89
|
-
...
|
|
90
|
-
ssr: true
|
|
89
|
+
...configFromCli?.build
|
|
91
90
|
}
|
|
92
|
-
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
await (0, vite_1.build)(setSSR(configInline));
|
|
93
95
|
}
|
|
94
96
|
catch (err) {
|
|
95
97
|
console.error(err);
|
|
96
98
|
(0, logErrorHint_js_1.logErrorHint)(err);
|
|
97
99
|
process.exit(1);
|
|
98
100
|
}
|
|
99
|
-
if ((0,
|
|
100
|
-
await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline);
|
|
101
|
-
|
|
101
|
+
if ((0, context_js_1.isPrerenderAutoRunEnabled)(vikeConfigGlobal)) {
|
|
102
|
+
const { prerenderContextPublic } = await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline);
|
|
103
|
+
config.vike.prerenderContext = prerenderContextPublic;
|
|
104
|
+
forceExit = (0, context_js_3.isVikeCli)() || (0, isViteCliCall_js_1.isViteCliCall)();
|
|
102
105
|
}
|
|
103
106
|
}
|
|
107
|
+
function setSSR(configInline) {
|
|
108
|
+
return {
|
|
109
|
+
...configInline,
|
|
110
|
+
build: {
|
|
111
|
+
...configInline.build,
|
|
112
|
+
ssr: true
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
104
116
|
function abortViteBuildSsr(vikeConfigGlobal) {
|
|
105
117
|
if (vikeConfigGlobal.disableAutoFullBuild !== true && (0, isViteCliCall_js_1.isViteCliCall)() && (0, isViteCliCall_js_1.getViteConfigFromCli)()?.build.ssr) {
|
|
106
118
|
(0, utils_js_1.assertWarning)(false, `The CLI call ${picocolors_1.default.cyan('$ vite build --ssr')} is superfluous since ${picocolors_1.default.cyan('$ vite build')} also builds the server-side. If you want two separate build steps then use https://vike.dev/disableAutoFullBuild or use Vite's ${picocolors_1.default.cyan('build()')} API.`, { onlyOnce: true });
|
|
@@ -110,7 +122,8 @@ function abortViteBuildSsr(vikeConfigGlobal) {
|
|
|
110
122
|
function isDisabled(vikeConfigGlobal) {
|
|
111
123
|
const { disableAutoFullBuild } = vikeConfigGlobal;
|
|
112
124
|
if (disableAutoFullBuild === null || disableAutoFullBuild === 'prerender') {
|
|
113
|
-
|
|
125
|
+
const isViteApi = !(0, isViteCliCall_js_1.isViteCliCall)() && !(0, context_js_2.isVikeCliOrApi)();
|
|
126
|
+
return isViteApi;
|
|
114
127
|
}
|
|
115
128
|
else {
|
|
116
129
|
return disableAutoFullBuild;
|
|
@@ -13,7 +13,7 @@ function baseUrls() {
|
|
|
13
13
|
const isDev = config._isDev;
|
|
14
14
|
(0, utils_js_1.assert)(typeof isDev === 'boolean');
|
|
15
15
|
const baseViteOriginal = config.base ?? '/__UNSET__'; // '/__UNSET__' because Vite resolves `_baseViteOriginal: null` to `undefined`
|
|
16
|
-
basesResolved = (0, resolveBase_js_1.resolveBase)(baseViteOriginal, config.
|
|
16
|
+
basesResolved = (0, resolveBase_js_1.resolveBase)(baseViteOriginal, config._vikeConfigGlobal.baseServer, config._vikeConfigGlobal.baseAssets);
|
|
17
17
|
// We cannot define these in configResolved() because Vite picks up the env variables before any configResolved() hook is called
|
|
18
18
|
process.env.BASE_SERVER = basesResolved.baseServer;
|
|
19
19
|
process.env.BASE_ASSETS = basesResolved.baseAssets;
|
|
@@ -16,7 +16,7 @@ const isViteCliCall_js_1 = require("../shared/isViteCliCall.js");
|
|
|
16
16
|
const context_js_1 = require("../../api/context.js");
|
|
17
17
|
const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
|
|
18
18
|
const prepareViteApiCall_js_1 = require("../../api/prepareViteApiCall.js");
|
|
19
|
-
const
|
|
19
|
+
const context_js_2 = require("../../prerender/context.js");
|
|
20
20
|
const pluginName = 'vike:commonConfig';
|
|
21
21
|
function commonConfig(vikeVitePluginOptions) {
|
|
22
22
|
return [
|
|
@@ -35,9 +35,11 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
35
35
|
_isDev: isDev,
|
|
36
36
|
_root: root,
|
|
37
37
|
_vikeVitePluginOptions: vikeVitePluginOptions,
|
|
38
|
-
vike: vikeConfig,
|
|
39
|
-
// TODO/
|
|
40
|
-
|
|
38
|
+
vike: { global: vikeConfig.global },
|
|
39
|
+
// TODO/now: remove
|
|
40
|
+
_vikeConfigGlobal: vikeConfig.vikeConfigGlobal,
|
|
41
|
+
// TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
|
|
42
|
+
configVikePromise: Promise.resolve({ prerender: !!vikeConfig.vikeConfigGlobal.prerender })
|
|
41
43
|
};
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -80,7 +82,7 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
80
82
|
// VITE_CONFIG
|
|
81
83
|
const configFromEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VITE_CONFIG');
|
|
82
84
|
if (configFromEnvVar)
|
|
83
|
-
configFromVike = (0, vite_1.mergeConfig)(
|
|
85
|
+
configFromVike = (0, vite_1.mergeConfig)(configFromVike, configFromEnvVar);
|
|
84
86
|
return configFromVike;
|
|
85
87
|
}
|
|
86
88
|
}
|
|
@@ -147,7 +149,7 @@ function assertVikeCliOrApi(config) {
|
|
|
147
149
|
onlyOnce: true
|
|
148
150
|
});
|
|
149
151
|
}
|
|
150
|
-
// TODO/v1-release: remove
|
|
152
|
+
// TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
|
|
151
153
|
function temp_supportOldInterface(config) {
|
|
152
154
|
if (!('vitePluginSsr' in config))
|
|
153
155
|
return;
|
|
@@ -155,14 +157,14 @@ function temp_supportOldInterface(config) {
|
|
|
155
157
|
if ((0, utils_js_1.hasProp)(config.vitePluginSsr, 'prerender', 'object')) {
|
|
156
158
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(config.vitePluginSsr.prerender, 'disableAutoRun', 'boolean'));
|
|
157
159
|
if (config.vitePluginSsr.prerender.disableAutoRun) {
|
|
158
|
-
(0,
|
|
160
|
+
(0, context_js_2.temp_disablePrerenderAutoRun)();
|
|
159
161
|
}
|
|
160
162
|
return;
|
|
161
163
|
}
|
|
162
164
|
if ((0, utils_js_1.hasProp)(config.vitePluginSsr, 'disableAutoFullBuild')) {
|
|
163
165
|
if (config.vitePluginSsr.disableAutoFullBuild) {
|
|
164
166
|
(0, utils_js_1.assert)(config.vitePluginSsr.disableAutoFullBuild === 'prerender');
|
|
165
|
-
(0,
|
|
167
|
+
(0, context_js_2.temp_disablePrerenderAutoRun)();
|
|
166
168
|
}
|
|
167
169
|
return;
|
|
168
170
|
}
|
|
@@ -28,12 +28,13 @@ function getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRout
|
|
|
28
28
|
const lines = [];
|
|
29
29
|
pageConfigs.forEach((pageConfig) => {
|
|
30
30
|
const { pageId, routeFilesystem, isErrorPage } = pageConfig;
|
|
31
|
-
const virtualFileIdPageConfigValuesAll = (0, virtualFilePageConfigValuesAll_js_1.getVirtualFileIdPageConfigValuesAll)(pageId, isForClientSide);
|
|
32
31
|
lines.push(` {`);
|
|
33
32
|
lines.push(` pageId: ${JSON.stringify(pageId)},`);
|
|
34
33
|
lines.push(` isErrorPage: ${JSON.stringify(isErrorPage)},`);
|
|
35
34
|
lines.push(` routeFilesystem: ${JSON.stringify(routeFilesystem)},`);
|
|
36
|
-
|
|
35
|
+
const virtualFileId = JSON.stringify((0, virtualFilePageConfigValuesAll_js_1.getVirtualFileIdPageConfigValuesAll)(pageId, isForClientSide));
|
|
36
|
+
const load = `() => ({ moduleId: ${virtualFileId}, moduleExports: import(${virtualFileId}) })`;
|
|
37
|
+
lines.push(` loadConfigValuesAll: ${load},`);
|
|
37
38
|
lines.push(` configValuesSerialized: {`);
|
|
38
39
|
lines.push(...(0, serializeConfigValues_js_1.serializeConfigValues)(pageConfig, importStatements, (configEnv) => (0, isRuntimeEnvMatch_js_1.isRuntimeEnvMatch)(configEnv, { isForClientSide, isClientRouting, isDev }), ' ', true));
|
|
39
40
|
lines.push(` },`);
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isPrerenderAutoRunEnabled = isPrerenderAutoRunEnabled;
|
|
4
4
|
exports.temp_disablePrerenderAutoRun = temp_disablePrerenderAutoRun;
|
|
5
|
+
exports.isPrerendering = isPrerendering;
|
|
6
|
+
exports.setContextIsPrerendering = setContextIsPrerendering;
|
|
5
7
|
const getGlobalObject_js_1 = require("../../utils/getGlobalObject.js");
|
|
6
|
-
const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('
|
|
8
|
+
const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('prerender/context.ts', {});
|
|
7
9
|
function isPrerenderAutoRunEnabled(vikeConfigGlobal) {
|
|
8
10
|
return (vikeConfigGlobal.prerender &&
|
|
9
11
|
!vikeConfigGlobal.prerender.disableAutoRun &&
|
|
@@ -14,3 +16,9 @@ function isPrerenderAutoRunEnabled(vikeConfigGlobal) {
|
|
|
14
16
|
function temp_disablePrerenderAutoRun() {
|
|
15
17
|
globalObject.isDisabled = true;
|
|
16
18
|
}
|
|
19
|
+
function isPrerendering() {
|
|
20
|
+
return !!globalObject.isPrerendering;
|
|
21
|
+
}
|
|
22
|
+
function setContextIsPrerendering() {
|
|
23
|
+
globalObject.isPrerendering = true;
|
|
24
|
+
}
|
|
@@ -65,6 +65,7 @@ const logErrorHint_js_1 = require("../runtime/renderPage/logErrorHint.js");
|
|
|
65
65
|
const executeHook_js_1 = require("../../shared/hooks/executeHook.js");
|
|
66
66
|
const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
|
|
67
67
|
const prepareViteApiCall_js_1 = require("../api/prepareViteApiCall.js");
|
|
68
|
+
const context_js_1 = require("./context.js");
|
|
68
69
|
async function runPrerenderFromAPI(options = {}) {
|
|
69
70
|
return await runPrerender(options, 'prerender()');
|
|
70
71
|
// - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
|
|
@@ -84,16 +85,20 @@ async function runPrerenderFromCLIPrerenderCommand() {
|
|
|
84
85
|
runPrerender_forceExit();
|
|
85
86
|
}
|
|
86
87
|
async function runPrerenderFromAutoRun(viteConfig) {
|
|
88
|
+
let prerenderContextPublic;
|
|
87
89
|
try {
|
|
88
|
-
await runPrerender({ viteConfig });
|
|
90
|
+
const ret = await runPrerender({ viteConfig });
|
|
91
|
+
prerenderContextPublic = ret.prerenderContextPublic;
|
|
89
92
|
}
|
|
90
93
|
catch (err) {
|
|
91
94
|
console.error(err);
|
|
92
95
|
(0, logErrorHint_js_1.logErrorHint)(err);
|
|
93
96
|
process.exit(1);
|
|
94
97
|
}
|
|
98
|
+
return { prerenderContextPublic };
|
|
95
99
|
}
|
|
96
100
|
async function runPrerender(options = {}, standaloneTrigger) {
|
|
101
|
+
(0, context_js_1.setContextIsPrerendering)();
|
|
97
102
|
checkOutdatedOptions(options);
|
|
98
103
|
(0, utils_js_1.onSetupPrerender)();
|
|
99
104
|
(0, globalContext_js_1.setGlobalContext_isPrerendering)();
|
|
@@ -120,35 +125,36 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
120
125
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
121
126
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
122
127
|
globalContext.pageFilesAll.forEach(assertExportNames);
|
|
123
|
-
const prerenderContext = {
|
|
124
|
-
|
|
125
|
-
_urlHandler: null,
|
|
126
|
-
_noExtraDir: noExtraDir ?? false,
|
|
128
|
+
const prerenderContext = {
|
|
129
|
+
noExtraDir: noExtraDir ?? false,
|
|
127
130
|
pageContexts: [],
|
|
128
|
-
pageContextInit: options.pageContextInit ?? null
|
|
129
|
-
|
|
131
|
+
pageContextInit: options.pageContextInit ?? null,
|
|
132
|
+
prerenderedPageContexts: {},
|
|
133
|
+
output: []
|
|
134
|
+
};
|
|
130
135
|
const doNotPrerenderList = [];
|
|
131
136
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
|
|
132
137
|
await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
|
|
133
138
|
await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
|
|
134
139
|
await callOnPrerenderStartHook(prerenderContext);
|
|
135
|
-
const prerenderedPageContexts = {};
|
|
136
140
|
let prerenderedCount = 0;
|
|
141
|
+
// Write files as soon as pages finish rendering (instead of writing all files at once only after all pages have rendered).
|
|
137
142
|
const onComplete = async (htmlFile) => {
|
|
138
143
|
prerenderedCount++;
|
|
139
144
|
if (htmlFile.pageId) {
|
|
140
|
-
prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
|
|
145
|
+
prerenderContext.prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
|
|
141
146
|
}
|
|
142
|
-
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, logLevel);
|
|
147
|
+
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
|
|
143
148
|
};
|
|
144
149
|
await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
|
|
145
|
-
warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList);
|
|
146
|
-
await prerender404(
|
|
150
|
+
warnContradictoryNoPrerenderList(prerenderContext.prerenderedPageContexts, doNotPrerenderList);
|
|
151
|
+
await prerender404(prerenderContext, onComplete);
|
|
147
152
|
if (logLevel === 'info') {
|
|
148
153
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
149
154
|
}
|
|
150
|
-
warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial);
|
|
151
|
-
|
|
155
|
+
warnMissingPages(prerenderContext.prerenderedPageContexts, doNotPrerenderList, partial);
|
|
156
|
+
const prerenderContextPublic = makePublic(prerenderContext);
|
|
157
|
+
return { viteConfig, prerenderContextPublic };
|
|
152
158
|
}
|
|
153
159
|
async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
|
|
154
160
|
// V1 design
|
|
@@ -339,7 +345,7 @@ function createPageContext(urlOriginal, prerenderContext) {
|
|
|
339
345
|
const pageContext = {
|
|
340
346
|
_urlHandler: null,
|
|
341
347
|
_urlRewrite: null,
|
|
342
|
-
_noExtraDir: prerenderContext.
|
|
348
|
+
_noExtraDir: prerenderContext.noExtraDir,
|
|
343
349
|
_prerenderContext: prerenderContext
|
|
344
350
|
};
|
|
345
351
|
const pageContextInit = {
|
|
@@ -425,17 +431,20 @@ async function callOnPrerenderStartHook(prerenderContext) {
|
|
|
425
431
|
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
426
432
|
// Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
|
|
427
433
|
const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
|
|
428
|
-
let result = await (0, executeHook_js_1.executeHook)(() =>
|
|
429
|
-
|
|
434
|
+
let result = await (0, executeHook_js_1.executeHook)(() => {
|
|
435
|
+
const prerenderContextPublic = makePublic(prerenderContext);
|
|
430
436
|
// TODO/v1-release: remove warning
|
|
431
|
-
|
|
432
|
-
(
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
437
|
+
Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
|
|
438
|
+
get() {
|
|
439
|
+
(0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
|
|
440
|
+
showStackTrace: true,
|
|
441
|
+
onlyOnce: true
|
|
442
|
+
});
|
|
443
|
+
return prerenderContext.pageContexts;
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
return hookFn(prerenderContextPublic);
|
|
447
|
+
}, onPrerenderStartHook, null);
|
|
439
448
|
restoreEnumerable();
|
|
440
449
|
if (result === null || result === undefined) {
|
|
441
450
|
return;
|
|
@@ -542,7 +551,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
|
|
|
542
551
|
pageContext,
|
|
543
552
|
htmlString: documentHtml,
|
|
544
553
|
pageContextSerialized,
|
|
545
|
-
doNotCreateExtraDirectory: prerenderContext.
|
|
554
|
+
doNotCreateExtraDirectory: prerenderContext.noExtraDir,
|
|
546
555
|
pageId
|
|
547
556
|
});
|
|
548
557
|
})));
|
|
@@ -577,8 +586,8 @@ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial)
|
|
|
577
586
|
(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 });
|
|
578
587
|
});
|
|
579
588
|
}
|
|
580
|
-
async function prerender404(
|
|
581
|
-
if (!Object.values(prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
|
|
589
|
+
async function prerender404(prerenderContext, onComplete) {
|
|
590
|
+
if (!Object.values(prerenderContext.prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
|
|
582
591
|
let result;
|
|
583
592
|
try {
|
|
584
593
|
result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit);
|
|
@@ -601,22 +610,23 @@ async function prerender404(prerenderedPageContexts, prerenderContext, onComplet
|
|
|
601
610
|
}
|
|
602
611
|
}
|
|
603
612
|
}
|
|
604
|
-
async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, logLevel) {
|
|
613
|
+
async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, output, logLevel) {
|
|
605
614
|
(0, utils_js_1.assert)(urlOriginal.startsWith('/'));
|
|
606
615
|
const writeJobs = [
|
|
607
|
-
write(urlOriginal, pageContext, '
|
|
616
|
+
write(urlOriginal, pageContext, 'HTML', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel)
|
|
608
617
|
];
|
|
609
618
|
if (pageContextSerialized !== null) {
|
|
610
|
-
writeJobs.push(write(urlOriginal, pageContext, '
|
|
619
|
+
writeJobs.push(write(urlOriginal, pageContext, 'JSON', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel));
|
|
611
620
|
}
|
|
612
621
|
await Promise.all(writeJobs);
|
|
613
622
|
}
|
|
614
|
-
async function write(urlOriginal, pageContext,
|
|
623
|
+
async function write(urlOriginal, pageContext, fileType, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel) {
|
|
615
624
|
let fileUrl;
|
|
616
|
-
if (
|
|
625
|
+
if (fileType === 'HTML') {
|
|
617
626
|
fileUrl = (0, utils_js_1.urlToFile)(urlOriginal, '.html', doNotCreateExtraDirectory);
|
|
618
627
|
}
|
|
619
628
|
else {
|
|
629
|
+
(0, utils_js_1.assert)(fileType === 'JSON');
|
|
620
630
|
fileUrl = (0, getPageContextRequestUrl_js_1.getPageContextRequestUrl)(urlOriginal);
|
|
621
631
|
}
|
|
622
632
|
(0, utils_js_1.assertPosixPath)(fileUrl);
|
|
@@ -628,6 +638,12 @@ async function write(urlOriginal, pageContext, fileExtension, fileContent, root,
|
|
|
628
638
|
(0, utils_js_1.assertPosixPath)(outDirClient);
|
|
629
639
|
(0, utils_js_1.assertPosixPath)(filePathRelative);
|
|
630
640
|
const filePath = path_1.default.posix.join(outDirClient, filePathRelative);
|
|
641
|
+
output.push({
|
|
642
|
+
filePath,
|
|
643
|
+
fileType,
|
|
644
|
+
fileContent,
|
|
645
|
+
pageContext
|
|
646
|
+
});
|
|
631
647
|
if (onPagePrerender) {
|
|
632
648
|
const prerenderPageContext = {};
|
|
633
649
|
(0, utils_js_1.objectAssign)(prerenderPageContext, pageContext);
|
|
@@ -796,3 +812,9 @@ prerenderConfig) {
|
|
|
796
812
|
(0, utils_js_1.assertUsage)(false, `Setting ${picocolors_1.default.cyan(`prerender.${prop}`)} ${errMsg}`);
|
|
797
813
|
}
|
|
798
814
|
}
|
|
815
|
+
function makePublic(prerenderContext) {
|
|
816
|
+
const prerenderContextPublic = (0, utils_js_1.makePublicCopy)(prerenderContext, 'prerenderContext', [
|
|
817
|
+
'pageContexts'
|
|
818
|
+
]);
|
|
819
|
+
return prerenderContextPublic;
|
|
820
|
+
}
|
|
@@ -33,3 +33,4 @@ __exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
|
33
33
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
34
34
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
35
35
|
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|
|
36
|
+
__exportStar(require("../../utils/makePublicCopy.js"), exports);
|
|
@@ -53,28 +53,8 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
53
53
|
return makePublic(globalContext);
|
|
54
54
|
}
|
|
55
55
|
function makePublic(globalContext) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
assetsManifest: globalContext.assetsManifest
|
|
59
|
-
};
|
|
60
|
-
// Add internals (and prepended _ prefix to their keys)
|
|
61
|
-
{
|
|
62
|
-
const publicKeys = Object.keys(globalContextPublic);
|
|
63
|
-
(0, utils_js_1.objectKeys)(globalContext)
|
|
64
|
-
.filter((key) => !publicKeys.includes(key))
|
|
65
|
-
.forEach((key) => {
|
|
66
|
-
const keyPublic = `_${key}`;
|
|
67
|
-
Object.defineProperty(globalContextPublic, keyPublic, {
|
|
68
|
-
enumerable: true,
|
|
69
|
-
get() {
|
|
70
|
-
(0, utils_js_1.assertWarning)(false, `Using internal globalContext.${keyPublic} which is discouraged: it may break in any minor version update. Instead, reach out on GitHub and elaborate your use case.`, {
|
|
71
|
-
onlyOnce: true
|
|
72
|
-
});
|
|
73
|
-
return globalContext[key];
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
}
|
|
56
|
+
// TODO/now: add viteConfig and vikeConfig
|
|
57
|
+
const globalContextPublic = (0, utils_js_1.makePublicCopy)(globalContext, 'globalContext', ['assetsManifest']);
|
|
78
58
|
return globalContextPublic;
|
|
79
59
|
}
|
|
80
60
|
function setGlobalContext_viteDevServer(viteDevServer) {
|
|
@@ -76,3 +76,4 @@ __exportStar(require("../../utils/isVikeReactApp.js"), exports);
|
|
|
76
76
|
__exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
77
77
|
__exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
|
|
78
78
|
__exportStar(require("../../utils/genPromise.js"), exports);
|
|
79
|
+
__exportStar(require("../../utils/makePublicCopy.js"), exports);
|