vike 0.4.145 → 0.4.146-commit-701e2e5
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/buildConfig.js +1 -1
- package/dist/cjs/node/plugin/plugins/config/index.js +3 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +5 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +18 -6
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +2 -2
- package/dist/cjs/node/prerender/runPrerender.js +8 -3
- package/dist/cjs/node/runtime/renderPage.js +2 -2
- package/dist/cjs/node/shared/getConfigVike.js +4 -1
- package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +8 -5
- package/dist/cjs/utils/parseUrl-extras.js +16 -7
- package/dist/cjs/utils/projectInfo.js +1 -1
- package/dist/esm/client/client-routing-runtime/history.js +9 -5
- package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
- package/dist/esm/node/plugin/plugins/config/index.js +4 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +6 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +18 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +3 -3
- package/dist/esm/node/prerender/runPrerender.js +8 -3
- package/dist/esm/node/runtime/renderPage.js +2 -2
- package/dist/esm/node/shared/getConfigVike.d.ts +2 -1
- package/dist/esm/node/shared/getConfigVike.js +4 -1
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +9 -3
- package/dist/esm/utils/parseUrl-extras.d.ts +1 -1
- package/dist/esm/utils/parseUrl-extras.js +16 -7
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/projectInfo.js +1 -1
- package/node/cli/bin-entry.js +1 -1
- package/package.json +1 -1
|
@@ -73,7 +73,7 @@ exports.buildConfig = buildConfig;
|
|
|
73
73
|
async function getEntries(config) {
|
|
74
74
|
const configVike = await (0, getConfigVike_js_1.getConfigVike)(config);
|
|
75
75
|
const pageFileEntries = await getPageFileEntries(config, configVike.includeAssetsImportedByServer); // TODO/v1-release: remove
|
|
76
|
-
const { pageConfigs } = await (0, getVikeConfig_js_1.getVikeConfig)(config
|
|
76
|
+
const { pageConfigs } = await (0, getVikeConfig_js_1.getVikeConfig)(config, false);
|
|
77
77
|
(0, utils_js_1.assertUsage)(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
|
|
78
78
|
if ((0, utils_js_1.viteIsSSR)(config)) {
|
|
79
79
|
const serverEntries = analyzeServerEntries(pageConfigs);
|
|
@@ -17,20 +17,20 @@ function resolveVikeConfig(vikeConfig) {
|
|
|
17
17
|
name: 'vike:resolveVikeConfig',
|
|
18
18
|
enforce: 'pre',
|
|
19
19
|
async configResolved(config) {
|
|
20
|
-
const promise =
|
|
20
|
+
const promise = getConfigVikPromise(vikeConfig, config);
|
|
21
21
|
config.configVikePromise = promise;
|
|
22
22
|
await promise;
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
exports.resolveVikeConfig = resolveVikeConfig;
|
|
27
|
-
async function
|
|
27
|
+
async function getConfigVikPromise(vikeConfig, config) {
|
|
28
28
|
const fromPluginOptions = (vikeConfig ?? {});
|
|
29
29
|
const fromViteConfig = (config.vike ?? {});
|
|
30
30
|
const fromStemPackages = await (0, findConfigVikeFromStemPackages_js_1.findConfigVikeFromStemPackages)(config.root);
|
|
31
31
|
const configs = [fromPluginOptions, ...fromStemPackages, fromViteConfig];
|
|
32
32
|
const extensions = (0, resolveExtensions_js_1.resolveExtensions)(configs, config);
|
|
33
|
-
const { globalVikeConfig: fromPlusConfigFile } = await (0, getVikeConfig_js_1.getVikeConfig)(config
|
|
33
|
+
const { globalVikeConfig: fromPlusConfigFile } = await (0, getVikeConfig_js_1.getVikeConfig)(config, (0, utils_js_1.isDev2)(config), false, extensions);
|
|
34
34
|
configs.push(fromPlusConfigFile);
|
|
35
35
|
(0, assertVikeConfig_js_1.assertVikeConfig)(fromPlusConfigFile, ({ prop, errMsg }) => {
|
|
36
36
|
// TODO: add config file path ?
|
|
@@ -8,7 +8,7 @@ const getConfigValueSourcesRelevant_js_1 = require("../../shared/getConfigValueS
|
|
|
8
8
|
const buildConfig_js_1 = require("../buildConfig.js");
|
|
9
9
|
const virtualFileImportUserCode_js_1 = require("../../../shared/virtual-files/virtualFileImportUserCode.js");
|
|
10
10
|
async function determineOptimizeDeps(config, configVike, isDev) {
|
|
11
|
-
const { pageConfigs } = await (0, getVikeConfig_js_1.getVikeConfig)(config
|
|
11
|
+
const { pageConfigs } = await (0, getVikeConfig_js_1.getVikeConfig)(config, isDev);
|
|
12
12
|
const { entries, include } = await getPageDeps(config, pageConfigs, isDev);
|
|
13
13
|
{
|
|
14
14
|
// This actually doesn't work: Vite's dep optimizer doesn't seem to be able to crawl virtual files.
|
|
@@ -146,7 +146,7 @@ export const pageFilesList = [];
|
|
|
146
146
|
export const neverLoaded = {};
|
|
147
147
|
export const isGeneratedFile = true;
|
|
148
148
|
|
|
149
|
-
${await (0, getVirtualFilePageConfigs_js_1.getVirtualFilePageConfigs)(
|
|
149
|
+
${await (0, getVirtualFilePageConfigs_js_1.getVirtualFilePageConfigs)(isForClientSide, isDev, id, isClientRouting, config)}
|
|
150
150
|
|
|
151
151
|
`;
|
|
152
152
|
fileTypes_js_1.fileTypes
|
|
@@ -52,7 +52,7 @@ function importUserCode() {
|
|
|
52
52
|
return undefined;
|
|
53
53
|
id = (0, utils_js_1.getVirtualFileId)(id);
|
|
54
54
|
if ((0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(id)) {
|
|
55
|
-
const code = await (0, getVirtualFilePageConfigValuesAll_js_1.getVirtualFilePageConfigValuesAll)(id,
|
|
55
|
+
const code = await (0, getVirtualFilePageConfigValuesAll_js_1.getVirtualFilePageConfigValuesAll)(id, isDev, config);
|
|
56
56
|
return code;
|
|
57
57
|
}
|
|
58
58
|
if ((0, virtualFileImportUserCode_js_1.isVirtualFileIdImportUserCode)(id)) {
|
|
@@ -19,6 +19,7 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
|
19
19
|
const helpers_js_1 = require("../../../../../shared/page-configs/helpers.js");
|
|
20
20
|
const assertExports_js_1 = require("../../../../../shared/page-configs/assertExports.js");
|
|
21
21
|
const getVirtualFilePageConfigs_js_1 = require("./getVirtualFilePageConfigs.js");
|
|
22
|
+
const getConfigVike_js_1 = require("../../../../shared/getConfigVike.js");
|
|
22
23
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
23
24
|
let devServerIsCorrupt = false;
|
|
24
25
|
let wasConfigInvalid = null;
|
|
@@ -64,9 +65,11 @@ async function handleReloadSideEffects() {
|
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
async function getVikeConfig(
|
|
68
|
+
async function getVikeConfig(config, isDev, tolerateInvalidConfig = false, extensions) {
|
|
69
|
+
const { outDirRoot } = (0, utils_js_1.getOutDirs)(config);
|
|
70
|
+
const userRootDir = config.root;
|
|
68
71
|
if (!vikeConfigPromise) {
|
|
69
|
-
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, extensions, tolerateInvalidConfig);
|
|
72
|
+
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, extensions ?? (await (0, getConfigVike_js_1.getConfigVike)(config)).extensions, tolerateInvalidConfig);
|
|
70
73
|
}
|
|
71
74
|
return await vikeConfigPromise;
|
|
72
75
|
}
|
package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js
CHANGED
|
@@ -10,7 +10,8 @@ const helpers_js_1 = require("../../../../../shared/page-configs/helpers.js");
|
|
|
10
10
|
const getConfigValueSourcesRelevant_js_1 = require("../../../shared/getConfigValueSourcesRelevant.js");
|
|
11
11
|
const isRuntimeEnvMatch_js_1 = require("./isRuntimeEnvMatch.js");
|
|
12
12
|
const serializeConfigValue_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValue.js");
|
|
13
|
-
|
|
13
|
+
const getConfigVike_js_1 = require("../../../../shared/getConfigVike.js");
|
|
14
|
+
async function getVirtualFilePageConfigValuesAll(id, isDev, config) {
|
|
14
15
|
const result = (0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(id);
|
|
15
16
|
(0, utils_js_1.assert)(result);
|
|
16
17
|
/* This assertion fails when using includeAssetsImportedByServer
|
|
@@ -20,9 +21,10 @@ async function getVirtualFilePageConfigValuesAll(id, userRootDir, outDirRoot, is
|
|
|
20
21
|
}
|
|
21
22
|
*/
|
|
22
23
|
const { pageId, isForClientSide } = result;
|
|
23
|
-
const { pageConfigs } = await (0, getVikeConfig_js_1.getVikeConfig)(
|
|
24
|
+
const { pageConfigs } = await (0, getVikeConfig_js_1.getVikeConfig)(config, isDev, true);
|
|
24
25
|
const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId);
|
|
25
26
|
(0, utils_js_1.assert)(pageConfig);
|
|
27
|
+
const configVike = await (0, getConfigVike_js_1.getConfigVike)(config);
|
|
26
28
|
const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId, configVike.includeAssetsImportedByServer, isDev);
|
|
27
29
|
(0, debug_js_1.debug)(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
|
|
28
30
|
return code;
|
|
@@ -14,15 +14,23 @@ const getVikeConfig_js_1 = require("./getVikeConfig.js");
|
|
|
14
14
|
const isRuntimeEnvMatch_js_1 = require("./isRuntimeEnvMatch.js");
|
|
15
15
|
const helpers_js_2 = require("../../../../../shared/page-configs/helpers.js");
|
|
16
16
|
const serializeConfigValue_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValue.js");
|
|
17
|
-
async function getVirtualFilePageConfigs(
|
|
18
|
-
const { pageConfigs, pageConfigGlobal } = await (0, getVikeConfig_js_1.getVikeConfig)(
|
|
19
|
-
return
|
|
17
|
+
async function getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, config) {
|
|
18
|
+
const { pageConfigs, pageConfigGlobal } = await (0, getVikeConfig_js_1.getVikeConfig)(config, isDev, true);
|
|
19
|
+
return getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting);
|
|
20
20
|
}
|
|
21
21
|
exports.getVirtualFilePageConfigs = getVirtualFilePageConfigs;
|
|
22
|
-
function
|
|
22
|
+
function getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting) {
|
|
23
23
|
const lines = [];
|
|
24
24
|
const importStatements = [];
|
|
25
25
|
const varCounterContainer = { varCounter: 0 };
|
|
26
|
+
lines.push(getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRouting, importStatements, varCounterContainer));
|
|
27
|
+
lines.push(getCodePageConfigGlobalSerialized(pageConfigGlobal, isForClientSide, isDev, importStatements, varCounterContainer));
|
|
28
|
+
const code = [...importStatements, ...lines].join('\n');
|
|
29
|
+
(0, debug_js_1.debug)(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
|
|
30
|
+
return code;
|
|
31
|
+
}
|
|
32
|
+
function getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRouting, importStatements, varCounterContainer) {
|
|
33
|
+
const lines = [];
|
|
26
34
|
lines.push('export const pageConfigsSerialized = [');
|
|
27
35
|
pageConfigs.forEach((pageConfig) => {
|
|
28
36
|
const { pageId, routeFilesystem, isErrorPage } = pageConfig;
|
|
@@ -76,6 +84,11 @@ function getContent(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, i
|
|
|
76
84
|
lines.push(` },`);
|
|
77
85
|
});
|
|
78
86
|
lines.push('];');
|
|
87
|
+
const code = lines.join('\n');
|
|
88
|
+
return code;
|
|
89
|
+
}
|
|
90
|
+
function getCodePageConfigGlobalSerialized(pageConfigGlobal, isForClientSide, isDev, importStatements, varCounterContainer) {
|
|
91
|
+
const lines = [];
|
|
79
92
|
lines.push('export const pageConfigGlobalSerialized = {');
|
|
80
93
|
/* Nothing (yet)
|
|
81
94
|
lines.push(` configValuesSerialized: {`)
|
|
@@ -102,8 +115,7 @@ function getContent(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, i
|
|
|
102
115
|
});
|
|
103
116
|
lines.push(` ],`);
|
|
104
117
|
lines.push('};');
|
|
105
|
-
const code =
|
|
106
|
-
(0, debug_js_1.debug)(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
|
|
118
|
+
const code = lines.join('\n');
|
|
107
119
|
return code;
|
|
108
120
|
}
|
|
109
121
|
function getConfigValueSerialized(value, configName, definedAt) {
|
|
@@ -232,11 +232,11 @@ function assertImportsAreReExported(fileImports, fileExports, filePathToShowToUs
|
|
|
232
232
|
const importStatements = (0, utils_js_1.unique)(fileImportsUnused.map((fi) => fi.importStatementCode));
|
|
233
233
|
const importNamesUnused = fileImportsUnused.map((fi) => picocolors_1.default.cyan(fi.importLocalName)).join(', ');
|
|
234
234
|
const singular = fileImportsUnused.length === 1;
|
|
235
|
-
(0, utils_js_1.
|
|
235
|
+
(0, utils_js_1.assertWarning)(fileImportsUnused.length === 0, [
|
|
236
236
|
`${filePathToShowToUser} imports the following:`,
|
|
237
237
|
...importStatements.map((s) => picocolors_1.default.cyan(` ${s}`)),
|
|
238
238
|
`But the import${singular ? '' : 's'} ${importNamesUnused} ${singular ? "isn't" : "aren't"} re-exported at ${picocolors_1.default.cyan('export default { ... }')} and therefore ${singular ? 'has' : 'have'} no effect, see explanation at https://vike.dev/header-file`
|
|
239
|
-
].join('\n'));
|
|
239
|
+
].join('\n'), { onlyOnce: true });
|
|
240
240
|
}
|
|
241
241
|
function getExportedStrings(obj) {
|
|
242
242
|
const exportedStrings = [];
|
|
@@ -50,6 +50,7 @@ const abort_js_1 = require("../../shared/route/abort.js");
|
|
|
50
50
|
const loadPageFilesServerSide_js_1 = require("../runtime/renderPage/loadPageFilesServerSide.js");
|
|
51
51
|
const getHook_js_1 = require("../../shared/hooks/getHook.js");
|
|
52
52
|
const noRouteMatch_js_1 = require("../../shared/route/noRouteMatch.js");
|
|
53
|
+
const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js");
|
|
53
54
|
async function prerenderFromAPI(options = {}) {
|
|
54
55
|
await runPrerender(options, 'prerender()');
|
|
55
56
|
}
|
|
@@ -96,7 +97,8 @@ async function runPrerender(options, manuallyTriggered) {
|
|
|
96
97
|
pageContextInit: options.pageContextInit ?? null
|
|
97
98
|
});
|
|
98
99
|
const doNotPrerenderList = [];
|
|
99
|
-
await
|
|
100
|
+
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig, false);
|
|
101
|
+
await collectDoNoPrerenderList(renderContext, vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
|
|
100
102
|
await callOnBeforePrerenderStartHooks(prerenderContext, renderContext, concurrencyLimit);
|
|
101
103
|
await handlePagesWithStaticRoutes(prerenderContext, renderContext, doNotPrerenderList, concurrencyLimit);
|
|
102
104
|
await callOnPrerenderStartHook(prerenderContext, renderContext);
|
|
@@ -111,8 +113,9 @@ async function runPrerender(options, manuallyTriggered) {
|
|
|
111
113
|
await Promise.all(htmlFiles.map((htmlFile) => writeHtmlFile(htmlFile, root, outDirClient, concurrencyLimit, options.onPagePrerender, logLevel)));
|
|
112
114
|
warnMissingPages(prerenderPageIds, doNotPrerenderList, renderContext, partial);
|
|
113
115
|
}
|
|
114
|
-
async function collectDoNoPrerenderList(renderContext, doNotPrerenderList, concurrencyLimit) {
|
|
115
|
-
|
|
116
|
+
async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerenderList, concurrencyLimit) {
|
|
117
|
+
// V1 design
|
|
118
|
+
pageConfigs.forEach((pageConfig) => {
|
|
116
119
|
const configName = 'prerender';
|
|
117
120
|
const configValue = (0, helpers_js_1.getConfigValue)(pageConfig, configName, 'boolean');
|
|
118
121
|
if (configValue?.value === false) {
|
|
@@ -126,6 +129,8 @@ async function collectDoNoPrerenderList(renderContext, doNotPrerenderList, concu
|
|
|
126
129
|
});
|
|
127
130
|
}
|
|
128
131
|
});
|
|
132
|
+
// Old design
|
|
133
|
+
// TODO/v1-release: remove
|
|
129
134
|
await Promise.all(renderContext.pageFilesAll
|
|
130
135
|
.filter((p) => {
|
|
131
136
|
assertExportNames(p);
|
|
@@ -318,11 +318,11 @@ function skipRequest(urlOriginal) {
|
|
|
318
318
|
isViteClientRequest);
|
|
319
319
|
}
|
|
320
320
|
function normalizeUrl(pageContextInit, httpRequestId) {
|
|
321
|
-
const { trailingSlash, disableUrlNormalization } = (0, globalContext_js_1.getGlobalContext)();
|
|
321
|
+
const { trailingSlash, disableUrlNormalization, baseServer } = (0, globalContext_js_1.getGlobalContext)();
|
|
322
322
|
if (disableUrlNormalization)
|
|
323
323
|
return null;
|
|
324
324
|
const { urlOriginal } = pageContextInit;
|
|
325
|
-
const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash);
|
|
325
|
+
const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash, baseServer);
|
|
326
326
|
if (!urlNormalized)
|
|
327
327
|
return null;
|
|
328
328
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getConfigVike = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
4
5
|
async function getConfigVike(config) {
|
|
5
|
-
const
|
|
6
|
+
const { configVikePromise } = config;
|
|
7
|
+
(0, utils_js_1.assert)(configVikePromise);
|
|
8
|
+
const configVike = await configVikePromise;
|
|
6
9
|
return configVike;
|
|
7
10
|
}
|
|
8
11
|
exports.getConfigVike = getConfigVike;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.parseConfigValuesImported = void 0;
|
|
7
4
|
const utils_js_1 = require("../../utils.js");
|
|
8
5
|
const assertExports_js_1 = require("../assertExports.js");
|
|
9
|
-
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
10
6
|
function parseConfigValuesImported(configValuesImported) {
|
|
11
7
|
const configValues = {};
|
|
12
8
|
const addConfigValue = (configName, value, importPath, exportName) => {
|
|
@@ -50,5 +46,12 @@ function parseConfigValuesImported(configValuesImported) {
|
|
|
50
46
|
exports.parseConfigValuesImported = parseConfigValuesImported;
|
|
51
47
|
function assertIsNotNull(configValue, configName, importPath) {
|
|
52
48
|
(0, utils_js_1.assert)(!importPath.includes('+config.'));
|
|
53
|
-
|
|
49
|
+
/* Re-use this for:
|
|
50
|
+
* - upcoming config.requestPageContextOnNavigation
|
|
51
|
+
* - for cumulative values in the future: we don't need this for now because, currently, cumulative values are never imported.
|
|
52
|
+
assertUsage(
|
|
53
|
+
configValue !== null,
|
|
54
|
+
`Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.h.js file instead of ${importPath}`
|
|
55
|
+
)
|
|
56
|
+
*/
|
|
54
57
|
}
|
|
@@ -52,15 +52,20 @@ function isBaseAssets(base) {
|
|
|
52
52
|
return base.startsWith('/') || base.startsWith('http://') || base.startsWith('https://');
|
|
53
53
|
}
|
|
54
54
|
exports.isBaseAssets = isBaseAssets;
|
|
55
|
-
function normalizeUrlPathname(urlOriginal, trailingSlash) {
|
|
55
|
+
function normalizeUrlPathname(urlOriginal, trailingSlash, baseServer) {
|
|
56
56
|
const urlNormalized = modifyUrlPathname(urlOriginal, (urlPathname) => {
|
|
57
57
|
(0, assert_js_1.assert)(urlPathname.startsWith('/'));
|
|
58
|
-
let urlPathnameNormalized =
|
|
59
|
-
if (urlPathnameNormalized
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
let urlPathnameNormalized = normalize(urlPathname);
|
|
59
|
+
if (urlPathnameNormalized === '/') {
|
|
60
|
+
return urlPathnameNormalized;
|
|
61
|
+
}
|
|
62
|
+
// If the Base URL has a trailing slash, then Vite (as of vite@5.0.0-beta.19) expects the root URL to also have a trailing slash, see https://github.com/vikejs/vike/issues/1258#issuecomment-1812226260
|
|
63
|
+
if (baseServer.endsWith('/') && baseServer !== '/' && normalize(baseServer) === urlPathnameNormalized) {
|
|
64
|
+
trailingSlash = true;
|
|
65
|
+
}
|
|
66
|
+
(0, assert_js_1.assert)(!urlPathnameNormalized.endsWith('/'));
|
|
67
|
+
if (trailingSlash) {
|
|
68
|
+
urlPathnameNormalized = urlPathnameNormalized + '/';
|
|
64
69
|
}
|
|
65
70
|
return urlPathnameNormalized;
|
|
66
71
|
});
|
|
@@ -69,6 +74,10 @@ function normalizeUrlPathname(urlOriginal, trailingSlash) {
|
|
|
69
74
|
return urlNormalized;
|
|
70
75
|
}
|
|
71
76
|
exports.normalizeUrlPathname = normalizeUrlPathname;
|
|
77
|
+
function normalize(urlPathname) {
|
|
78
|
+
(0, assert_js_1.assert)(urlPathname.startsWith('/'));
|
|
79
|
+
return '/' + urlPathname.split('/').filter(Boolean).join('/');
|
|
80
|
+
}
|
|
72
81
|
function modifyUrlPathname(url, modifier) {
|
|
73
82
|
const { origin, pathnameOriginal, searchOriginal, hashOriginal } = (0, parseUrl_js_1.parseUrl)(url, '/');
|
|
74
83
|
const pathnameModified = modifier(pathnameOriginal);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.projectInfo = void 0;
|
|
4
4
|
const assertSingleInstance_js_1 = require("./assertSingleInstance.js");
|
|
5
|
-
const PROJECT_VERSION = '0.4.
|
|
5
|
+
const PROJECT_VERSION = '0.4.146-commit-701e2e5';
|
|
6
6
|
const projectInfo = {
|
|
7
7
|
projectName: 'Vike',
|
|
8
8
|
projectVersion: PROJECT_VERSION,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { initHistoryState, getHistoryState, pushHistory, saveScrollPosition, monkeyPatchHistoryPushState };
|
|
2
|
-
import { assert, assertUsage, hasProp, isObject } from './utils.js';
|
|
2
|
+
import { assert, assertUsage, getGlobalObject, hasProp, isObject } from './utils.js';
|
|
3
|
+
const globalObject = getGlobalObject('history.ts', {});
|
|
3
4
|
// Fill missing state information:
|
|
4
5
|
// - `history.state` can uninitialized (i.e. `null`):
|
|
5
6
|
// - The very first render
|
|
@@ -71,11 +72,11 @@ function replaceHistoryState(state, url) {
|
|
|
71
72
|
window.history.replaceState(state, '', url ?? /* Passing `undefined` chokes older Edge versions */ null);
|
|
72
73
|
}
|
|
73
74
|
function pushHistoryState(state, url) {
|
|
74
|
-
|
|
75
|
+
pushStateOriginal(state, '', url);
|
|
75
76
|
}
|
|
76
77
|
function monkeyPatchHistoryPushState() {
|
|
77
|
-
|
|
78
|
-
history.pushState = (stateFromUser = {}, ...rest) => {
|
|
78
|
+
globalObject.pushStateOriginal = globalObject.pushStateOriginal ?? window.history.pushState;
|
|
79
|
+
window.history.pushState = (stateFromUser = {}, ...rest) => {
|
|
79
80
|
assertUsage(null === stateFromUser || undefined === stateFromUser || isObject(stateFromUser), 'history.pushState(state) argument state must be an object');
|
|
80
81
|
const state = {
|
|
81
82
|
scrollPosition: getScrollPosition(),
|
|
@@ -84,6 +85,9 @@ function monkeyPatchHistoryPushState() {
|
|
|
84
85
|
// Don't allow user to overwrite triggedBy as it would break Vike's handling of the 'popstate' event
|
|
85
86
|
triggedBy: 'user'
|
|
86
87
|
};
|
|
87
|
-
return pushStateOriginal
|
|
88
|
+
return pushStateOriginal(state, ...rest);
|
|
88
89
|
};
|
|
89
90
|
}
|
|
91
|
+
function pushStateOriginal(...args) {
|
|
92
|
+
globalObject.pushStateOriginal.apply(history, args);
|
|
93
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { buildConfig };
|
|
2
2
|
export { assertRollupInput };
|
|
3
3
|
export { analyzeClientEntries };
|
|
4
|
-
import { assert, resolveOutDir, isObject, viteIsSSR, getFilePathAbsolute, addOnBeforeLogHook, removeFileExtention, unique, assertPosixPath, assertUsage
|
|
4
|
+
import { assert, resolveOutDir, isObject, viteIsSSR, getFilePathAbsolute, addOnBeforeLogHook, removeFileExtention, unique, assertPosixPath, assertUsage } from '../utils.js';
|
|
5
5
|
import { virtualFileIdImportUserCodeServer } from '../../shared/virtual-files/virtualFileImportUserCode.js';
|
|
6
6
|
import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
|
|
7
7
|
import { getConfigValue } from '../../../shared/page-configs/helpers.js';
|
|
@@ -69,7 +69,7 @@ function buildConfig() {
|
|
|
69
69
|
async function getEntries(config) {
|
|
70
70
|
const configVike = await getConfigVike(config);
|
|
71
71
|
const pageFileEntries = await getPageFileEntries(config, configVike.includeAssetsImportedByServer); // TODO/v1-release: remove
|
|
72
|
-
const { pageConfigs } = await getVikeConfig(config
|
|
72
|
+
const { pageConfigs } = await getVikeConfig(config, false);
|
|
73
73
|
assertUsage(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
|
|
74
74
|
if (viteIsSSR(config)) {
|
|
75
75
|
const serverEntries = analyzeServerEntries(pageConfigs);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { resolveVikeConfig };
|
|
2
2
|
import { assertVikeConfig } from './assertVikeConfig.js';
|
|
3
|
-
import {
|
|
3
|
+
import { isDev2 } from '../../utils.js';
|
|
4
4
|
import { findConfigVikeFromStemPackages } from './findConfigVikeFromStemPackages.js';
|
|
5
5
|
import { pickFirst } from './pickFirst.js';
|
|
6
6
|
import { resolveExtensions } from './resolveExtensions.js';
|
|
@@ -12,19 +12,19 @@ function resolveVikeConfig(vikeConfig) {
|
|
|
12
12
|
name: 'vike:resolveVikeConfig',
|
|
13
13
|
enforce: 'pre',
|
|
14
14
|
async configResolved(config) {
|
|
15
|
-
const promise =
|
|
15
|
+
const promise = getConfigVikPromise(vikeConfig, config);
|
|
16
16
|
config.configVikePromise = promise;
|
|
17
17
|
await promise;
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
async function
|
|
21
|
+
async function getConfigVikPromise(vikeConfig, config) {
|
|
22
22
|
const fromPluginOptions = (vikeConfig ?? {});
|
|
23
23
|
const fromViteConfig = (config.vike ?? {});
|
|
24
24
|
const fromStemPackages = await findConfigVikeFromStemPackages(config.root);
|
|
25
25
|
const configs = [fromPluginOptions, ...fromStemPackages, fromViteConfig];
|
|
26
26
|
const extensions = resolveExtensions(configs, config);
|
|
27
|
-
const { globalVikeConfig: fromPlusConfigFile } = await getVikeConfig(config
|
|
27
|
+
const { globalVikeConfig: fromPlusConfigFile } = await getVikeConfig(config, isDev2(config), false, extensions);
|
|
28
28
|
configs.push(fromPlusConfigFile);
|
|
29
29
|
assertVikeConfig(fromPlusConfigFile, ({ prop, errMsg }) => {
|
|
30
30
|
// TODO: add config file path ?
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { determineOptimizeDeps };
|
|
2
2
|
import { findPageFiles } from '../../shared/findPageFiles.js';
|
|
3
|
-
import { assert, getFilePathAbsolute,
|
|
3
|
+
import { assert, getFilePathAbsolute, isNotNullish, isNpmPackageImport, unique } from '../../utils.js';
|
|
4
4
|
import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
|
|
5
5
|
import { getConfigValueSourcesRelevant } from '../../shared/getConfigValueSourcesRelevant.js';
|
|
6
6
|
import { analyzeClientEntries } from '../buildConfig.js';
|
|
7
7
|
import { virtualFileIdImportUserCodeClientCR, virtualFileIdImportUserCodeClientSR } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
|
|
8
8
|
async function determineOptimizeDeps(config, configVike, isDev) {
|
|
9
|
-
const { pageConfigs } = await getVikeConfig(config
|
|
9
|
+
const { pageConfigs } = await getVikeConfig(config, isDev);
|
|
10
10
|
const { entries, include } = await getPageDeps(config, pageConfigs, isDev);
|
|
11
11
|
{
|
|
12
12
|
// This actually doesn't work: Vite's dep optimizer doesn't seem to be able to crawl virtual files.
|
|
@@ -140,7 +140,7 @@ export const pageFilesList = [];
|
|
|
140
140
|
export const neverLoaded = {};
|
|
141
141
|
export const isGeneratedFile = true;
|
|
142
142
|
|
|
143
|
-
${await getVirtualFilePageConfigs(
|
|
143
|
+
${await getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, config)}
|
|
144
144
|
|
|
145
145
|
`;
|
|
146
146
|
fileTypes
|
|
@@ -47,7 +47,7 @@ function importUserCode() {
|
|
|
47
47
|
return undefined;
|
|
48
48
|
id = getVirtualFileId(id);
|
|
49
49
|
if (isVirtualFileIdPageConfigValuesAll(id)) {
|
|
50
|
-
const code = await getVirtualFilePageConfigValuesAll(id,
|
|
50
|
+
const code = await getVirtualFilePageConfigValuesAll(id, isDev, config);
|
|
51
51
|
return code;
|
|
52
52
|
}
|
|
53
53
|
if (isVirtualFileIdImportUserCode(id)) {
|
|
@@ -4,6 +4,7 @@ export { vikeConfigDependencies };
|
|
|
4
4
|
export { isVikeConfigFile };
|
|
5
5
|
import type { PageConfigGlobalBuildTime, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
|
|
6
6
|
import type { ExtensionResolved } from '../../../../../shared/ConfigVike.js';
|
|
7
|
+
import type { ResolvedConfig } from 'vite';
|
|
7
8
|
type VikeConfig = {
|
|
8
9
|
pageConfigs: PageConfigBuildTime[];
|
|
9
10
|
pageConfigGlobal: PageConfigGlobalBuildTime;
|
|
@@ -11,5 +12,5 @@ type VikeConfig = {
|
|
|
11
12
|
};
|
|
12
13
|
declare const vikeConfigDependencies: Set<string>;
|
|
13
14
|
declare function reloadVikeConfig(userRootDir: string, outDirRoot: string, extensions: ExtensionResolved[]): void;
|
|
14
|
-
declare function getVikeConfig(
|
|
15
|
+
declare function getVikeConfig(config: ResolvedConfig, isDev: boolean, tolerateInvalidConfig?: boolean, extensions?: ExtensionResolved[]): Promise<VikeConfig>;
|
|
15
16
|
declare function isVikeConfigFile(filePath: string): boolean;
|
|
@@ -2,7 +2,7 @@ export { getVikeConfig };
|
|
|
2
2
|
export { reloadVikeConfig };
|
|
3
3
|
export { vikeConfigDependencies };
|
|
4
4
|
export { isVikeConfigFile };
|
|
5
|
-
import { assertPosixPath, assert, isObject, assertUsage, toPosixPath, assertWarning, objectEntries, hasProp, arrayIncludes, assertIsNotProductionRuntime, getMostSimilar, isNpmPackageImport, joinEnglish, lowerFirst, scriptFileExtensions, mergeCumulativeValues, requireResolve } from '../../../utils.js';
|
|
5
|
+
import { assertPosixPath, assert, isObject, assertUsage, toPosixPath, assertWarning, objectEntries, hasProp, arrayIncludes, assertIsNotProductionRuntime, getMostSimilar, isNpmPackageImport, joinEnglish, lowerFirst, scriptFileExtensions, mergeCumulativeValues, requireResolve, getOutDirs } from '../../../utils.js';
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { configDefinitionsBuiltIn, configDefinitionsBuiltInGlobal } from './getVikeConfig/configDefinitionsBuiltIn.js';
|
|
8
8
|
import glob from 'fast-glob';
|
|
@@ -17,6 +17,7 @@ import pc from '@brillout/picocolors';
|
|
|
17
17
|
import { getConfigDefinedAtString } from '../../../../../shared/page-configs/helpers.js';
|
|
18
18
|
import { assertExportsOfConfigFile, assertExportsOfValueFile } from '../../../../../shared/page-configs/assertExports.js';
|
|
19
19
|
import { getConfigValueSerialized } from './getVirtualFilePageConfigs.js';
|
|
20
|
+
import { getConfigVike } from '../../../../shared/getConfigVike.js';
|
|
20
21
|
assertIsNotProductionRuntime();
|
|
21
22
|
let devServerIsCorrupt = false;
|
|
22
23
|
let wasConfigInvalid = null;
|
|
@@ -60,9 +61,11 @@ async function handleReloadSideEffects() {
|
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
async function getVikeConfig(
|
|
64
|
+
async function getVikeConfig(config, isDev, tolerateInvalidConfig = false, extensions) {
|
|
65
|
+
const { outDirRoot } = getOutDirs(config);
|
|
66
|
+
const userRootDir = config.root;
|
|
64
67
|
if (!vikeConfigPromise) {
|
|
65
|
-
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, extensions, tolerateInvalidConfig);
|
|
68
|
+
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev, extensions ?? (await getConfigVike(config)).extensions, tolerateInvalidConfig);
|
|
66
69
|
}
|
|
67
70
|
return await vikeConfigPromise;
|
|
68
71
|
}
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { getVirtualFilePageConfigValuesAll };
|
|
2
|
-
import type {
|
|
3
|
-
declare function getVirtualFilePageConfigValuesAll(id: string,
|
|
2
|
+
import type { ResolvedConfig } from 'vite';
|
|
3
|
+
declare function getVirtualFilePageConfigValuesAll(id: string, isDev: boolean, config: ResolvedConfig): Promise<string>;
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js
CHANGED
|
@@ -8,7 +8,8 @@ import { getConfigValue } from '../../../../../shared/page-configs/helpers.js';
|
|
|
8
8
|
import { getConfigValueSourcesRelevant } from '../../../shared/getConfigValueSourcesRelevant.js';
|
|
9
9
|
import { isRuntimeEnvMatch } from './isRuntimeEnvMatch.js';
|
|
10
10
|
import { serializeConfigValueImported } from '../../../../../shared/page-configs/serialize/serializeConfigValue.js';
|
|
11
|
-
|
|
11
|
+
import { getConfigVike } from '../../../../shared/getConfigVike.js';
|
|
12
|
+
async function getVirtualFilePageConfigValuesAll(id, isDev, config) {
|
|
12
13
|
const result = isVirtualFileIdPageConfigValuesAll(id);
|
|
13
14
|
assert(result);
|
|
14
15
|
/* This assertion fails when using includeAssetsImportedByServer
|
|
@@ -18,9 +19,10 @@ async function getVirtualFilePageConfigValuesAll(id, userRootDir, outDirRoot, is
|
|
|
18
19
|
}
|
|
19
20
|
*/
|
|
20
21
|
const { pageId, isForClientSide } = result;
|
|
21
|
-
const { pageConfigs } = await getVikeConfig(
|
|
22
|
+
const { pageConfigs } = await getVikeConfig(config, isDev, true);
|
|
22
23
|
const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId);
|
|
23
24
|
assert(pageConfig);
|
|
25
|
+
const configVike = await getConfigVike(config);
|
|
24
26
|
const code = getLoadConfigValuesAll(pageConfig, isForClientSide, pageId, configVike.includeAssetsImportedByServer, isDev);
|
|
25
27
|
debug(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
|
|
26
28
|
return code;
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { getVirtualFilePageConfigs };
|
|
2
2
|
export { getConfigValueSerialized };
|
|
3
3
|
import type { DefinedAt } from '../../../../../shared/page-configs/PageConfig.js';
|
|
4
|
-
import type {
|
|
5
|
-
declare function getVirtualFilePageConfigs(
|
|
4
|
+
import type { ResolvedConfig } from 'vite';
|
|
5
|
+
declare function getVirtualFilePageConfigs(isForClientSide: boolean, isDev: boolean, id: string, isClientRouting: boolean, config: ResolvedConfig): Promise<string>;
|
|
6
6
|
declare function getConfigValueSerialized(value: unknown, configName: string, definedAt: DefinedAt): string;
|
|
@@ -10,14 +10,22 @@ import { getVikeConfig } from './getVikeConfig.js';
|
|
|
10
10
|
import { isRuntimeEnvMatch } from './isRuntimeEnvMatch.js';
|
|
11
11
|
import { getConfigValueFilePathToShowToUser } from '../../../../../shared/page-configs/helpers.js';
|
|
12
12
|
import { serializeConfigValue, serializeConfigValueImported } from '../../../../../shared/page-configs/serialize/serializeConfigValue.js';
|
|
13
|
-
async function getVirtualFilePageConfigs(
|
|
14
|
-
const { pageConfigs, pageConfigGlobal } = await getVikeConfig(
|
|
15
|
-
return
|
|
13
|
+
async function getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, config) {
|
|
14
|
+
const { pageConfigs, pageConfigGlobal } = await getVikeConfig(config, isDev, true);
|
|
15
|
+
return getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting);
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isClientRouting) {
|
|
18
18
|
const lines = [];
|
|
19
19
|
const importStatements = [];
|
|
20
20
|
const varCounterContainer = { varCounter: 0 };
|
|
21
|
+
lines.push(getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRouting, importStatements, varCounterContainer));
|
|
22
|
+
lines.push(getCodePageConfigGlobalSerialized(pageConfigGlobal, isForClientSide, isDev, importStatements, varCounterContainer));
|
|
23
|
+
const code = [...importStatements, ...lines].join('\n');
|
|
24
|
+
debug(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
|
|
25
|
+
return code;
|
|
26
|
+
}
|
|
27
|
+
function getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRouting, importStatements, varCounterContainer) {
|
|
28
|
+
const lines = [];
|
|
21
29
|
lines.push('export const pageConfigsSerialized = [');
|
|
22
30
|
pageConfigs.forEach((pageConfig) => {
|
|
23
31
|
const { pageId, routeFilesystem, isErrorPage } = pageConfig;
|
|
@@ -71,6 +79,11 @@ function getContent(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, i
|
|
|
71
79
|
lines.push(` },`);
|
|
72
80
|
});
|
|
73
81
|
lines.push('];');
|
|
82
|
+
const code = lines.join('\n');
|
|
83
|
+
return code;
|
|
84
|
+
}
|
|
85
|
+
function getCodePageConfigGlobalSerialized(pageConfigGlobal, isForClientSide, isDev, importStatements, varCounterContainer) {
|
|
86
|
+
const lines = [];
|
|
74
87
|
lines.push('export const pageConfigGlobalSerialized = {');
|
|
75
88
|
/* Nothing (yet)
|
|
76
89
|
lines.push(` configValuesSerialized: {`)
|
|
@@ -97,8 +110,7 @@ function getContent(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, i
|
|
|
97
110
|
});
|
|
98
111
|
lines.push(` ],`);
|
|
99
112
|
lines.push('};');
|
|
100
|
-
const code =
|
|
101
|
-
debug(id, isForClientSide ? 'CLIENT-SIDE' : 'SERVER-SIDE', code);
|
|
113
|
+
const code = lines.join('\n');
|
|
102
114
|
return code;
|
|
103
115
|
}
|
|
104
116
|
function getConfigValueSerialized(value, configName, definedAt) {
|
|
@@ -7,7 +7,7 @@ import fs from 'fs';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import pc from '@brillout/picocolors';
|
|
9
9
|
import { import_ } from '@brillout/import';
|
|
10
|
-
import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, unique, assertWarning, isObject, toPosixPath
|
|
10
|
+
import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, unique, assertWarning, isObject, toPosixPath } from '../../../utils.js';
|
|
11
11
|
import { isImportData, replaceImportStatements } from './replaceImportStatements.js';
|
|
12
12
|
import { vikeConfigDependencies } from './getVikeConfig.js';
|
|
13
13
|
import 'source-map-support/register.js';
|
|
@@ -226,11 +226,11 @@ function assertImportsAreReExported(fileImports, fileExports, filePathToShowToUs
|
|
|
226
226
|
const importStatements = unique(fileImportsUnused.map((fi) => fi.importStatementCode));
|
|
227
227
|
const importNamesUnused = fileImportsUnused.map((fi) => pc.cyan(fi.importLocalName)).join(', ');
|
|
228
228
|
const singular = fileImportsUnused.length === 1;
|
|
229
|
-
|
|
229
|
+
assertWarning(fileImportsUnused.length === 0, [
|
|
230
230
|
`${filePathToShowToUser} imports the following:`,
|
|
231
231
|
...importStatements.map((s) => pc.cyan(` ${s}`)),
|
|
232
232
|
`But the import${singular ? '' : 's'} ${importNamesUnused} ${singular ? "isn't" : "aren't"} re-exported at ${pc.cyan('export default { ... }')} and therefore ${singular ? 'has' : 'have'} no effect, see explanation at https://vike.dev/header-file`
|
|
233
|
-
].join('\n'));
|
|
233
|
+
].join('\n'), { onlyOnce: true });
|
|
234
234
|
}
|
|
235
235
|
function getExportedStrings(obj) {
|
|
236
236
|
const exportedStrings = [];
|
|
@@ -25,6 +25,7 @@ import { isAbortError } from '../../shared/route/abort.js';
|
|
|
25
25
|
import { loadPageFilesServerSide } from '../runtime/renderPage/loadPageFilesServerSide.js';
|
|
26
26
|
import { assertHookFn } from '../../shared/hooks/getHook.js';
|
|
27
27
|
import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
|
|
28
|
+
import { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
28
29
|
async function prerenderFromAPI(options = {}) {
|
|
29
30
|
await runPrerender(options, 'prerender()');
|
|
30
31
|
}
|
|
@@ -68,7 +69,8 @@ async function runPrerender(options, manuallyTriggered) {
|
|
|
68
69
|
pageContextInit: options.pageContextInit ?? null
|
|
69
70
|
});
|
|
70
71
|
const doNotPrerenderList = [];
|
|
71
|
-
await
|
|
72
|
+
const vikeConfig = await getVikeConfig(viteConfig, false);
|
|
73
|
+
await collectDoNoPrerenderList(renderContext, vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
|
|
72
74
|
await callOnBeforePrerenderStartHooks(prerenderContext, renderContext, concurrencyLimit);
|
|
73
75
|
await handlePagesWithStaticRoutes(prerenderContext, renderContext, doNotPrerenderList, concurrencyLimit);
|
|
74
76
|
await callOnPrerenderStartHook(prerenderContext, renderContext);
|
|
@@ -83,8 +85,9 @@ async function runPrerender(options, manuallyTriggered) {
|
|
|
83
85
|
await Promise.all(htmlFiles.map((htmlFile) => writeHtmlFile(htmlFile, root, outDirClient, concurrencyLimit, options.onPagePrerender, logLevel)));
|
|
84
86
|
warnMissingPages(prerenderPageIds, doNotPrerenderList, renderContext, partial);
|
|
85
87
|
}
|
|
86
|
-
async function collectDoNoPrerenderList(renderContext, doNotPrerenderList, concurrencyLimit) {
|
|
87
|
-
|
|
88
|
+
async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerenderList, concurrencyLimit) {
|
|
89
|
+
// V1 design
|
|
90
|
+
pageConfigs.forEach((pageConfig) => {
|
|
88
91
|
const configName = 'prerender';
|
|
89
92
|
const configValue = getConfigValue(pageConfig, configName, 'boolean');
|
|
90
93
|
if (configValue?.value === false) {
|
|
@@ -98,6 +101,8 @@ async function collectDoNoPrerenderList(renderContext, doNotPrerenderList, concu
|
|
|
98
101
|
});
|
|
99
102
|
}
|
|
100
103
|
});
|
|
104
|
+
// Old design
|
|
105
|
+
// TODO/v1-release: remove
|
|
101
106
|
await Promise.all(renderContext.pageFilesAll
|
|
102
107
|
.filter((p) => {
|
|
103
108
|
assertExportNames(p);
|
|
@@ -312,11 +312,11 @@ function skipRequest(urlOriginal) {
|
|
|
312
312
|
isViteClientRequest);
|
|
313
313
|
}
|
|
314
314
|
function normalizeUrl(pageContextInit, httpRequestId) {
|
|
315
|
-
const { trailingSlash, disableUrlNormalization } = getGlobalContext();
|
|
315
|
+
const { trailingSlash, disableUrlNormalization, baseServer } = getGlobalContext();
|
|
316
316
|
if (disableUrlNormalization)
|
|
317
317
|
return null;
|
|
318
318
|
const { urlOriginal } = pageContextInit;
|
|
319
|
-
const urlNormalized = normalizeUrlPathname(urlOriginal, trailingSlash);
|
|
319
|
+
const urlNormalized = normalizeUrlPathname(urlOriginal, trailingSlash, baseServer);
|
|
320
320
|
if (!urlNormalized)
|
|
321
321
|
return null;
|
|
322
322
|
logRuntimeInfo?.(`URL normalized from ${pc.cyan(urlOriginal)} to ${pc.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { getConfigVike };
|
|
2
|
+
import { ResolvedConfig } from 'vite';
|
|
2
3
|
import type { ConfigVikeResolved } from '../../shared/ConfigVike.js';
|
|
3
|
-
declare function getConfigVike(config:
|
|
4
|
+
declare function getConfigVike(config: ResolvedConfig): Promise<ConfigVikeResolved>;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export { getConfigVike };
|
|
2
|
+
import { assert } from './utils.js';
|
|
2
3
|
async function getConfigVike(config) {
|
|
3
|
-
const
|
|
4
|
+
const { configVikePromise } = config;
|
|
5
|
+
assert(configVikePromise);
|
|
6
|
+
const configVike = await configVikePromise;
|
|
4
7
|
return configVike;
|
|
5
8
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { parseConfigValuesImported };
|
|
2
|
-
import { assert
|
|
2
|
+
import { assert } from '../../utils.js';
|
|
3
3
|
import { assertExportsOfValueFile } from '../assertExports.js';
|
|
4
|
-
import pc from '@brillout/picocolors';
|
|
5
4
|
function parseConfigValuesImported(configValuesImported) {
|
|
6
5
|
const configValues = {};
|
|
7
6
|
const addConfigValue = (configName, value, importPath, exportName) => {
|
|
@@ -44,5 +43,12 @@ function parseConfigValuesImported(configValuesImported) {
|
|
|
44
43
|
}
|
|
45
44
|
function assertIsNotNull(configValue, configName, importPath) {
|
|
46
45
|
assert(!importPath.includes('+config.'));
|
|
47
|
-
|
|
46
|
+
/* Re-use this for:
|
|
47
|
+
* - upcoming config.requestPageContextOnNavigation
|
|
48
|
+
* - for cumulative values in the future: we don't need this for now because, currently, cumulative values are never imported.
|
|
49
|
+
assertUsage(
|
|
50
|
+
configValue !== null,
|
|
51
|
+
`Set ${pc.cyan(configName)} to ${pc.cyan('null')} in a +config.h.js file instead of ${importPath}`
|
|
52
|
+
)
|
|
53
|
+
*/
|
|
48
54
|
}
|
|
@@ -8,7 +8,7 @@ export { addUrlOrigin };
|
|
|
8
8
|
declare function prependBase(url: string, baseServer: string): string;
|
|
9
9
|
declare function removeBaseServer(url: string, baseServer: string): string;
|
|
10
10
|
declare function isBaseAssets(base: string): boolean;
|
|
11
|
-
declare function normalizeUrlPathname(urlOriginal: string, trailingSlash: boolean): string | null;
|
|
11
|
+
declare function normalizeUrlPathname(urlOriginal: string, trailingSlash: boolean, baseServer: string): string | null;
|
|
12
12
|
declare function modifyUrlPathname(url: string, modifier: (urlPathname: string) => string | null): string;
|
|
13
13
|
declare function removeUrlOrigin(url: string): {
|
|
14
14
|
urlModified: string;
|
|
@@ -53,15 +53,20 @@ function normalizeBaseServer(baseServer) {
|
|
|
53
53
|
function isBaseAssets(base) {
|
|
54
54
|
return base.startsWith('/') || base.startsWith('http://') || base.startsWith('https://');
|
|
55
55
|
}
|
|
56
|
-
function normalizeUrlPathname(urlOriginal, trailingSlash) {
|
|
56
|
+
function normalizeUrlPathname(urlOriginal, trailingSlash, baseServer) {
|
|
57
57
|
const urlNormalized = modifyUrlPathname(urlOriginal, (urlPathname) => {
|
|
58
58
|
assert(urlPathname.startsWith('/'));
|
|
59
|
-
let urlPathnameNormalized =
|
|
60
|
-
if (urlPathnameNormalized
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
let urlPathnameNormalized = normalize(urlPathname);
|
|
60
|
+
if (urlPathnameNormalized === '/') {
|
|
61
|
+
return urlPathnameNormalized;
|
|
62
|
+
}
|
|
63
|
+
// If the Base URL has a trailing slash, then Vite (as of vite@5.0.0-beta.19) expects the root URL to also have a trailing slash, see https://github.com/vikejs/vike/issues/1258#issuecomment-1812226260
|
|
64
|
+
if (baseServer.endsWith('/') && baseServer !== '/' && normalize(baseServer) === urlPathnameNormalized) {
|
|
65
|
+
trailingSlash = true;
|
|
66
|
+
}
|
|
67
|
+
assert(!urlPathnameNormalized.endsWith('/'));
|
|
68
|
+
if (trailingSlash) {
|
|
69
|
+
urlPathnameNormalized = urlPathnameNormalized + '/';
|
|
65
70
|
}
|
|
66
71
|
return urlPathnameNormalized;
|
|
67
72
|
});
|
|
@@ -69,6 +74,10 @@ function normalizeUrlPathname(urlOriginal, trailingSlash) {
|
|
|
69
74
|
return null;
|
|
70
75
|
return urlNormalized;
|
|
71
76
|
}
|
|
77
|
+
function normalize(urlPathname) {
|
|
78
|
+
assert(urlPathname.startsWith('/'));
|
|
79
|
+
return '/' + urlPathname.split('/').filter(Boolean).join('/');
|
|
80
|
+
}
|
|
72
81
|
function modifyUrlPathname(url, modifier) {
|
|
73
82
|
const { origin, pathnameOriginal, searchOriginal, hashOriginal } = parseUrl(url, '/');
|
|
74
83
|
const pathnameModified = modifier(pathnameOriginal);
|
|
@@ -5,7 +5,7 @@ type ProjectVersion = typeof projectInfo.projectVersion;
|
|
|
5
5
|
type ProjectTag = `[${PackageName}]` | `[${PackageName}@${ProjectVersion}]`;
|
|
6
6
|
declare const projectInfo: {
|
|
7
7
|
projectName: "Vike";
|
|
8
|
-
projectVersion: "0.4.
|
|
8
|
+
projectVersion: "0.4.146-commit-701e2e5";
|
|
9
9
|
npmPackageName: "vike";
|
|
10
10
|
githubRepository: "https://github.com/vikejs/vike";
|
|
11
11
|
};
|
package/node/cli/bin-entry.js
CHANGED