vike 0.4.223-commit-81afe1f → 0.4.224-commit-f0d0f8a
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/plugin/plugins/commonConfig.js +1 -1
- package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
- package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
- package/dist/cjs/node/prerender/context.js +1 -1
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +8 -1
- package/dist/cjs/node/prerender/runPrerender.js +4 -6
- package/dist/cjs/node/runtime/html/stream.js +7 -0
- package/dist/cjs/node/runtime/renderPage/logErrorHint.js +6 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/debug.js +2 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
- package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
- package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
- package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
- package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
- package/dist/esm/node/prerender/context.js +1 -1
- package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +2 -1
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +8 -1
- package/dist/esm/node/prerender/runPrerender.js +4 -6
- package/dist/esm/node/runtime/globalContext.d.ts +1 -1
- package/dist/esm/node/runtime/html/stream.js +7 -0
- package/dist/esm/node/runtime/renderPage/logErrorHint.js +6 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/debug.js +2 -1
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +2 -1
|
@@ -44,7 +44,7 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
44
44
|
},
|
|
45
45
|
// TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
|
|
46
46
|
configVikePromise: Promise.resolve({
|
|
47
|
-
prerender: (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig).
|
|
47
|
+
prerender: (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig).isPrerenderingEnabled
|
|
48
48
|
})
|
|
49
49
|
};
|
|
50
50
|
}
|
|
@@ -84,7 +84,7 @@ function devConfig() {
|
|
|
84
84
|
if (config.server.middlewareMode || hasHonoViteDevServer)
|
|
85
85
|
return;
|
|
86
86
|
return () => {
|
|
87
|
-
(0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, false);
|
|
87
|
+
(0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, false, null);
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
},
|
|
@@ -11,6 +11,8 @@ const addSsrMiddleware_js_1 = require("../shared/addSsrMiddleware.js");
|
|
|
11
11
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
12
12
|
const index_js_1 = require("./devConfig/index.js");
|
|
13
13
|
const getOutDirs_js_1 = require("../shared/getOutDirs.js");
|
|
14
|
+
const sirv_1 = __importDefault(require("sirv"));
|
|
15
|
+
const resolvePrerenderConfig_js_1 = require("../../prerender/resolvePrerenderConfig.js");
|
|
14
16
|
function previewConfig() {
|
|
15
17
|
let config;
|
|
16
18
|
// let vikeConfig: VikeConfigObject
|
|
@@ -37,23 +39,26 @@ function previewConfig() {
|
|
|
37
39
|
*/
|
|
38
40
|
return () => {
|
|
39
41
|
assertDist();
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
// We cannot re-use Vite's static middleware: https://github.com/vitejs/vite/pull/14836#issuecomment-1788540300
|
|
43
|
+
addStaticAssetsMiddleware(server.middlewares);
|
|
44
|
+
const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(config._vikeConfigObject);
|
|
45
|
+
if (!prerenderConfigGlobal.isPrerenderingEnabledForAllPages) {
|
|
46
|
+
(0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, true, prerenderConfigGlobal.isPrerenderingEnabled);
|
|
43
47
|
}
|
|
44
|
-
/*/
|
|
45
|
-
(0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, true);
|
|
46
|
-
//*/
|
|
47
48
|
addStatic404Middleware(server.middlewares);
|
|
48
49
|
};
|
|
49
50
|
}
|
|
50
51
|
};
|
|
51
52
|
function assertDist() {
|
|
52
|
-
|
|
53
|
+
const { outDirRoot, outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(config);
|
|
53
54
|
[outDirRoot, outDirClient, outDirServer].forEach((outDirAny) => {
|
|
54
55
|
(0, utils_js_1.assertUsage)(fs_1.default.existsSync(outDirAny), `Cannot run ${picocolors_1.default.cyan('$ vike preview')}: your app isn't built (the build directory ${picocolors_1.default.cyan(outDirAny)} is missing). Make sure to run ${picocolors_1.default.cyan('$ vike build')} before running ${picocolors_1.default.cyan('$ vike preview')}.`);
|
|
55
56
|
});
|
|
56
57
|
}
|
|
58
|
+
function addStaticAssetsMiddleware(middlewares) {
|
|
59
|
+
const { outDirClient } = (0, getOutDirs_js_1.getOutDirs)(config);
|
|
60
|
+
middlewares.use((0, sirv_1.default)(outDirClient));
|
|
61
|
+
}
|
|
57
62
|
function addStatic404Middleware(middlewares) {
|
|
58
63
|
const { outDirClient } = (0, getOutDirs_js_1.getOutDirs)(config);
|
|
59
64
|
middlewares.use(config.base, (_, res, next) => {
|
|
@@ -7,7 +7,7 @@ exports.addSsrMiddleware = addSsrMiddleware;
|
|
|
7
7
|
const renderPage_js_1 = require("../../runtime/renderPage.js");
|
|
8
8
|
const utils_js_1 = require("../utils.js");
|
|
9
9
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
10
|
-
function addSsrMiddleware(middlewares, config, isPreview) {
|
|
10
|
+
function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled) {
|
|
11
11
|
middlewares.use(async (req, res, next) => {
|
|
12
12
|
if (res.headersSent)
|
|
13
13
|
return next();
|
|
@@ -42,6 +42,10 @@ function addSsrMiddleware(middlewares, config, isPreview) {
|
|
|
42
42
|
// - We purposely don't use next(err) to align behavior: we use our own/copied implementation of buildErrorMessage() regardless of whether the user uses Vite's dev middleware or Vite's standalone dev server
|
|
43
43
|
return next();
|
|
44
44
|
}
|
|
45
|
+
if (pageContext.httpResponse.statusCode === 404 && isPreview && isPrerenderingEnabled) {
|
|
46
|
+
// Serve /dist/client/404.html instead
|
|
47
|
+
return next();
|
|
48
|
+
}
|
|
45
49
|
const configHeaders = (isPreview && config?.preview?.headers) || config?.server?.headers;
|
|
46
50
|
if (configHeaders) {
|
|
47
51
|
for (const [name, value] of Object.entries(configHeaders))
|
|
@@ -9,7 +9,7 @@ const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
|
|
|
9
9
|
const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('prerender/context.ts', {});
|
|
10
10
|
function isPrerenderAutoRunEnabled(vikeConfig) {
|
|
11
11
|
const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
|
|
12
|
-
return (prerenderConfigGlobal.
|
|
12
|
+
return (prerenderConfigGlobal.isPrerenderingEnabled &&
|
|
13
13
|
!(prerenderConfigGlobal || {}).disableAutoRun &&
|
|
14
14
|
!globalObject.isDisabled &&
|
|
15
15
|
vikeConfig.global.config.disableAutoFullBuild !== 'prerender');
|
|
@@ -24,8 +24,14 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
|
24
24
|
false);
|
|
25
25
|
(0, utils_js_1.objectAssign)(prerenderConfigGlobal, {
|
|
26
26
|
defaultLocalValue,
|
|
27
|
-
|
|
27
|
+
isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
|
|
28
|
+
vikeConfig.pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
|
|
29
|
+
isPrerenderingEnabled: vikeConfig.pageConfigs.length > 0 &&
|
|
30
|
+
vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
|
|
28
31
|
});
|
|
32
|
+
// TODO/next-major remove
|
|
33
|
+
if (vikeConfig.pageConfigs.length === 0 && defaultLocalValue)
|
|
34
|
+
prerenderConfigGlobal.isPrerenderingEnabled = true;
|
|
29
35
|
return prerenderConfigGlobal;
|
|
30
36
|
}
|
|
31
37
|
function resolvePrerenderConfigLocal(pageConfig) {
|
|
@@ -35,6 +41,7 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
35
41
|
const values = configValue.value;
|
|
36
42
|
(0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
|
|
37
43
|
const value = values[0];
|
|
44
|
+
// TODO/now I believe this assert() can fail
|
|
38
45
|
(0, utils_js_1.assert)(typeof value === 'boolean');
|
|
39
46
|
(0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
|
|
40
47
|
const prerenderConfigLocal = { value };
|
|
@@ -122,13 +122,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
122
122
|
const { root } = viteConfig;
|
|
123
123
|
const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
|
|
124
124
|
validatePrerenderConfig(prerenderConfigGlobal);
|
|
125
|
-
const { partial, noExtraDir, parallel, defaultLocalValue,
|
|
126
|
-
if (!
|
|
125
|
+
const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
|
|
126
|
+
if (!isPrerenderingEnabled) {
|
|
127
127
|
(0, utils_js_1.assert)(standaloneTrigger);
|
|
128
|
-
// TODO/now: make it assertUsage() and remove dist/server/entry.mjs
|
|
129
|
-
(0, utils_js_1.assertWarning)(
|
|
130
|
-
onlyOnce: true
|
|
131
|
-
});
|
|
128
|
+
// TODO/now: make it assertUsage() and remove dist/server/entry.mjs if pre-rendering is completely disabled
|
|
129
|
+
(0, utils_js_1.assertWarning)(false, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the ${picocolors_1.default.cyan('prerender')} setting (${picocolors_1.default.underline('https://vike.dev/prerender')}) to enable pre-rendering for at least one page.`, { onlyOnce: true });
|
|
132
130
|
}
|
|
133
131
|
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
134
132
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
@@ -164,6 +164,13 @@ function getStreamReadableWeb(htmlRender) {
|
|
|
164
164
|
if (isStreamReadableWeb(htmlRender)) {
|
|
165
165
|
return htmlRender;
|
|
166
166
|
}
|
|
167
|
+
if (isStreamPipeWeb(htmlRender)) {
|
|
168
|
+
const streamPipeWeb = getStreamPipeWeb(htmlRender);
|
|
169
|
+
(0, utils_js_1.assert)(streamPipeWeb);
|
|
170
|
+
const { readable, writable } = new TransformStream();
|
|
171
|
+
streamPipeWeb(writable);
|
|
172
|
+
return readable;
|
|
173
|
+
}
|
|
167
174
|
return null;
|
|
168
175
|
}
|
|
169
176
|
function pipeToStreamWritableWeb(htmlRender, writable) {
|
|
@@ -27,6 +27,10 @@ const errorsMisc = [
|
|
|
27
27
|
errMsg: 'assets.json',
|
|
28
28
|
link: 'https://vike.dev/getGlobalContext',
|
|
29
29
|
mustMentionNodeModules: false
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
errMsg: 'ERR_UNKNOWN_FILE_EXTENSION',
|
|
33
|
+
link: 'https://vike.dev/broken-npm-package#err-unknown-file-extension'
|
|
30
34
|
}
|
|
31
35
|
];
|
|
32
36
|
const reactInvalidEelement = 'https://vike.dev/broken-npm-package#react-invalid-component';
|
|
@@ -77,7 +81,8 @@ const errorsCjsEsm = [
|
|
|
77
81
|
{ errMsg: 'exports is not defined' },
|
|
78
82
|
{ errMsg: 'module is not defined' },
|
|
79
83
|
{ errMsg: 'not defined in ES' },
|
|
80
|
-
{ errMsg: "Unexpected token 'export'" }
|
|
84
|
+
{ errMsg: "Unexpected token 'export'" },
|
|
85
|
+
{ errMsg: 'Failed to resolve entry for package' }
|
|
81
86
|
];
|
|
82
87
|
function logErrorHint(error) {
|
|
83
88
|
/* Collect errors for ./logErrorHint.spec.ts
|
package/dist/cjs/utils/debug.js
CHANGED
|
@@ -16,6 +16,8 @@ const isArray_js_1 = require("./isArray.js");
|
|
|
16
16
|
// Avoid this to be loaded in the browser. For isomorphic code: instead of `import { createDebugger } from './utils.js'`, use `globalThis.createDebugger()`.
|
|
17
17
|
(0, assert_js_1.assert)(!(0, isBrowser_js_1.isBrowser)());
|
|
18
18
|
globalThis.__brillout_debug_createDebugger = createDebugger;
|
|
19
|
+
// We purposely read process.env.DEBUG early, in order to avoid users from the temptation to set process.env.DEBUG with JavaScript, since reading & writing process.env.DEBUG dynamically leads to inconsistencies: for example https://github.com/vikejs/vike/issues/2239
|
|
20
|
+
const DEBUG = getDEBUG() ?? '';
|
|
19
21
|
const flags = [
|
|
20
22
|
'vike:crawl',
|
|
21
23
|
'vike:error',
|
|
@@ -150,7 +152,6 @@ function assertFlagsActivated() {
|
|
|
150
152
|
});
|
|
151
153
|
}
|
|
152
154
|
function getFlagsActivated() {
|
|
153
|
-
const DEBUG = getDEBUG() ?? '';
|
|
154
155
|
const flagsActivated = DEBUG.match(flagRegex) ?? [];
|
|
155
156
|
const all = DEBUG.includes('vike:*');
|
|
156
157
|
return { flagsActivated, all };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { commonConfig };
|
|
2
2
|
export { getVikeConfigPublic };
|
|
3
|
+
export type { VikeConfigPublic };
|
|
3
4
|
import { type InlineConfig, type Plugin, type ResolvedConfig, type UserConfig } from 'vite';
|
|
4
5
|
import { type VikeConfigObject } from './importUserCode/v1-design/getVikeConfig.js';
|
|
5
6
|
import type { PrerenderContextPublic } from '../../prerender/runPrerender.js';
|
|
@@ -39,7 +39,7 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
39
39
|
},
|
|
40
40
|
// TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
|
|
41
41
|
configVikePromise: Promise.resolve({
|
|
42
|
-
prerender: resolvePrerenderConfigGlobal(vikeConfig).
|
|
42
|
+
prerender: resolvePrerenderConfigGlobal(vikeConfig).isPrerenderingEnabled
|
|
43
43
|
})
|
|
44
44
|
};
|
|
45
45
|
}
|
|
@@ -6,6 +6,8 @@ import { addSsrMiddleware } from '../shared/addSsrMiddleware.js';
|
|
|
6
6
|
import pc from '@brillout/picocolors';
|
|
7
7
|
import { logDockerHint } from './devConfig/index.js';
|
|
8
8
|
import { getOutDirs, resolveOutDir } from '../shared/getOutDirs.js';
|
|
9
|
+
import sirv from 'sirv';
|
|
10
|
+
import { resolvePrerenderConfigGlobal } from '../../prerender/resolvePrerenderConfig.js';
|
|
9
11
|
function previewConfig() {
|
|
10
12
|
let config;
|
|
11
13
|
// let vikeConfig: VikeConfigObject
|
|
@@ -32,23 +34,26 @@ function previewConfig() {
|
|
|
32
34
|
*/
|
|
33
35
|
return () => {
|
|
34
36
|
assertDist();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
// We cannot re-use Vite's static middleware: https://github.com/vitejs/vite/pull/14836#issuecomment-1788540300
|
|
38
|
+
addStaticAssetsMiddleware(server.middlewares);
|
|
39
|
+
const prerenderConfigGlobal = resolvePrerenderConfigGlobal(config._vikeConfigObject);
|
|
40
|
+
if (!prerenderConfigGlobal.isPrerenderingEnabledForAllPages) {
|
|
41
|
+
addSsrMiddleware(server.middlewares, config, true, prerenderConfigGlobal.isPrerenderingEnabled);
|
|
38
42
|
}
|
|
39
|
-
/*/
|
|
40
|
-
addSsrMiddleware(server.middlewares, config, true);
|
|
41
|
-
//*/
|
|
42
43
|
addStatic404Middleware(server.middlewares);
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
46
|
};
|
|
46
47
|
function assertDist() {
|
|
47
|
-
|
|
48
|
+
const { outDirRoot, outDirClient, outDirServer } = getOutDirs(config);
|
|
48
49
|
[outDirRoot, outDirClient, outDirServer].forEach((outDirAny) => {
|
|
49
50
|
assertUsage(fs.existsSync(outDirAny), `Cannot run ${pc.cyan('$ vike preview')}: your app isn't built (the build directory ${pc.cyan(outDirAny)} is missing). Make sure to run ${pc.cyan('$ vike build')} before running ${pc.cyan('$ vike preview')}.`);
|
|
50
51
|
});
|
|
51
52
|
}
|
|
53
|
+
function addStaticAssetsMiddleware(middlewares) {
|
|
54
|
+
const { outDirClient } = getOutDirs(config);
|
|
55
|
+
middlewares.use(sirv(outDirClient));
|
|
56
|
+
}
|
|
52
57
|
function addStatic404Middleware(middlewares) {
|
|
53
58
|
const { outDirClient } = getOutDirs(config);
|
|
54
59
|
middlewares.use(config.base, (_, res, next) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { addSsrMiddleware };
|
|
2
2
|
import type { ResolvedConfig, ViteDevServer } from 'vite';
|
|
3
3
|
type ConnectServer = ViteDevServer['middlewares'];
|
|
4
|
-
declare function addSsrMiddleware(middlewares: ConnectServer, config: ResolvedConfig, isPreview: boolean): void;
|
|
4
|
+
declare function addSsrMiddleware(middlewares: ConnectServer, config: ResolvedConfig, isPreview: boolean, isPrerenderingEnabled: boolean | null): void;
|
|
@@ -2,7 +2,7 @@ export { addSsrMiddleware };
|
|
|
2
2
|
import { renderPage } from '../../runtime/renderPage.js';
|
|
3
3
|
import { assertWarning } from '../utils.js';
|
|
4
4
|
import pc from '@brillout/picocolors';
|
|
5
|
-
function addSsrMiddleware(middlewares, config, isPreview) {
|
|
5
|
+
function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled) {
|
|
6
6
|
middlewares.use(async (req, res, next) => {
|
|
7
7
|
if (res.headersSent)
|
|
8
8
|
return next();
|
|
@@ -37,6 +37,10 @@ function addSsrMiddleware(middlewares, config, isPreview) {
|
|
|
37
37
|
// - We purposely don't use next(err) to align behavior: we use our own/copied implementation of buildErrorMessage() regardless of whether the user uses Vite's dev middleware or Vite's standalone dev server
|
|
38
38
|
return next();
|
|
39
39
|
}
|
|
40
|
+
if (pageContext.httpResponse.statusCode === 404 && isPreview && isPrerenderingEnabled) {
|
|
41
|
+
// Serve /dist/client/404.html instead
|
|
42
|
+
return next();
|
|
43
|
+
}
|
|
40
44
|
const configHeaders = (isPreview && config?.preview?.headers) || config?.server?.headers;
|
|
41
45
|
if (configHeaders) {
|
|
42
46
|
for (const [name, value] of Object.entries(configHeaders))
|
|
@@ -7,7 +7,7 @@ import { resolvePrerenderConfigGlobal } from './resolvePrerenderConfig.js';
|
|
|
7
7
|
const globalObject = getGlobalObject('prerender/context.ts', {});
|
|
8
8
|
function isPrerenderAutoRunEnabled(vikeConfig) {
|
|
9
9
|
const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
|
|
10
|
-
return (prerenderConfigGlobal.
|
|
10
|
+
return (prerenderConfigGlobal.isPrerenderingEnabled &&
|
|
11
11
|
!(prerenderConfigGlobal || {}).disableAutoRun &&
|
|
12
12
|
!globalObject.isDisabled &&
|
|
13
13
|
vikeConfig.global.config.disableAutoFullBuild !== 'prerender');
|
|
@@ -9,7 +9,8 @@ declare function resolvePrerenderConfigGlobal(vikeConfig: VikeConfigObject): {
|
|
|
9
9
|
disableAutoRun: boolean;
|
|
10
10
|
} & {
|
|
11
11
|
defaultLocalValue: boolean;
|
|
12
|
-
|
|
12
|
+
isPrerenderingEnabledForAllPages: boolean;
|
|
13
|
+
isPrerenderingEnabled: boolean;
|
|
13
14
|
};
|
|
14
15
|
declare function resolvePrerenderConfigLocal(pageConfig: PageConfigBuildTime): {
|
|
15
16
|
value: boolean;
|
|
@@ -22,8 +22,14 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
|
22
22
|
false);
|
|
23
23
|
objectAssign(prerenderConfigGlobal, {
|
|
24
24
|
defaultLocalValue,
|
|
25
|
-
|
|
25
|
+
isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
|
|
26
|
+
vikeConfig.pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
|
|
27
|
+
isPrerenderingEnabled: vikeConfig.pageConfigs.length > 0 &&
|
|
28
|
+
vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
|
|
26
29
|
});
|
|
30
|
+
// TODO/next-major remove
|
|
31
|
+
if (vikeConfig.pageConfigs.length === 0 && defaultLocalValue)
|
|
32
|
+
prerenderConfigGlobal.isPrerenderingEnabled = true;
|
|
27
33
|
return prerenderConfigGlobal;
|
|
28
34
|
}
|
|
29
35
|
function resolvePrerenderConfigLocal(pageConfig) {
|
|
@@ -33,6 +39,7 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
33
39
|
const values = configValue.value;
|
|
34
40
|
assert(isArray(values));
|
|
35
41
|
const value = values[0];
|
|
42
|
+
// TODO/now I believe this assert() can fail
|
|
36
43
|
assert(typeof value === 'boolean');
|
|
37
44
|
assert(isArray(configValue.definedAtData));
|
|
38
45
|
const prerenderConfigLocal = { value };
|
|
@@ -84,13 +84,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
84
84
|
const { root } = viteConfig;
|
|
85
85
|
const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
|
|
86
86
|
validatePrerenderConfig(prerenderConfigGlobal);
|
|
87
|
-
const { partial, noExtraDir, parallel, defaultLocalValue,
|
|
88
|
-
if (!
|
|
87
|
+
const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
|
|
88
|
+
if (!isPrerenderingEnabled) {
|
|
89
89
|
assert(standaloneTrigger);
|
|
90
|
-
// TODO/now: make it assertUsage() and remove dist/server/entry.mjs
|
|
91
|
-
assertWarning(
|
|
92
|
-
onlyOnce: true
|
|
93
|
-
});
|
|
90
|
+
// TODO/now: make it assertUsage() and remove dist/server/entry.mjs if pre-rendering is completely disabled
|
|
91
|
+
assertWarning(false, `You're executing ${pc.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the ${pc.cyan('prerender')} setting (${pc.underline('https://vike.dev/prerender')}) to enable pre-rendering for at least one page.`, { onlyOnce: true });
|
|
94
92
|
}
|
|
95
93
|
const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
|
|
96
94
|
await initGlobalContext_runPrerender();
|
|
@@ -75,7 +75,7 @@ declare function getUserFiles(): Promise<{
|
|
|
75
75
|
pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
76
76
|
onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
77
77
|
pages: PageConfigsUserFriendly;
|
|
78
|
-
config: import("../../
|
|
78
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
79
79
|
}>;
|
|
80
80
|
declare function setGlobalContext_buildEntry(buildEntry: unknown): Promise<void>;
|
|
81
81
|
type BuildInfo = {
|
|
@@ -159,6 +159,13 @@ function getStreamReadableWeb(htmlRender) {
|
|
|
159
159
|
if (isStreamReadableWeb(htmlRender)) {
|
|
160
160
|
return htmlRender;
|
|
161
161
|
}
|
|
162
|
+
if (isStreamPipeWeb(htmlRender)) {
|
|
163
|
+
const streamPipeWeb = getStreamPipeWeb(htmlRender);
|
|
164
|
+
assert(streamPipeWeb);
|
|
165
|
+
const { readable, writable } = new TransformStream();
|
|
166
|
+
streamPipeWeb(writable);
|
|
167
|
+
return readable;
|
|
168
|
+
}
|
|
162
169
|
return null;
|
|
163
170
|
}
|
|
164
171
|
function pipeToStreamWritableWeb(htmlRender, writable) {
|
|
@@ -23,6 +23,10 @@ const errorsMisc = [
|
|
|
23
23
|
errMsg: 'assets.json',
|
|
24
24
|
link: 'https://vike.dev/getGlobalContext',
|
|
25
25
|
mustMentionNodeModules: false
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
errMsg: 'ERR_UNKNOWN_FILE_EXTENSION',
|
|
29
|
+
link: 'https://vike.dev/broken-npm-package#err-unknown-file-extension'
|
|
26
30
|
}
|
|
27
31
|
];
|
|
28
32
|
const reactInvalidEelement = 'https://vike.dev/broken-npm-package#react-invalid-component';
|
|
@@ -73,7 +77,8 @@ const errorsCjsEsm = [
|
|
|
73
77
|
{ errMsg: 'exports is not defined' },
|
|
74
78
|
{ errMsg: 'module is not defined' },
|
|
75
79
|
{ errMsg: 'not defined in ES' },
|
|
76
|
-
{ errMsg: "Unexpected token 'export'" }
|
|
80
|
+
{ errMsg: "Unexpected token 'export'" },
|
|
81
|
+
{ errMsg: 'Failed to resolve entry for package' }
|
|
77
82
|
];
|
|
78
83
|
function logErrorHint(error) {
|
|
79
84
|
/* Collect errors for ./logErrorHint.spec.ts
|
|
@@ -62,7 +62,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
62
62
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
63
63
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
64
64
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
65
|
-
config: import("../../../
|
|
65
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
66
66
|
} & ({
|
|
67
67
|
isProduction: false;
|
|
68
68
|
isPrerendering: false;
|
|
@@ -148,7 +148,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
148
148
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
149
149
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
150
150
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
151
|
-
config: import("../../../
|
|
151
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
152
152
|
} & ({
|
|
153
153
|
isProduction: false;
|
|
154
154
|
isPrerendering: false;
|
|
@@ -235,7 +235,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
235
235
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
236
236
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
237
237
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
238
|
-
config: import("../../../
|
|
238
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
239
239
|
} & ({
|
|
240
240
|
isProduction: false;
|
|
241
241
|
isPrerendering: false;
|
|
@@ -321,7 +321,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
321
321
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
322
322
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
323
323
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
324
|
-
config: import("../../../
|
|
324
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
325
325
|
} & ({
|
|
326
326
|
isProduction: false;
|
|
327
327
|
isPrerendering: false;
|
|
@@ -416,7 +416,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
416
416
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
417
417
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
418
418
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
419
|
-
config: import("../../../
|
|
419
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
420
420
|
} & ({
|
|
421
421
|
isProduction: false;
|
|
422
422
|
isPrerendering: false;
|
|
@@ -8,9 +8,11 @@ export type { PageContextBuiltInServer } from '../shared/types.js';
|
|
|
8
8
|
export type { PageContextBuiltInClientWithClientRouting } from '../shared/types.js';
|
|
9
9
|
export type { PageContextBuiltInClientWithServerRouting } from '../shared/types.js';
|
|
10
10
|
export type { Config, ConfigMeta as Meta, ImportString, DataAsync, DataSync, GuardAsync, GuardSync, OnBeforePrerenderStartAsync, OnBeforePrerenderStartSync, OnBeforeRenderAsync, OnBeforeRenderSync, OnBeforeRouteAsync, OnBeforeRouteSync, OnHydrationEndAsync, OnHydrationEndSync, OnPageTransitionEndAsync, OnPageTransitionEndSync, OnPageTransitionStartAsync, OnPageTransitionStartSync, OnPrerenderStartAsync, OnPrerenderStartSync, OnRenderClientAsync, OnRenderClientSync, OnRenderHtmlAsync, OnRenderHtmlSync, RouteAsync, RouteSync, KeepScrollPosition } from '../shared/page-configs/Config.js';
|
|
11
|
+
export type { ConfigResolved } from '../shared/page-configs/Config/PageContextConfig.js';
|
|
11
12
|
export type { ConfigEnv } from '../shared/page-configs/PageConfig.js';
|
|
12
13
|
export type { ConfigDefinition, ConfigEffect } from '../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
|
|
13
14
|
export type { ConfigEntries } from '../shared/page-configs/getPageConfigUserFriendly.js';
|
|
15
|
+
export type { VikeConfigPublic as VikeConfig } from '../node/plugin/plugins/commonConfig.js';
|
|
14
16
|
export type { UrlPublic as Url } from '../utils/parseUrl.js';
|
|
15
17
|
export type { InjectFilterEntry } from '../node/runtime/html/injectAssets/getHtmlTags.js';
|
|
16
18
|
export { defineConfig } from './defineConfig.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.224-commit-f0d0f8a";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.
|
|
2
|
+
export const PROJECT_VERSION = '0.4.224-commit-f0d0f8a';
|
package/dist/esm/utils/debug.js
CHANGED
|
@@ -11,6 +11,8 @@ import { isArray } from './isArray.js';
|
|
|
11
11
|
// Avoid this to be loaded in the browser. For isomorphic code: instead of `import { createDebugger } from './utils.js'`, use `globalThis.createDebugger()`.
|
|
12
12
|
assert(!isBrowser());
|
|
13
13
|
globalThis.__brillout_debug_createDebugger = createDebugger;
|
|
14
|
+
// We purposely read process.env.DEBUG early, in order to avoid users from the temptation to set process.env.DEBUG with JavaScript, since reading & writing process.env.DEBUG dynamically leads to inconsistencies: for example https://github.com/vikejs/vike/issues/2239
|
|
15
|
+
const DEBUG = getDEBUG() ?? '';
|
|
14
16
|
const flags = [
|
|
15
17
|
'vike:crawl',
|
|
16
18
|
'vike:error',
|
|
@@ -145,7 +147,6 @@ function assertFlagsActivated() {
|
|
|
145
147
|
});
|
|
146
148
|
}
|
|
147
149
|
function getFlagsActivated() {
|
|
148
|
-
const DEBUG = getDEBUG() ?? '';
|
|
149
150
|
const flagsActivated = DEBUG.match(flagRegex) ?? [];
|
|
150
151
|
const all = DEBUG.includes('vike:*');
|
|
151
152
|
return { flagsActivated, all };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vike",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.224-commit-f0d0f8a",
|
|
4
4
|
"repository": "https://github.com/vikejs/vike",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": {
|
|
@@ -131,6 +131,7 @@
|
|
|
131
131
|
"json5": "^2.0.0",
|
|
132
132
|
"picomatch": "^4.0.2",
|
|
133
133
|
"semver": "^7.0.0",
|
|
134
|
+
"sirv": "^3.0.1",
|
|
134
135
|
"source-map-support": "^0.5.0",
|
|
135
136
|
"tinyglobby": "^0.2.10",
|
|
136
137
|
"vite": ">=5.1.0"
|