vike 0.4.236-commit-85d361d → 0.4.236-commit-64431e7
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/client/shared/createGetGlobalContextClient.js +2 -2
- package/dist/cjs/node/runtime/globalContext.js +83 -21
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +8 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +15 -12
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/node/vite/index.js +2 -0
- package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -3
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +2 -1
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistFileNames.js +16 -7
- package/dist/cjs/node/vite/plugins/pluginCommon.js +1 -0
- package/dist/cjs/node/vite/plugins/pluginEnvVars.js +3 -3
- package/dist/cjs/node/vite/plugins/pluginExtractExportNames.js +2 -2
- package/dist/cjs/node/vite/plugins/pluginReplaceConstants.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginViteRPC.js +42 -0
- package/dist/cjs/node/vite/shared/applyRegExWithMagicString.js +1 -0
- package/dist/cjs/shared/createGlobalContextShared.js +14 -6
- package/dist/cjs/shared/getProxyForPublicUsage.js +2 -2
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +3 -0
- package/dist/cjs/utils/debug.js +1 -0
- package/dist/cjs/utils/getViteRPC.js +79 -0
- package/dist/esm/client/runtime-client-routing/createPageContextClientSide.d.ts +1 -1
- package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +2 -2
- package/dist/esm/client/runtime-client-routing/globalContext.d.ts +1 -1
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +1 -1
- package/dist/esm/client/runtime-server-routing/createPageContextClientSide.d.ts +1 -1
- package/dist/esm/client/runtime-server-routing/globalContext.d.ts +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.js +1 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +40 -132
- package/dist/esm/node/runtime/globalContext.d.ts +32 -52
- package/dist/esm/node/runtime/globalContext.js +84 -22
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +8 -1
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +10 -33
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +16 -13
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +20 -66
- package/dist/esm/node/runtime/renderPage.d.ts +10 -33
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/node/vite/index.js +2 -0
- package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -3
- package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.d.ts +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +2 -1
- package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.js +16 -7
- package/dist/esm/node/vite/plugins/pluginCommon.d.ts +3 -0
- package/dist/esm/node/vite/plugins/pluginCommon.js +1 -0
- package/dist/esm/node/vite/plugins/pluginViteRPC.d.ts +25 -0
- package/dist/esm/node/vite/plugins/pluginViteRPC.js +40 -0
- package/dist/esm/node/vite/shared/applyRegExWithMagicString.js +1 -0
- package/dist/esm/shared/createGlobalContextShared.d.ts +3 -3
- package/dist/esm/shared/createGlobalContextShared.js +14 -6
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSetup.js +3 -0
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +1 -0
- package/dist/esm/utils/getViteRPC.d.ts +6 -0
- package/dist/esm/utils/getViteRPC.js +77 -0
- package/package.json +10 -1
|
@@ -26,7 +26,7 @@ export { vikeConfigErrorRecoverMsg };
|
|
|
26
26
|
// - Without vike-server it's manually loaded here using importServerProductionEntry() which uses @brillout/vite-plugin-server-entry's autoImporter or crawler
|
|
27
27
|
// - In development: globalObject.viteDevServer which is Vite's development server
|
|
28
28
|
// - globalObject.viteDevServer is used by updateUserFiles() which then sets virtualFileExports
|
|
29
|
-
import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectReplace, isObject, hasProp, getGlobalObject, genPromise, createDebugger, checkType, PROJECT_VERSION, } from './utils.js';
|
|
29
|
+
import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectReplace, isObject, hasProp, getGlobalObject, genPromise, createDebugger, checkType, PROJECT_VERSION, getViteRPC, } from './utils.js';
|
|
30
30
|
import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
|
|
31
31
|
import { virtualFileIdEntryServer } from '../shared/virtualFiles/virtualFileEntry.js';
|
|
32
32
|
import pc from '@brillout/picocolors';
|
|
@@ -151,6 +151,9 @@ function setGlobalContext_isPrerendering() {
|
|
|
151
151
|
setIsProduction(true);
|
|
152
152
|
}
|
|
153
153
|
function setGlobalContext_isProduction(isProduction, tolerateContraditction = false) {
|
|
154
|
+
// TODO/now: try to remove globalObject.isProduction ?
|
|
155
|
+
// TODO/now: `rename tolerateContraditction tolerateContradiction`
|
|
156
|
+
tolerateContraditction = true;
|
|
154
157
|
if (debug.isActivated)
|
|
155
158
|
debug('setGlobalContext_isProduction()', { isProduction, tolerateContraditction });
|
|
156
159
|
if (globalObject.isProduction === undefined) {
|
|
@@ -201,7 +204,12 @@ async function initGlobalContext() {
|
|
|
201
204
|
const { isProduction } = globalObject;
|
|
202
205
|
assert(typeof isProduction === 'boolean');
|
|
203
206
|
if (!isProduction) {
|
|
204
|
-
|
|
207
|
+
if (isProcessSharedWithVite()) {
|
|
208
|
+
await globalObject.viteDevServerPromise;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
await updateUserFiles();
|
|
212
|
+
}
|
|
205
213
|
assert(globalObject.waitForUserFilesUpdate);
|
|
206
214
|
await globalObject.waitForUserFilesUpdate;
|
|
207
215
|
}
|
|
@@ -335,16 +343,27 @@ async function updateUserFiles() {
|
|
|
335
343
|
// Avoid race condition: abort if there is a new globalObject.viteDevServer (happens when vite.config.js is modified => Vite's dev server is fully reloaded).
|
|
336
344
|
viteDevServer !== globalObject.viteDevServer;
|
|
337
345
|
const { viteDevServer } = globalObject;
|
|
338
|
-
assert(viteDevServer);
|
|
339
346
|
let hasError = false;
|
|
340
347
|
let virtualFileExports;
|
|
341
348
|
let err;
|
|
342
|
-
|
|
343
|
-
|
|
349
|
+
if (viteDevServer) {
|
|
350
|
+
try {
|
|
351
|
+
virtualFileExports = await viteDevServer.ssrLoadModule(virtualFileIdEntryServer);
|
|
352
|
+
}
|
|
353
|
+
catch (err_) {
|
|
354
|
+
hasError = true;
|
|
355
|
+
err = err_;
|
|
356
|
+
}
|
|
344
357
|
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
358
|
+
else {
|
|
359
|
+
try {
|
|
360
|
+
// We don't directly use import() to workaround what seems to be a Vite HMR bug: using import() breaks the HMR of normal non-worker apps.
|
|
361
|
+
virtualFileExports = await __VIKE__DYNAMIC_IMPORT('virtual:vike:entry:server');
|
|
362
|
+
}
|
|
363
|
+
catch (err_) {
|
|
364
|
+
hasError = true;
|
|
365
|
+
err = err_;
|
|
366
|
+
}
|
|
348
367
|
}
|
|
349
368
|
if (isOutdated())
|
|
350
369
|
return { success: false };
|
|
@@ -370,7 +389,7 @@ async function updateUserFiles() {
|
|
|
370
389
|
async function setGlobalContext(virtualFileExports) {
|
|
371
390
|
debug('setGlobalContext()');
|
|
372
391
|
assert(!getVikeConfigErrorBuild());
|
|
373
|
-
const globalContext = await createGlobalContextShared(virtualFileExports, globalObject,
|
|
392
|
+
const globalContext = await createGlobalContextShared(virtualFileExports, globalObject, addGlobalContext, addGlobalContextTmp, addGlobalContextAsync);
|
|
374
393
|
assertV1Design(
|
|
375
394
|
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
376
395
|
globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
|
|
@@ -380,13 +399,13 @@ async function setGlobalContext(virtualFileExports) {
|
|
|
380
399
|
// Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
|
|
381
400
|
return globalContext;
|
|
382
401
|
}
|
|
383
|
-
async function
|
|
384
|
-
debug('
|
|
402
|
+
async function addGlobalContextTmp(globalContext) {
|
|
403
|
+
debug('addGlobalContextTmp()');
|
|
385
404
|
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
386
405
|
return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
|
|
387
406
|
}
|
|
388
|
-
function
|
|
389
|
-
debug('
|
|
407
|
+
function addGlobalContext(globalContext) {
|
|
408
|
+
debug('addGlobalContext()');
|
|
390
409
|
const { pageRoutes, onBeforeRouteHook } = loadPageRoutesSync(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
391
410
|
return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
|
|
392
411
|
}
|
|
@@ -396,23 +415,18 @@ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
|
|
|
396
415
|
_pageRoutes: pageRoutes,
|
|
397
416
|
_onBeforeRouteHook: onBeforeRouteHook,
|
|
398
417
|
};
|
|
399
|
-
const { viteDevServer, viteConfig,
|
|
418
|
+
const { viteDevServer, viteConfig, isPrerendering, isProduction } = globalObject;
|
|
400
419
|
assert(typeof isProduction === 'boolean');
|
|
401
420
|
if (!isProduction) {
|
|
402
|
-
assert(viteDevServer);
|
|
403
421
|
assert(globalContext); // main common requirement
|
|
404
|
-
assert(viteConfig);
|
|
405
|
-
assert(viteConfigRuntime);
|
|
406
422
|
assert(!isPrerendering);
|
|
407
423
|
return {
|
|
408
424
|
...globalContextBase,
|
|
409
|
-
...resolveBaseRuntime(viteConfigRuntime, globalContext.config),
|
|
410
425
|
_isProduction: false,
|
|
411
426
|
_isPrerendering: false,
|
|
412
427
|
assetsManifest: null,
|
|
413
428
|
_viteDevServer: viteDevServer,
|
|
414
429
|
viteConfig,
|
|
415
|
-
viteConfigRuntime,
|
|
416
430
|
};
|
|
417
431
|
}
|
|
418
432
|
else {
|
|
@@ -423,11 +437,9 @@ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
|
|
|
423
437
|
assert(assetsManifest);
|
|
424
438
|
const globalContextBase2 = {
|
|
425
439
|
...globalContextBase,
|
|
426
|
-
...resolveBaseRuntime(buildInfo.viteConfigRuntime, globalContext.config),
|
|
427
440
|
_isProduction: true,
|
|
428
441
|
assetsManifest,
|
|
429
442
|
_viteDevServer: null,
|
|
430
|
-
viteConfigRuntime: buildInfo.viteConfigRuntime,
|
|
431
443
|
_usesClientRouter: buildInfo.usesClientRouter,
|
|
432
444
|
};
|
|
433
445
|
if (isPrerendering) {
|
|
@@ -447,14 +459,45 @@ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
|
|
|
447
459
|
}
|
|
448
460
|
}
|
|
449
461
|
}
|
|
462
|
+
async function addGlobalContextAsync(globalContext) {
|
|
463
|
+
debug('addGlobalContextAsync()');
|
|
464
|
+
let { viteConfigRuntime, buildInfo } = globalObject;
|
|
465
|
+
if (!viteConfigRuntime) {
|
|
466
|
+
if (buildInfo) {
|
|
467
|
+
viteConfigRuntime = buildInfo.viteConfigRuntime;
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
if (!isProcessSharedWithVite()) {
|
|
471
|
+
if (!globalObject.isProduction) {
|
|
472
|
+
const rpc = getViteRPC();
|
|
473
|
+
viteConfigRuntime = await rpc.getViteConfigRuntimeRPC();
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
assert(false); // production => globalObject.buildInfo should be set
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
assert(false); // process shared with Vite => globalObject.viteConfigRuntime should be set
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
assert(viteConfigRuntime);
|
|
485
|
+
return {
|
|
486
|
+
viteConfigRuntime,
|
|
487
|
+
...resolveBaseRuntime(viteConfigRuntime, globalContext.config),
|
|
488
|
+
};
|
|
489
|
+
}
|
|
450
490
|
function clearGlobalContext() {
|
|
451
491
|
debug('clearGlobalContext()');
|
|
452
492
|
objectReplace(globalObject, getInitialGlobalObject(), ['buildEntryPrevious']);
|
|
453
493
|
}
|
|
454
494
|
function getInitialGlobalObject() {
|
|
455
|
-
|
|
495
|
+
const isProduction = getIsProductionStatic();
|
|
496
|
+
if (debug.isActivated)
|
|
497
|
+
debug('getInitialGlobalObject()', { isProduction });
|
|
456
498
|
const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
|
|
457
499
|
return {
|
|
500
|
+
isProduction,
|
|
458
501
|
viteDevServerPromise,
|
|
459
502
|
viteDevServerPromiseResolve,
|
|
460
503
|
};
|
|
@@ -465,3 +508,22 @@ function resolveBaseRuntime(viteConfigRuntime, config) {
|
|
|
465
508
|
const baseAssetsUnresolved = config.baseAssets ?? null;
|
|
466
509
|
return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
|
|
467
510
|
}
|
|
511
|
+
function getIsProductionStatic() {
|
|
512
|
+
// TODO/now add @ts-ignore comments
|
|
513
|
+
// @ts-ignore
|
|
514
|
+
if (!import.meta.env)
|
|
515
|
+
return undefined;
|
|
516
|
+
// @ts-ignore
|
|
517
|
+
const PROD = import.meta.env.PROD;
|
|
518
|
+
return PROD;
|
|
519
|
+
}
|
|
520
|
+
function isProcessSharedWithVite() {
|
|
521
|
+
const ret = globalThis.__VIKE__IS_PROCESS_SHARED_WITH_VITE;
|
|
522
|
+
if (globalObject.isProcessSharedWithVite !== undefined) {
|
|
523
|
+
assert(globalObject.isProcessSharedWithVite === ret);
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
globalObject.isProcessSharedWithVite = ret;
|
|
527
|
+
}
|
|
528
|
+
return ret;
|
|
529
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { getViteDevScript };
|
|
2
|
+
import { getViteRPC } from '../../../../utils/getViteRPC.js';
|
|
2
3
|
import { assert, assertUsage, assertWarning } from '../../utils.js';
|
|
3
4
|
import pc from '@brillout/picocolors';
|
|
4
5
|
const reachOutCTA = 'Create a new GitHub issue to discuss a solution.';
|
|
@@ -11,7 +12,13 @@ async function getViteDevScript(pageContext) {
|
|
|
11
12
|
const fakeHtmlBegin = '<html> <head>'; // White space to test whether user is using a minifier
|
|
12
13
|
const fakeHtmlEnd = '</head><body></body></html>';
|
|
13
14
|
let fakeHtml = fakeHtmlBegin + fakeHtmlEnd;
|
|
14
|
-
|
|
15
|
+
if (viteDevServer) {
|
|
16
|
+
fakeHtml = await viteDevServer.transformIndexHtml('/', fakeHtml);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const rpc = getViteRPC();
|
|
20
|
+
fakeHtml = await rpc.transformIndexHtmlRPC(fakeHtml);
|
|
21
|
+
}
|
|
15
22
|
assertUsage(!fakeHtml.includes('vite-plugin-pwa'), `The HTML transformer of ${pc.cyan('vite-plugin-pwa')} cannot be applied, see workaround at https://github.com/vikejs/vike/issues/388#issuecomment-1199280084`);
|
|
16
23
|
assertUsage(!fakeHtml.startsWith(fakeHtmlBegin.replace(' ', '')), `Vite plugins that minify the HTML cannot be applied, see https://github.com/vikejs/vike/issues/224`);
|
|
17
24
|
assertUsage(fakeHtml.startsWith(fakeHtmlBegin) && fakeHtml.endsWith(fakeHtmlEnd), `You are using a Vite Plugin that transforms the HTML in a way that conflicts with Vike. ${reachOutCTA}`);
|
|
@@ -41,24 +41,12 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
41
41
|
pages: {
|
|
42
42
|
[k: string]: import("../../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
43
43
|
};
|
|
44
|
-
} & ({
|
|
44
|
+
} & (({
|
|
45
45
|
_isProduction: false;
|
|
46
46
|
_isPrerendering: false;
|
|
47
47
|
assetsManifest: null;
|
|
48
|
-
_viteDevServer: import("vite").ViteDevServer;
|
|
49
|
-
viteConfig: import("vite").ResolvedConfig;
|
|
50
|
-
viteConfigRuntime: {
|
|
51
|
-
root: string;
|
|
52
|
-
build: {
|
|
53
|
-
outDir: string;
|
|
54
|
-
};
|
|
55
|
-
_baseViteOriginal: string;
|
|
56
|
-
vitePluginServerEntry: {
|
|
57
|
-
inject: boolean | undefined;
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
baseServer: string;
|
|
61
|
-
baseAssets: string;
|
|
48
|
+
_viteDevServer: import("vite").ViteDevServer | undefined;
|
|
49
|
+
viteConfig: import("vite").ResolvedConfig | undefined;
|
|
62
50
|
isClientSide: false;
|
|
63
51
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
64
52
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -68,19 +56,7 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
68
56
|
_isProduction: true;
|
|
69
57
|
assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
|
|
70
58
|
_viteDevServer: null;
|
|
71
|
-
viteConfigRuntime: {
|
|
72
|
-
root: string;
|
|
73
|
-
build: {
|
|
74
|
-
outDir: string;
|
|
75
|
-
};
|
|
76
|
-
_baseViteOriginal: string;
|
|
77
|
-
vitePluginServerEntry: {
|
|
78
|
-
inject: boolean | undefined;
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
59
|
_usesClientRouter: boolean;
|
|
82
|
-
baseServer: string;
|
|
83
|
-
baseAssets: string;
|
|
84
60
|
isClientSide: false;
|
|
85
61
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
86
62
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -90,6 +66,13 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
90
66
|
_isProduction: true;
|
|
91
67
|
assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
|
|
92
68
|
_viteDevServer: null;
|
|
69
|
+
_usesClientRouter: boolean;
|
|
70
|
+
isClientSide: false;
|
|
71
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
72
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
73
|
+
}) & {
|
|
74
|
+
baseServer: string;
|
|
75
|
+
baseAssets: string;
|
|
93
76
|
viteConfigRuntime: {
|
|
94
77
|
root: string;
|
|
95
78
|
build: {
|
|
@@ -100,12 +83,6 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
100
83
|
inject: boolean | undefined;
|
|
101
84
|
};
|
|
102
85
|
};
|
|
103
|
-
_usesClientRouter: boolean;
|
|
104
|
-
baseServer: string;
|
|
105
|
-
baseAssets: string;
|
|
106
|
-
isClientSide: false;
|
|
107
|
-
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
108
|
-
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
109
86
|
});
|
|
110
87
|
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
111
88
|
_baseServer: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { getPageAssets };
|
|
2
2
|
export { setResolveClientEntriesDev };
|
|
3
3
|
export { resolveIncludeAssetsImportedByServer };
|
|
4
|
-
import { assert, prependBase, toPosixPath, unique, getGlobalObject } from '../utils.js';
|
|
4
|
+
import { assert, prependBase, toPosixPath, unique, getGlobalObject, getViteRPC } from '../utils.js';
|
|
5
5
|
import { retrieveAssetsDev } from './getPageAssets/retrieveAssetsDev.js';
|
|
6
6
|
import { retrieveAssetsProd } from './getPageAssets/retrieveAssetsProd.js';
|
|
7
7
|
import { inferMediaType } from './inferMediaType.js';
|
|
@@ -14,18 +14,11 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
|
14
14
|
const globalContext = pageContext._globalContext;
|
|
15
15
|
const { _isProduction: isProduction } = globalContext;
|
|
16
16
|
const isDev = !isProduction;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
assetUrls = await retrieveAssetsDev(clientDependencies, viteDevServer);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
const { assetsManifest } = globalContext;
|
|
26
|
-
clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, assetsManifest));
|
|
27
|
-
assetUrls = retrieveAssetsProd(clientDependencies, assetsManifest, resolveIncludeAssetsImportedByServer(pageContext._globalContext.config));
|
|
28
|
-
}
|
|
17
|
+
const { assetUrls, clientEntriesSrc } = isDev
|
|
18
|
+
? !globalContext._viteDevServer
|
|
19
|
+
? await getViteRPC().retrievePageAssetsDevRPC(clientDependencies, clientEntries)
|
|
20
|
+
: await retrievePageAssetsDev(globalContext._viteDevServer, clientDependencies, clientEntries)
|
|
21
|
+
: retrievePageAssetsProd(globalContext.assetsManifest, clientDependencies, clientEntries, resolveIncludeAssetsImportedByServer(globalContext.config));
|
|
29
22
|
let pageAssets = [];
|
|
30
23
|
unique([...clientEntriesSrc, ...assetUrls]).forEach((src) => {
|
|
31
24
|
const { mediaType = null, assetType = null } = inferMediaType(src) || {};
|
|
@@ -59,6 +52,16 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
|
59
52
|
await sortPageAssetsForEarlyHintsHeader(pageAssets, isProduction);
|
|
60
53
|
return pageAssets;
|
|
61
54
|
}
|
|
55
|
+
async function retrievePageAssetsDev(viteDevServer, clientDependencies, clientEntries) {
|
|
56
|
+
const clientEntriesSrc = clientEntries.map((clientEntry) => globalObject.resolveClientEntriesDev(clientEntry, viteDevServer));
|
|
57
|
+
const assetUrls = await retrieveAssetsDev(clientDependencies, viteDevServer);
|
|
58
|
+
return { clientEntriesSrc, assetUrls };
|
|
59
|
+
}
|
|
60
|
+
function retrievePageAssetsProd(assetsManifest, clientDependencies, clientEntries, includeAssetsImportedByServer) {
|
|
61
|
+
const clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, assetsManifest));
|
|
62
|
+
const assetUrls = retrieveAssetsProd(clientDependencies, assetsManifest, resolveIncludeAssetsImportedByServer(includeAssetsImportedByServer));
|
|
63
|
+
return { clientEntriesSrc, assetUrls };
|
|
64
|
+
}
|
|
62
65
|
function resolveClientEntriesProd(clientEntry, assetsManifest) {
|
|
63
66
|
const { manifestEntry } = getManifestEntry(clientEntry, assetsManifest);
|
|
64
67
|
assert(manifestEntry.isEntry || manifestEntry.isDynamicEntry || clientEntry.endsWith('.css'), { clientEntry });
|
|
@@ -56,24 +56,12 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
56
56
|
pages: {
|
|
57
57
|
[k: string]: import("../../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
58
58
|
};
|
|
59
|
-
} & ({
|
|
59
|
+
} & (({
|
|
60
60
|
_isProduction: false;
|
|
61
61
|
_isPrerendering: false;
|
|
62
62
|
assetsManifest: null;
|
|
63
|
-
_viteDevServer: import("vite").ViteDevServer;
|
|
64
|
-
viteConfig: import("vite").ResolvedConfig;
|
|
65
|
-
viteConfigRuntime: {
|
|
66
|
-
root: string;
|
|
67
|
-
build: {
|
|
68
|
-
outDir: string;
|
|
69
|
-
};
|
|
70
|
-
_baseViteOriginal: string;
|
|
71
|
-
vitePluginServerEntry: {
|
|
72
|
-
inject: boolean | undefined;
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
baseServer: string;
|
|
76
|
-
baseAssets: string;
|
|
63
|
+
_viteDevServer: import("vite").ViteDevServer | undefined;
|
|
64
|
+
viteConfig: import("vite").ResolvedConfig | undefined;
|
|
77
65
|
isClientSide: false;
|
|
78
66
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
79
67
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -83,19 +71,7 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
83
71
|
_isProduction: true;
|
|
84
72
|
assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
|
|
85
73
|
_viteDevServer: null;
|
|
86
|
-
viteConfigRuntime: {
|
|
87
|
-
root: string;
|
|
88
|
-
build: {
|
|
89
|
-
outDir: string;
|
|
90
|
-
};
|
|
91
|
-
_baseViteOriginal: string;
|
|
92
|
-
vitePluginServerEntry: {
|
|
93
|
-
inject: boolean | undefined;
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
74
|
_usesClientRouter: boolean;
|
|
97
|
-
baseServer: string;
|
|
98
|
-
baseAssets: string;
|
|
99
75
|
isClientSide: false;
|
|
100
76
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
101
77
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -105,6 +81,13 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
105
81
|
_isProduction: true;
|
|
106
82
|
assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
|
|
107
83
|
_viteDevServer: null;
|
|
84
|
+
_usesClientRouter: boolean;
|
|
85
|
+
isClientSide: false;
|
|
86
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
87
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
88
|
+
}) & {
|
|
89
|
+
baseServer: string;
|
|
90
|
+
baseAssets: string;
|
|
108
91
|
viteConfigRuntime: {
|
|
109
92
|
root: string;
|
|
110
93
|
build: {
|
|
@@ -115,12 +98,6 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
115
98
|
inject: boolean | undefined;
|
|
116
99
|
};
|
|
117
100
|
};
|
|
118
|
-
_usesClientRouter: boolean;
|
|
119
|
-
baseServer: string;
|
|
120
|
-
baseAssets: string;
|
|
121
|
-
isClientSide: false;
|
|
122
|
-
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
123
|
-
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
124
101
|
});
|
|
125
102
|
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
126
103
|
_baseServer: string;
|
|
@@ -191,24 +168,12 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
191
168
|
pages: {
|
|
192
169
|
[k: string]: import("../../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
193
170
|
};
|
|
194
|
-
} & ({
|
|
171
|
+
} & (({
|
|
195
172
|
_isProduction: false;
|
|
196
173
|
_isPrerendering: false;
|
|
197
174
|
assetsManifest: null;
|
|
198
|
-
_viteDevServer: import("vite").ViteDevServer;
|
|
199
|
-
viteConfig: import("vite").ResolvedConfig;
|
|
200
|
-
viteConfigRuntime: {
|
|
201
|
-
root: string;
|
|
202
|
-
build: {
|
|
203
|
-
outDir: string;
|
|
204
|
-
};
|
|
205
|
-
_baseViteOriginal: string;
|
|
206
|
-
vitePluginServerEntry: {
|
|
207
|
-
inject: boolean | undefined;
|
|
208
|
-
};
|
|
209
|
-
};
|
|
210
|
-
baseServer: string;
|
|
211
|
-
baseAssets: string;
|
|
175
|
+
_viteDevServer: import("vite").ViteDevServer | undefined;
|
|
176
|
+
viteConfig: import("vite").ResolvedConfig | undefined;
|
|
212
177
|
isClientSide: false;
|
|
213
178
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
214
179
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -218,19 +183,7 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
218
183
|
_isProduction: true;
|
|
219
184
|
assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
|
|
220
185
|
_viteDevServer: null;
|
|
221
|
-
viteConfigRuntime: {
|
|
222
|
-
root: string;
|
|
223
|
-
build: {
|
|
224
|
-
outDir: string;
|
|
225
|
-
};
|
|
226
|
-
_baseViteOriginal: string;
|
|
227
|
-
vitePluginServerEntry: {
|
|
228
|
-
inject: boolean | undefined;
|
|
229
|
-
};
|
|
230
|
-
};
|
|
231
186
|
_usesClientRouter: boolean;
|
|
232
|
-
baseServer: string;
|
|
233
|
-
baseAssets: string;
|
|
234
187
|
isClientSide: false;
|
|
235
188
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
236
189
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -240,6 +193,13 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
240
193
|
_isProduction: true;
|
|
241
194
|
assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
|
|
242
195
|
_viteDevServer: null;
|
|
196
|
+
_usesClientRouter: boolean;
|
|
197
|
+
isClientSide: false;
|
|
198
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
199
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
200
|
+
}) & {
|
|
201
|
+
baseServer: string;
|
|
202
|
+
baseAssets: string;
|
|
243
203
|
viteConfigRuntime: {
|
|
244
204
|
root: string;
|
|
245
205
|
build: {
|
|
@@ -250,12 +210,6 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
250
210
|
inject: boolean | undefined;
|
|
251
211
|
};
|
|
252
212
|
};
|
|
253
|
-
_usesClientRouter: boolean;
|
|
254
|
-
baseServer: string;
|
|
255
|
-
baseAssets: string;
|
|
256
|
-
isClientSide: false;
|
|
257
|
-
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
258
|
-
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
259
213
|
});
|
|
260
214
|
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
261
215
|
_baseServer: string;
|
|
@@ -46,24 +46,12 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
46
46
|
pages: {
|
|
47
47
|
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
48
48
|
};
|
|
49
|
-
} & ({
|
|
49
|
+
} & (({
|
|
50
50
|
_isProduction: false;
|
|
51
51
|
_isPrerendering: false;
|
|
52
52
|
assetsManifest: null;
|
|
53
|
-
_viteDevServer: import("vite").ViteDevServer;
|
|
54
|
-
viteConfig: import("vite").ResolvedConfig;
|
|
55
|
-
viteConfigRuntime: {
|
|
56
|
-
root: string;
|
|
57
|
-
build: {
|
|
58
|
-
outDir: string;
|
|
59
|
-
};
|
|
60
|
-
_baseViteOriginal: string;
|
|
61
|
-
vitePluginServerEntry: {
|
|
62
|
-
inject: boolean | undefined;
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
baseServer: string;
|
|
66
|
-
baseAssets: string;
|
|
53
|
+
_viteDevServer: import("vite").ViteDevServer | undefined;
|
|
54
|
+
viteConfig: import("vite").ResolvedConfig | undefined;
|
|
67
55
|
isClientSide: false;
|
|
68
56
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
69
57
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -73,19 +61,7 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
73
61
|
_isProduction: true;
|
|
74
62
|
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
|
|
75
63
|
_viteDevServer: null;
|
|
76
|
-
viteConfigRuntime: {
|
|
77
|
-
root: string;
|
|
78
|
-
build: {
|
|
79
|
-
outDir: string;
|
|
80
|
-
};
|
|
81
|
-
_baseViteOriginal: string;
|
|
82
|
-
vitePluginServerEntry: {
|
|
83
|
-
inject: boolean | undefined;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
64
|
_usesClientRouter: boolean;
|
|
87
|
-
baseServer: string;
|
|
88
|
-
baseAssets: string;
|
|
89
65
|
isClientSide: false;
|
|
90
66
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
91
67
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
@@ -95,6 +71,13 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
95
71
|
_isProduction: true;
|
|
96
72
|
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
|
|
97
73
|
_viteDevServer: null;
|
|
74
|
+
_usesClientRouter: boolean;
|
|
75
|
+
isClientSide: false;
|
|
76
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
77
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
78
|
+
}) & {
|
|
79
|
+
baseServer: string;
|
|
80
|
+
baseAssets: string;
|
|
98
81
|
viteConfigRuntime: {
|
|
99
82
|
root: string;
|
|
100
83
|
build: {
|
|
@@ -105,12 +88,6 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
105
88
|
inject: boolean | undefined;
|
|
106
89
|
};
|
|
107
90
|
};
|
|
108
|
-
_usesClientRouter: boolean;
|
|
109
|
-
baseServer: string;
|
|
110
|
-
baseAssets: string;
|
|
111
|
-
isClientSide: false;
|
|
112
|
-
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
113
|
-
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
114
91
|
});
|
|
115
92
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
116
93
|
_baseServer: string;
|
|
@@ -22,6 +22,7 @@ import { resolveClientEntriesDev } from './shared/resolveClientEntriesDev.js';
|
|
|
22
22
|
import { pluginWorkaroundCssModuleHmr } from './plugins/pluginWorkaroundCssModuleHmr.js';
|
|
23
23
|
import { pluginWorkaroundVite6HmrRegression } from './plugins/pluginWorkaroundVite6HmrRegression.js';
|
|
24
24
|
import { pluginReplaceConstants } from './plugins/pluginReplaceConstants.js';
|
|
25
|
+
import { pluginViteRPC } from './plugins/pluginViteRPC.js';
|
|
25
26
|
// We don't call this in ./onLoad.ts to avoid a cyclic dependency with utils.ts
|
|
26
27
|
setResolveClientEntriesDev(resolveClientEntriesDev);
|
|
27
28
|
// Return `PluginInterop` instead of `Plugin` to avoid type mismatch upon different Vite versions
|
|
@@ -41,6 +42,7 @@ function plugin(vikeVitePluginOptions = {}) {
|
|
|
41
42
|
pluginWorkaroundCssModuleHmr(),
|
|
42
43
|
pluginWorkaroundVite6HmrRegression(),
|
|
43
44
|
pluginReplaceConstants(),
|
|
45
|
+
pluginViteRPC(),
|
|
44
46
|
];
|
|
45
47
|
Object.assign(plugins, { _vikeVitePluginOptions: vikeVitePluginOptions });
|
|
46
48
|
return plugins;
|
|
@@ -11,7 +11,7 @@ declare function handleAssetsManifest_assertUsageCssTarget(config: ResolvedConfi
|
|
|
11
11
|
declare function handleAssetsManifest_getBuildConfig(config: UserConfig): Promise<{
|
|
12
12
|
readonly ssrEmitAssets: true | undefined;
|
|
13
13
|
readonly cssMinify: "esbuild" | undefined;
|
|
14
|
-
readonly manifest: "
|
|
14
|
+
readonly manifest: ".vite/manifest.json";
|
|
15
15
|
readonly copyPublicDir: boolean | undefined;
|
|
16
16
|
}>;
|
|
17
17
|
declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment | undefined, options: {
|
|
@@ -295,8 +295,8 @@ async function handleAssetsManifest_getBuildConfig(config) {
|
|
|
295
295
|
};
|
|
296
296
|
}
|
|
297
297
|
async function handleAssetsManifest(config, viteEnv, options, bundle) {
|
|
298
|
-
const
|
|
299
|
-
if (
|
|
298
|
+
const isSsrEnv = isViteServerBuild_onlySsrEnv(config, viteEnv);
|
|
299
|
+
if (isSsrEnv) {
|
|
300
300
|
assert(!assetsJsonFilePath);
|
|
301
301
|
const outDirs = getOutDirs(config, viteEnv);
|
|
302
302
|
assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
|
|
@@ -310,7 +310,7 @@ async function handleAssetsManifest(config, viteEnv, options, bundle) {
|
|
|
310
310
|
// - Also in some other server builds such as dist/vercel/ from vike-vercel
|
|
311
311
|
// - Don't replace it in dist/rsc/ from vike-react-rsc since __VITE_ASSETS_MANIFEST__ doesn't exist there
|
|
312
312
|
const noop = await set_macro_ASSETS_MANIFEST(assetsJsonFilePath, bundle, outDir);
|
|
313
|
-
if (
|
|
313
|
+
if (isSsrEnv)
|
|
314
314
|
assert(!noop); // dist/server should always contain __VITE_ASSETS_MANIFEST__
|
|
315
315
|
}
|
|
316
316
|
}
|
|
@@ -4,7 +4,7 @@ export { analyzeClientEntries };
|
|
|
4
4
|
export { manifestTempFile };
|
|
5
5
|
import type { ResolvedConfig, Plugin } from 'vite';
|
|
6
6
|
import type { PageConfigBuildTime } from '../../../../types/PageConfig.js';
|
|
7
|
-
declare const manifestTempFile = "
|
|
7
|
+
declare const manifestTempFile = ".vite/manifest.json";
|
|
8
8
|
declare function pluginBuildConfig(): Plugin[];
|
|
9
9
|
declare function analyzeClientEntries(pageConfigs: PageConfigBuildTime[], config: ResolvedConfig): {
|
|
10
10
|
hasClientRouting: boolean;
|
|
@@ -14,7 +14,8 @@ import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
|
|
|
14
14
|
import { resolveOutDir } from '../../shared/getOutDirs.js';
|
|
15
15
|
import { handleAssetsManifest_assertUsageCssCodeSplit, handleAssetsManifest_getBuildConfig, } from './handleAssetsManifest.js';
|
|
16
16
|
import { resolveIncludeAssetsImportedByServer } from '../../../runtime/renderPage/getPageAssets.js';
|
|
17
|
-
|
|
17
|
+
// TODO/now: stop setting `manifest` altogether and use the resolved value instead? So that other tools can easily read the manifest (e.g. @cloudflare/plugin-vite reads the manifest).
|
|
18
|
+
const manifestTempFile = '.vite/manifest.json';
|
|
18
19
|
function pluginBuildConfig() {
|
|
19
20
|
let config;
|
|
20
21
|
return [
|