vike 0.4.236-commit-e752d12 → 0.4.236-commit-08fbc10
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/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +4 -0
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/node/shared/utils.js +1 -0
- package/dist/cjs/node/shared/virtualFiles/virtualFileEntry.js +16 -14
- package/dist/cjs/node/shared/virtualFiles/virtualFilePageConfigLazy.js +10 -4
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +28 -13
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistFileNames.js +12 -7
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginModuleBanner.js +2 -2
- package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +100 -58
- package/dist/cjs/node/vite/plugins/pluginExtractAssets.js +3 -4
- package/dist/cjs/node/vite/plugins/pluginVirtualFiles/getVirtualFilePageConfigLazy.js +1 -0
- package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +4 -5
- package/dist/cjs/node/vite/utils.js +1 -0
- package/dist/cjs/shared/getPageFiles/parseVirtualFileExports.js +6 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +1 -0
- package/dist/cjs/utils/virtualFileId.js +39 -0
- package/dist/esm/client/runtime-client-routing/history.d.ts +4 -2
- package/dist/esm/client/runtime-client-routing/history.js +13 -35
- package/dist/esm/client/runtime-client-routing/initClientRouter.js +3 -2
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +43 -30
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +4 -0
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/node/shared/utils.d.ts +1 -0
- package/dist/esm/node/shared/utils.js +1 -0
- package/dist/esm/node/shared/virtualFiles/virtualFileEntry.js +16 -14
- package/dist/esm/node/shared/virtualFiles/virtualFilePageConfigLazy.js +11 -5
- package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +28 -13
- package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.js +12 -7
- package/dist/esm/node/vite/plugins/pluginBuild/pluginModuleBanner.js +2 -2
- package/dist/esm/node/vite/plugins/pluginDev/determineOptimizeDeps.js +101 -59
- package/dist/esm/node/vite/plugins/pluginExtractAssets.js +3 -4
- package/dist/esm/node/vite/plugins/pluginVirtualFiles/getVirtualFilePageConfigLazy.js +1 -0
- package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +3 -4
- package/dist/esm/node/vite/utils.d.ts +1 -0
- package/dist/esm/node/vite/utils.js +1 -0
- package/dist/esm/shared/getPageFiles/parseVirtualFileExports.js +6 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/isFilePathAbsoluteFilesystem.d.ts +7 -0
- package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -0
- package/dist/esm/utils/virtualFileId.d.ts +6 -0
- package/dist/esm/{node/shared/virtualFiles.js → utils/virtualFileId.js} +15 -17
- package/package.json +3 -3
- package/dist/cjs/node/shared/virtualFiles.js +0 -41
- package/dist/esm/node/shared/virtualFiles.d.ts +0 -8
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.retrieveAssetsDev = retrieveAssetsDev;
|
|
4
4
|
const utils_js_1 = require("../../utils.js");
|
|
5
|
+
const virtualFileEntry_js_1 = require("../../../shared/virtualFiles/virtualFileEntry.js");
|
|
5
6
|
async function retrieveAssetsDev(clientDependencies, viteDevServer) {
|
|
6
7
|
const assetUrls = new Set();
|
|
7
8
|
await Promise.all(clientDependencies.map(async ({ id }) => {
|
|
8
9
|
if (id.startsWith('@@vike'))
|
|
9
10
|
return; // vike doesn't have any CSS
|
|
10
11
|
(0, utils_js_1.assert)(id);
|
|
12
|
+
(0, utils_js_1.assert)(!(0, virtualFileEntry_js_1.isVirtualFileIdEntry)(id));
|
|
11
13
|
const { moduleGraph } = viteDevServer;
|
|
12
14
|
const [_, graphId] = await moduleGraph.resolveUrl(id);
|
|
13
15
|
(0, utils_js_1.assert)(graphId, { id });
|
|
@@ -34,6 +36,8 @@ function collectCss(mod, styleUrls, visitedModules, importer) {
|
|
|
34
36
|
if (visitedModules.has(mod.url))
|
|
35
37
|
return;
|
|
36
38
|
visitedModules.add(mod.url);
|
|
39
|
+
if ((0, virtualFileEntry_js_1.isVirtualFileIdEntry)(mod.id || mod.url))
|
|
40
|
+
return; // virtual:vike:entry:server dependency list includes all pages
|
|
37
41
|
if (isStyle(mod) && (!importer || !isStyle(importer))) {
|
|
38
42
|
if (mod.url.startsWith('/')) {
|
|
39
43
|
styleUrls.add(mod.url);
|
|
@@ -62,6 +62,7 @@ __exportStar(require("../../utils/assertSetup.js"), exports);
|
|
|
62
62
|
__exportStar(require("../../utils/path.js"), exports);
|
|
63
63
|
__exportStar(require("../../utils/isHtml.js"), exports);
|
|
64
64
|
__exportStar(require("../../utils/warnIfErrorIsNotObject.js"), exports);
|
|
65
|
+
__exportStar(require("../../utils/virtualFileId.js"), exports);
|
|
65
66
|
__exportStar(require("../../utils/stripAnsi.js"), exports);
|
|
66
67
|
__exportStar(require("../../utils/getTerminWidth.js"), exports);
|
|
67
68
|
__exportStar(require("../../utils/truncateString.js"), exports);
|
|
@@ -32,3 +32,4 @@ __exportStar(require("../../utils/assertIsNotBrowser.js"), exports);
|
|
|
32
32
|
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/unique.js"), exports);
|
|
34
34
|
__exportStar(require("../../utils/debug.js"), exports);
|
|
35
|
+
__exportStar(require("../../utils/virtualFileId.js"), exports);
|
|
@@ -2,27 +2,29 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.virtualFileIdEntryClientCR = exports.virtualFileIdEntryClientSR = exports.virtualFileIdEntryServer = void 0;
|
|
4
4
|
exports.isVirtualFileIdEntry = isVirtualFileIdEntry;
|
|
5
|
+
// TODO/now: merge virtualFileEntry.ts and virtualFilePageConfigLazy.ts
|
|
6
|
+
// - One function parseVirtualFileIdEntry() to rule them all?
|
|
5
7
|
const utils_js_1 = require("../utils.js");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
(0, utils_js_1.assertIsNotBrowser)();
|
|
9
|
+
// TODO/now: rename:
|
|
10
|
+
// ```diff
|
|
11
|
+
// - virtual:vike:entry:server
|
|
12
|
+
// + virtual:vike:entry:global:server
|
|
13
|
+
// ```
|
|
14
|
+
const virtualFileIdEntryServer = 'virtual:vike:entry:server';
|
|
9
15
|
exports.virtualFileIdEntryServer = virtualFileIdEntryServer;
|
|
10
|
-
const virtualFileIdEntryClientSR =
|
|
16
|
+
const virtualFileIdEntryClientSR = 'virtual:vike:entry:client:server-routing';
|
|
11
17
|
exports.virtualFileIdEntryClientSR = virtualFileIdEntryClientSR;
|
|
12
|
-
const virtualFileIdEntryClientCR =
|
|
18
|
+
const virtualFileIdEntryClientCR = 'virtual:vike:entry:client:client-routing';
|
|
13
19
|
exports.virtualFileIdEntryClientCR = virtualFileIdEntryClientCR;
|
|
20
|
+
const virtualFileIdEntries = [virtualFileIdEntryServer, virtualFileIdEntryClientCR, virtualFileIdEntryClientSR];
|
|
21
|
+
const idBase = 'virtual:vike:entry';
|
|
22
|
+
(0, utils_js_1.assert)(virtualFileIdEntries.every((v) => v.startsWith(`${idBase}:`)));
|
|
14
23
|
function isVirtualFileIdEntry(id) {
|
|
15
|
-
id = (0,
|
|
24
|
+
id = (0, utils_js_1.removeVirtualFileIdPrefix)(id);
|
|
16
25
|
if (!id.startsWith(idBase))
|
|
17
26
|
return false;
|
|
18
|
-
(0, utils_js_1.assert)(
|
|
19
|
-
// prettier-ignore
|
|
20
|
-
// biome-ignore format:
|
|
21
|
-
[
|
|
22
|
-
virtualFileIdEntryServer,
|
|
23
|
-
virtualFileIdEntryClientCR,
|
|
24
|
-
virtualFileIdEntryClientSR
|
|
25
|
-
].includes(id));
|
|
27
|
+
(0, utils_js_1.assert)(virtualFileIdEntries.includes(id));
|
|
26
28
|
const isForClientSide = id !== virtualFileIdEntryServer;
|
|
27
29
|
const isClientRouting = id === virtualFileIdEntryClientCR;
|
|
28
30
|
return { isForClientSide, isClientRouting };
|
|
@@ -4,16 +4,22 @@ exports.isVirtualFileIdPageConfigLazy = isVirtualFileIdPageConfigLazy;
|
|
|
4
4
|
exports.getVirtualFileIdPageConfigLazy = getVirtualFileIdPageConfigLazy;
|
|
5
5
|
const extractAssetsQuery_js_1 = require("../extractAssetsQuery.js");
|
|
6
6
|
const utils_js_1 = require("../utils.js");
|
|
7
|
-
|
|
7
|
+
(0, utils_js_1.assertIsNotBrowser)();
|
|
8
|
+
// TODO/now: rename:
|
|
9
|
+
// ```diff
|
|
10
|
+
// - virtual:vike:pageConfigLazy:server:
|
|
11
|
+
// + virtual:vike:entry:page:server:
|
|
12
|
+
// ```
|
|
13
|
+
const idBaseClient = 'virtual:vike:pageConfigLazy:client:';
|
|
14
|
+
const idBaseServer = 'virtual:vike:pageConfigLazy:server:';
|
|
8
15
|
const idBase = 'virtual:vike:pageConfigLazy:';
|
|
9
|
-
|
|
10
|
-
const idBaseServer = `${idBase}server:`;
|
|
16
|
+
// TODO/now: rename to generateVirtualFileIdEntry()
|
|
11
17
|
function getVirtualFileIdPageConfigLazy(pageId, isForClientSide) {
|
|
12
18
|
const id = `${isForClientSide ? idBaseClient : idBaseServer}${pageId}`;
|
|
13
19
|
return id;
|
|
14
20
|
}
|
|
15
21
|
function isVirtualFileIdPageConfigLazy(id) {
|
|
16
|
-
id = (0,
|
|
22
|
+
id = (0, utils_js_1.removeVirtualFileIdPrefix)(id);
|
|
17
23
|
if (!id.includes(idBase))
|
|
18
24
|
return false;
|
|
19
25
|
(0, utils_js_1.assert)(id.startsWith(idBase));
|
|
@@ -8,6 +8,34 @@ const pluginAutoFullBuild_js_1 = require("./pluginAutoFullBuild.js");
|
|
|
8
8
|
const resolveVikeConfigInternal_js_1 = require("../../shared/resolveVikeConfigInternal.js");
|
|
9
9
|
function pluginBuildApp() {
|
|
10
10
|
return [
|
|
11
|
+
{
|
|
12
|
+
name: 'vike:build:pluginBuildApp:pre',
|
|
13
|
+
apply: 'build',
|
|
14
|
+
enforce: 'pre',
|
|
15
|
+
config: {
|
|
16
|
+
order: 'pre',
|
|
17
|
+
async handler(_config) {
|
|
18
|
+
const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
|
|
19
|
+
if (!vikeConfig.config.vite6BuilderApp)
|
|
20
|
+
return;
|
|
21
|
+
return {
|
|
22
|
+
builder: {
|
|
23
|
+
// Can be overridden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
|
|
24
|
+
async buildApp(builder) {
|
|
25
|
+
(0, utils_js_1.assert)(builder.environments.client);
|
|
26
|
+
(0, utils_js_1.assert)(builder.environments.ssr);
|
|
27
|
+
await builder.build(builder.environments.client);
|
|
28
|
+
await builder.build(builder.environments.ssr);
|
|
29
|
+
if ((0, pluginAutoFullBuild_js_1.isPrerenderForceExit)()) {
|
|
30
|
+
(0, runPrerenderEntry_js_1.runPrerender_forceExit)();
|
|
31
|
+
(0, utils_js_1.assert)(false);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
11
39
|
{
|
|
12
40
|
name: 'vike:build:pluginBuildApp',
|
|
13
41
|
apply: 'build',
|
|
@@ -16,19 +44,6 @@ function pluginBuildApp() {
|
|
|
16
44
|
if (!vikeConfig.config.vite6BuilderApp)
|
|
17
45
|
return;
|
|
18
46
|
return {
|
|
19
|
-
builder: {
|
|
20
|
-
// Can be overridden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
|
|
21
|
-
async buildApp(builder) {
|
|
22
|
-
(0, utils_js_1.assert)(builder.environments.client);
|
|
23
|
-
(0, utils_js_1.assert)(builder.environments.ssr);
|
|
24
|
-
await builder.build(builder.environments.client);
|
|
25
|
-
await builder.build(builder.environments.ssr);
|
|
26
|
-
if ((0, pluginAutoFullBuild_js_1.isPrerenderForceExit)()) {
|
|
27
|
-
(0, runPrerenderEntry_js_1.runPrerender_forceExit)();
|
|
28
|
-
(0, utils_js_1.assert)(false);
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
47
|
environments: {
|
|
33
48
|
ssr: {
|
|
34
49
|
consumer: 'server',
|
|
@@ -156,13 +156,8 @@ function getEntryFileName(chunkInfo, config, isEntry) {
|
|
|
156
156
|
return `${name}.${isEntry ? 'mjs' : 'js'}`;
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
function removePathSeparators(name
|
|
159
|
+
function removePathSeparators(name) {
|
|
160
160
|
(0, utils_js_1.assertPosixPath)(name);
|
|
161
|
-
if (name.startsWith(userRootDir)) {
|
|
162
|
-
name = name.slice(userRootDir.length);
|
|
163
|
-
if (name.startsWith('/'))
|
|
164
|
-
name = name.slice(1);
|
|
165
|
-
}
|
|
166
161
|
(0, utils_js_1.assert)(!name.startsWith('/'), { name });
|
|
167
162
|
const entryDir = 'entries/';
|
|
168
163
|
const hasEntryDir = name.startsWith(entryDir);
|
|
@@ -176,14 +171,24 @@ function removePathSeparators(name, userRootDir) {
|
|
|
176
171
|
}
|
|
177
172
|
return name;
|
|
178
173
|
}
|
|
174
|
+
function removeUserRootDir(name, userRootDir) {
|
|
175
|
+
if (name.startsWith(userRootDir)) {
|
|
176
|
+
name = name.slice(userRootDir.length);
|
|
177
|
+
if (name.startsWith('/'))
|
|
178
|
+
name = name.slice(1);
|
|
179
|
+
}
|
|
180
|
+
(0, utils_js_1.assert)(!name.startsWith('/'), { name });
|
|
181
|
+
return name;
|
|
182
|
+
}
|
|
179
183
|
function clean(name, userRootDir, removePathSep, fixGlob) {
|
|
184
|
+
name = removeUserRootDir(name, userRootDir);
|
|
180
185
|
name = fixExtractAssetsQuery(name);
|
|
181
186
|
if (fixGlob) {
|
|
182
187
|
name = workaroundGlob(name);
|
|
183
188
|
}
|
|
184
189
|
name = replaceNonLatinCharacters(name);
|
|
185
190
|
if (removePathSep) {
|
|
186
|
-
name = removePathSeparators(name
|
|
191
|
+
name = removePathSeparators(name);
|
|
187
192
|
}
|
|
188
193
|
name = removeLeadingUnderscoreInFilename(name);
|
|
189
194
|
name = removeUnderscoreDoublets(name);
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.pluginModuleBanner = pluginModuleBanner;
|
|
7
7
|
const magic_string_1 = __importDefault(require("magic-string"));
|
|
8
|
-
const
|
|
8
|
+
const utils_js_1 = require("../../utils.js");
|
|
9
9
|
const isViteServerBuild_js_1 = require("../../shared/isViteServerBuild.js");
|
|
10
10
|
// Rollup's banner feature doesn't work with Vite: https://github.com/vitejs/vite/issues/8412
|
|
11
11
|
// But, anyways, we want to prepend the banner at the beginning of each module, not at the beginning of each file (I believe that's what Rollup's banner feature does).
|
|
@@ -28,7 +28,7 @@ function pluginModuleBanner() {
|
|
|
28
28
|
}
|
|
29
29
|
if (id.startsWith('\0'))
|
|
30
30
|
id = id;
|
|
31
|
-
id = (0,
|
|
31
|
+
id = (0, utils_js_1.removeVirtualFileIdPrefix)(id);
|
|
32
32
|
if (id.startsWith(config.root))
|
|
33
33
|
id = id.slice(config.root.length + 1);
|
|
34
34
|
id = id.replaceAll('*/', '*\\/'); // https://github.com/vikejs/vike/issues/2377
|
|
@@ -11,38 +11,78 @@ const debug = (0, utils_js_1.createDebugger)('vike:optimizeDeps');
|
|
|
11
11
|
async function determineOptimizeDeps(config) {
|
|
12
12
|
const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
|
|
13
13
|
const { _pageConfigs: pageConfigs } = vikeConfig;
|
|
14
|
-
const {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
entries.
|
|
14
|
+
const { entriesClient, entriesServer, includeClient, includeServer } = await getPageDeps(config, pageConfigs);
|
|
15
|
+
config.optimizeDeps.include = add(config.optimizeDeps.include, includeClient);
|
|
16
|
+
config.optimizeDeps.entries = add(config.optimizeDeps.entries, entriesClient);
|
|
17
|
+
// TO-DO/eventually: use a check that is agnostic to @cloudflare/vite-plugin
|
|
18
|
+
const isNotRunnable = config.environments?.ssr?.resolve.conditions.includes('workerd');
|
|
19
|
+
if (isNotRunnable) {
|
|
20
|
+
config.ssr.optimizeDeps.include = add(config.ssr.optimizeDeps.include, includeServer);
|
|
21
|
+
// @ts-ignore — Vite doesn't seem to support ssr.optimizeDeps.entries (vite@7.0.6, July 2025)
|
|
22
|
+
config.ssr.optimizeDeps.entries = add(config.ssr.optimizeDeps.entries, entriesServer);
|
|
22
23
|
}
|
|
23
|
-
/* Other Vite plugins may populate optimizeDeps, e.g. Cypress: https://github.com/vikejs/vike/issues/386
|
|
24
|
-
assert(config.optimizeDeps.entries === undefined)
|
|
25
|
-
*/
|
|
26
|
-
config.optimizeDeps.include = [...include, ...normalizeInclude(config.optimizeDeps.include)];
|
|
27
|
-
config.optimizeDeps.entries = [...entries, ...normalizeEntries(config.optimizeDeps.entries)];
|
|
28
24
|
if (debug.isActivated)
|
|
29
|
-
debug('
|
|
25
|
+
debug('optimizeDeps', {
|
|
30
26
|
'config.optimizeDeps.entries': config.optimizeDeps.entries,
|
|
31
27
|
'config.optimizeDeps.include': config.optimizeDeps.include,
|
|
28
|
+
'config.optimizeDeps.exclude': config.optimizeDeps.exclude,
|
|
29
|
+
/* Vite doesn't seem to support ssr.optimizeDeps.entries (vite@7.0.6, July 2025)
|
|
30
|
+
'config.ssr.optimizeDeps.entries': config.ssr.optimizeDeps.entries,
|
|
31
|
+
//*/
|
|
32
|
+
'config.ssr.optimizeDeps.include': config.ssr.optimizeDeps.include,
|
|
33
|
+
'config.ssr.optimizeDeps.exclude': config.ssr.optimizeDeps.exclude,
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
async function getPageDeps(config, pageConfigs) {
|
|
35
|
-
let
|
|
36
|
-
let
|
|
37
|
-
|
|
37
|
+
let entriesClient = [];
|
|
38
|
+
let entriesServer = [];
|
|
39
|
+
let includeClient = [];
|
|
40
|
+
let includeServer = [];
|
|
41
|
+
const addEntry = (e, configEnv, definedAt) => {
|
|
38
42
|
(0, utils_js_1.assert)(e);
|
|
39
|
-
entries
|
|
43
|
+
// optimizeDeps.entries expects filesystem absolute paths
|
|
44
|
+
(0, utils_js_1.assert)((0, utils_js_1.isVirtualFileId)(e) || (0, utils_js_1.isFilePathAbsoluteFilesystem)(e));
|
|
45
|
+
if (isRelevant(e, false, configEnv, definedAt)) {
|
|
46
|
+
entriesClient.push(e);
|
|
47
|
+
}
|
|
48
|
+
if (isRelevant(e, true, configEnv, definedAt)) {
|
|
49
|
+
entriesServer.push(e);
|
|
50
|
+
}
|
|
40
51
|
};
|
|
41
|
-
const addInclude = (e) => {
|
|
52
|
+
const addInclude = (e, configEnv, definedAt) => {
|
|
42
53
|
(0, utils_js_1.assert)(e);
|
|
43
|
-
//
|
|
54
|
+
// optimizeDeps.include expects npm packages
|
|
55
|
+
(0, utils_js_1.assert)(!e.startsWith('/'));
|
|
56
|
+
// Shouldn't be a path alias, as path aliases would need to be added to optimizeDeps.entries instead of optimizeDeps.include
|
|
44
57
|
(0, utils_js_1.assertIsImportPathNpmPackage)(e);
|
|
45
|
-
|
|
58
|
+
if (isRelevant(e, false, configEnv, definedAt)) {
|
|
59
|
+
includeClient.push(e);
|
|
60
|
+
}
|
|
61
|
+
if (isRelevant(e, true, configEnv, definedAt)) {
|
|
62
|
+
includeServer.push(e);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const isRelevant = (e, server, configEnv, definedAt) => {
|
|
66
|
+
if (server) {
|
|
67
|
+
if (!configEnv || !configEnv.server)
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
if (configEnv && !configEnv.client)
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return !isExcluded(e, server, definedAt);
|
|
75
|
+
};
|
|
76
|
+
const isExcluded = (e, server, definedAt) => {
|
|
77
|
+
const exclude = server ? config.ssr.optimizeDeps.exclude : config.optimizeDeps.exclude;
|
|
78
|
+
if (!exclude)
|
|
79
|
+
return false;
|
|
80
|
+
if (definedAt?.importPathAbsolute) {
|
|
81
|
+
const npmPackageName = (0, utils_js_1.getNpmPackageName)(definedAt.importPathAbsolute);
|
|
82
|
+
if (npmPackageName && exclude.includes(npmPackageName))
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
return exclude.includes(e);
|
|
46
86
|
};
|
|
47
87
|
// V1 design
|
|
48
88
|
{
|
|
@@ -54,22 +94,17 @@ async function getPageDeps(config, pageConfigs) {
|
|
|
54
94
|
if (!configValueSource.valueIsLoadedWithImport && !configValueSource.valueIsFilePath)
|
|
55
95
|
return;
|
|
56
96
|
const { definedAt, configEnv } = configValueSource;
|
|
57
|
-
if (!configEnv.client)
|
|
58
|
-
return;
|
|
59
97
|
if (definedAt.definedBy)
|
|
60
98
|
return;
|
|
61
|
-
if (definedAt.importPathAbsolute) {
|
|
62
|
-
const npmPackageName = (0, utils_js_1.getNpmPackageName)(definedAt.importPathAbsolute);
|
|
63
|
-
if (npmPackageName && config.optimizeDeps.exclude?.includes(npmPackageName))
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
99
|
if (definedAt.filePathAbsoluteUserRootDir !== null) {
|
|
67
|
-
|
|
68
|
-
|
|
100
|
+
addEntry(
|
|
101
|
+
// optimizeDeps.entries expects filesystem absolute paths
|
|
102
|
+
definedAt.filePathAbsoluteFilesystem, configEnv, definedAt);
|
|
69
103
|
}
|
|
70
104
|
else {
|
|
71
|
-
|
|
72
|
-
|
|
105
|
+
addInclude(
|
|
106
|
+
// optimizeDeps.include expects npm packages
|
|
107
|
+
definedAt.importPathAbsolute, configEnv, definedAt);
|
|
73
108
|
}
|
|
74
109
|
});
|
|
75
110
|
});
|
|
@@ -85,32 +120,39 @@ async function getPageDeps(config, pageConfigs) {
|
|
|
85
120
|
addEntry(filePathAbsoluteFilesystem);
|
|
86
121
|
});
|
|
87
122
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
123
|
+
// Add virtual files.
|
|
124
|
+
// - This doesn't work: Vite's dep optimizer doesn't seem to be able to crawl virtual files.
|
|
125
|
+
// - Should we make it work? E.g. by creating a temporary file at node_modules/.vike/virtualFiles.js
|
|
126
|
+
// - Or should we remove it? And make sure getPageDeps() also works for aliased import paths
|
|
127
|
+
// - If we do, then we need to adjust include/entries (maybe by making include === entries -> will Vite complain?)
|
|
128
|
+
{
|
|
129
|
+
const { hasClientRouting, hasServerRouting, clientEntries } = (0, pluginBuildConfig_js_1.analyzeClientEntries)(pageConfigs, config);
|
|
130
|
+
Object.values(clientEntries).forEach((e) => addEntry(e));
|
|
131
|
+
if (hasClientRouting)
|
|
132
|
+
addEntry(virtualFileEntry_js_1.virtualFileIdEntryClientCR);
|
|
133
|
+
if (hasServerRouting)
|
|
134
|
+
addEntry(virtualFileEntry_js_1.virtualFileIdEntryClientSR);
|
|
135
|
+
}
|
|
136
|
+
entriesClient = entriesClient;
|
|
137
|
+
entriesServer = entriesServer;
|
|
138
|
+
includeClient = includeClient;
|
|
139
|
+
includeServer = includeServer;
|
|
140
|
+
return {
|
|
141
|
+
entriesClient,
|
|
142
|
+
entriesServer,
|
|
143
|
+
includeClient,
|
|
144
|
+
includeServer,
|
|
145
|
+
};
|
|
100
146
|
}
|
|
101
|
-
function
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
(0, utils_js_1.assert)(false);
|
|
147
|
+
function add(input, listAddendum) {
|
|
148
|
+
const list = !input ? [] : (0, utils_js_1.isArray)(input) ? unique(input) : [input];
|
|
149
|
+
listAddendum.forEach((e) => {
|
|
150
|
+
if (!list.includes(e))
|
|
151
|
+
list.push(e);
|
|
152
|
+
});
|
|
153
|
+
return list;
|
|
109
154
|
}
|
|
110
|
-
function
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (include === undefined)
|
|
114
|
-
return [];
|
|
115
|
-
(0, utils_js_1.assert)(false);
|
|
155
|
+
function unique(arr) {
|
|
156
|
+
const arrUnique = Array.from(new Set(arr));
|
|
157
|
+
return arr.length !== arrUnique.length ? arrUnique : arr;
|
|
116
158
|
}
|
|
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.extractAssetsRE = void 0;
|
|
9
9
|
exports.pluginExtractAssets = pluginExtractAssets;
|
|
10
10
|
const utils_js_1 = require("../utils.js");
|
|
11
|
-
const virtualFiles_js_1 = require("../../shared/virtualFiles.js");
|
|
12
11
|
const extractAssetsQuery_js_1 = require("../../shared/extractAssetsQuery.js");
|
|
13
12
|
const isAsset_js_1 = require("../shared/isAsset.js");
|
|
14
13
|
const parseEsModule_js_1 = require("../shared/parseEsModule.js");
|
|
@@ -124,9 +123,9 @@ function pluginExtractAssets() {
|
|
|
124
123
|
name: 'vike:pluginExtractAssets-3',
|
|
125
124
|
apply: 'build',
|
|
126
125
|
load(id) {
|
|
127
|
-
if (!(0,
|
|
126
|
+
if (!(0, utils_js_1.isVirtualFileId)(id))
|
|
128
127
|
return undefined;
|
|
129
|
-
id = (0,
|
|
128
|
+
id = (0, utils_js_1.removeVirtualFileIdPrefix)(id);
|
|
130
129
|
if (id === EMPTY_MODULE_ID) {
|
|
131
130
|
return '// Erased by vike:pluginExtractAssets';
|
|
132
131
|
}
|
|
@@ -153,7 +152,7 @@ function pluginExtractAssets() {
|
|
|
153
152
|
}
|
|
154
153
|
function emptyModule(file, importer) {
|
|
155
154
|
debugOperation('NUKED', file, importer);
|
|
156
|
-
return (0,
|
|
155
|
+
return (0, utils_js_1.addVirtualFileIdPrefix)(EMPTY_MODULE_ID);
|
|
157
156
|
}
|
|
158
157
|
function appendExtractAssetsQuery(file, importer) {
|
|
159
158
|
debugOperation('TRANSFORMED', file, importer);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getVirtualFilePageConfigLazy = getVirtualFilePageConfigLazy;
|
|
4
|
+
// TODO/now: rename file to generateVirtualFileEntryPage.ts
|
|
4
5
|
const utils_js_1 = require("../../utils.js");
|
|
5
6
|
const virtualFilePageConfigLazy_js_1 = require("../../../shared/virtualFiles/virtualFilePageConfigLazy.js");
|
|
6
7
|
const resolveVikeConfigInternal_js_1 = require("../../shared/resolveVikeConfigInternal.js");
|
|
@@ -8,7 +8,6 @@ const vite_1 = require("vite");
|
|
|
8
8
|
const getVirtualFilePageConfigLazy_js_1 = require("./pluginVirtualFiles/getVirtualFilePageConfigLazy.js");
|
|
9
9
|
const getVirtualFileEntry_js_1 = require("./pluginVirtualFiles/getVirtualFileEntry.js");
|
|
10
10
|
const utils_js_1 = require("../utils.js");
|
|
11
|
-
const virtualFiles_js_1 = require("../../shared/virtualFiles.js");
|
|
12
11
|
const virtualFilePageConfigLazy_js_1 = require("../../shared/virtualFiles/virtualFilePageConfigLazy.js");
|
|
13
12
|
const virtualFileEntry_js_1 = require("../../shared/virtualFiles/virtualFileEntry.js");
|
|
14
13
|
const resolveVikeConfigInternal_js_1 = require("../shared/resolveVikeConfigInternal.js");
|
|
@@ -30,8 +29,8 @@ function pluginVirtualFiles() {
|
|
|
30
29
|
config.experimental.importGlobRestoreExtension = true;
|
|
31
30
|
},
|
|
32
31
|
resolveId(id) {
|
|
33
|
-
if ((0,
|
|
34
|
-
return (0,
|
|
32
|
+
if ((0, utils_js_1.isVirtualFileId)(id)) {
|
|
33
|
+
return (0, utils_js_1.addVirtualFileIdPrefix)(id);
|
|
35
34
|
}
|
|
36
35
|
},
|
|
37
36
|
async handleHotUpdate(ctx) {
|
|
@@ -45,9 +44,9 @@ function pluginVirtualFiles() {
|
|
|
45
44
|
}
|
|
46
45
|
},
|
|
47
46
|
async load(id, options) {
|
|
48
|
-
if (!(0,
|
|
47
|
+
if (!(0, utils_js_1.isVirtualFileId)(id))
|
|
49
48
|
return undefined;
|
|
50
|
-
id = (0,
|
|
49
|
+
id = (0, utils_js_1.removeVirtualFileIdPrefix)(id);
|
|
51
50
|
const isDev = config._isDev;
|
|
52
51
|
(0, utils_js_1.assert)(typeof isDev === 'boolean');
|
|
53
52
|
if ((0, virtualFilePageConfigLazy_js_1.isVirtualFileIdPageConfigLazy)(id)) {
|
|
@@ -42,3 +42,4 @@ __exportStar(require("../../utils/isDocker.js"), exports);
|
|
|
42
42
|
__exportStar(require("../../utils/isVitest.js"), exports);
|
|
43
43
|
__exportStar(require("../../utils/rollupSourceMap.js"), exports);
|
|
44
44
|
__exportStar(require("../../utils/isImportPath.js"), exports);
|
|
45
|
+
__exportStar(require("../../utils/virtualFileId.js"), exports);
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseVirtualFileExports = parseVirtualFileExports;
|
|
4
|
+
// TODO/now: rename parseVirtualFileExportsEntryGlobal
|
|
5
|
+
// TODO/now: merge or collocate following both files?
|
|
6
|
+
// ```filesystem
|
|
7
|
+
// vike/packages/vike/shared/getPageFiles/parseVirtualFileExports.ts
|
|
8
|
+
// vike/shared/page-configs/serialize/parsePageConfigs.ts
|
|
9
|
+
// ```
|
|
4
10
|
// TO-DO/next-major-release: remove old design code, and remove all assertions.
|
|
5
11
|
const utils_js_1 = require("../utils.js");
|
|
6
12
|
const assert_exports_old_design_js_1 = require("./assert_exports_old_design.js");
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.assertFilePathAbsoluteFilesystem = assertFilePathAbsoluteFilesystem;
|
|
7
|
+
exports.isFilePathAbsoluteFilesystem = isFilePathAbsoluteFilesystem;
|
|
7
8
|
exports.isFilePathAbsolute = isFilePathAbsolute;
|
|
8
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
10
|
const assert_js_1 = require("./assert.js");
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isVirtualFileId = isVirtualFileId;
|
|
7
|
+
exports.addVirtualFileIdPrefix = addVirtualFileIdPrefix;
|
|
8
|
+
exports.removeVirtualFileIdPrefix = removeVirtualFileIdPrefix;
|
|
9
|
+
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
10
|
+
const assert_js_1 = require("./assert.js");
|
|
11
|
+
const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
|
|
12
|
+
(0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
|
|
13
|
+
const idBase = 'virtual:vike:';
|
|
14
|
+
// https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention
|
|
15
|
+
const prefix = '\0';
|
|
16
|
+
function isVirtualFileId(id) {
|
|
17
|
+
if (id.startsWith(idBase))
|
|
18
|
+
return true;
|
|
19
|
+
if (id.startsWith(prefix + idBase))
|
|
20
|
+
return true;
|
|
21
|
+
// https://github.com/vikejs/vike/issues/1985
|
|
22
|
+
(0, assert_js_1.assertUsage)(!id.includes(idBase), `Encountered a module ID ${picocolors_1.default.cyan(id)} that is unexpected. Are you using a tool that modifies the ID of modules? For example, the baseUrl setting in tsconfig.json cannot be used.`);
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
function addVirtualFileIdPrefix(id) {
|
|
26
|
+
(0, assert_js_1.assert)(isVirtualFileId(id));
|
|
27
|
+
if (!id.startsWith(prefix)) {
|
|
28
|
+
id = prefix + id;
|
|
29
|
+
}
|
|
30
|
+
(0, assert_js_1.assert)(id.startsWith(prefix));
|
|
31
|
+
return id;
|
|
32
|
+
}
|
|
33
|
+
function removeVirtualFileIdPrefix(id) {
|
|
34
|
+
if (id.startsWith(prefix)) {
|
|
35
|
+
id = id.slice(prefix.length);
|
|
36
|
+
}
|
|
37
|
+
(0, assert_js_1.assert)(!id.startsWith(prefix));
|
|
38
|
+
return id;
|
|
39
|
+
}
|
|
@@ -2,7 +2,8 @@ export { pushHistoryState };
|
|
|
2
2
|
export { replaceHistoryStateOriginal };
|
|
3
3
|
export { onPopStateBegin };
|
|
4
4
|
export { saveScrollPosition };
|
|
5
|
-
export {
|
|
5
|
+
export { initHistoryState };
|
|
6
|
+
export { monkeyPatchHistoryAPI };
|
|
6
7
|
export type { HistoryInfo };
|
|
7
8
|
export type { ScrollPosition };
|
|
8
9
|
type StateEnhanced = {
|
|
@@ -18,6 +19,7 @@ type ScrollPosition = {
|
|
|
18
19
|
declare function saveScrollPosition(): void;
|
|
19
20
|
declare function pushHistoryState(url: string, overwriteLastHistoryEntry: boolean): void;
|
|
20
21
|
declare function replaceHistoryStateOriginal(state: unknown, url: string): void;
|
|
22
|
+
declare function monkeyPatchHistoryAPI(): void;
|
|
21
23
|
type HistoryInfo = {
|
|
22
24
|
url: `/${string}`;
|
|
23
25
|
state: StateEnhanced;
|
|
@@ -27,4 +29,4 @@ declare function onPopStateBegin(): {
|
|
|
27
29
|
previous: HistoryInfo;
|
|
28
30
|
current: HistoryInfo;
|
|
29
31
|
};
|
|
30
|
-
declare function
|
|
32
|
+
declare function initHistoryState(): void;
|