vike 0.4.267 → 0.4.268-commit-ca58695
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/RenderErrorPage.js +2 -2
- package/abort.js +2 -2
- package/dist/client/__internal/index.d.ts +3 -0
- package/dist/client/__internal/index.js +4 -0
- package/dist/client/runtime-client-routing/createPageContextClient.d.ts +5 -0
- package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +5 -0
- package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +28 -2
- package/dist/client/runtime-client-routing/getPageContextFromHooks.js +5 -5
- package/dist/client/runtime-client-routing/renderPageClient.d.ts +490 -10
- package/dist/client/runtime-client-routing/renderPageClient.js +149 -43
- package/dist/client/runtime-client-routing/streamedValues.d.ts +5 -0
- package/dist/client/runtime-client-routing/streamedValues.js +23 -0
- package/dist/client/runtime-server-routing/createPageContextClient.d.ts +5 -0
- package/dist/client/runtime-server-routing/entry.js +1 -1
- package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +5 -0
- package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +5 -0
- package/dist/client/shared/getGlobalContextClientInternalShared.js +2 -0
- package/dist/client/shared/getJsonSerializedInHtml.d.ts +2 -2
- package/dist/client/shared/getJsonSerializedInHtml.js +9 -6
- package/dist/client/shared/loadPageConfigsLazyClientSide.js +0 -4
- package/dist/client/shared/removeFoucBuster.js +14 -3
- package/dist/client/shared/streamedValues/asyncIterable.d.ts +4 -0
- package/dist/client/shared/streamedValues/asyncIterable.js +26 -0
- package/dist/client/shared/streamedValues/lines.d.ts +11 -0
- package/dist/client/shared/streamedValues/lines.js +19 -0
- package/dist/client/shared/streamedValues/promise.d.ts +4 -0
- package/dist/client/shared/streamedValues/promise.js +19 -0
- package/dist/client/shared/streamedValues/readableStream.d.ts +4 -0
- package/dist/client/shared/streamedValues/readableStream.js +44 -0
- package/dist/client/shared/streamedValues/registry.d.ts +21 -0
- package/dist/client/shared/streamedValues/registry.js +40 -0
- package/dist/client/shared/streamedValues.d.ts +7 -0
- package/dist/client/shared/streamedValues.js +82 -0
- package/dist/node/api/dev.js +15 -1
- package/dist/node/api/resolveViteConfigUser.js +2 -2
- package/dist/node/api/serverEntryDev.d.ts +10 -0
- package/dist/node/api/serverEntryDev.js +125 -0
- package/dist/node/createDevMiddleware.js +12 -0
- package/dist/node/prerender/resolvePrerenderConfig.d.ts +1 -1
- package/dist/node/prerender/resolvePrerenderConfig.js +4 -1
- package/dist/node/prerender/runPrerender.d.ts +18 -18
- package/dist/node/prerender/runPrerender.js +61 -16
- package/dist/node/vite/assertEnvVite.js +1 -1
- package/dist/node/vite/index.js +2 -0
- package/dist/node/vite/plugins/build/handleAssetsManifest.js +6 -2
- package/dist/node/vite/plugins/build/pluginBuildApp.js +25 -26
- package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +2 -2
- package/dist/node/vite/plugins/build/pluginBuildConfig.js +25 -17
- package/dist/node/vite/plugins/build/pluginDistFileNames.js +70 -50
- package/dist/node/vite/plugins/build/pluginEnvironmentEntries.d.ts +6 -0
- package/dist/node/vite/plugins/build/pluginEnvironmentEntries.js +71 -0
- package/dist/node/vite/plugins/build/pluginSuppressRollupWarning.js +19 -17
- package/dist/node/vite/plugins/pluginCommon.js +10 -7
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.d.ts +2 -2
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +6 -2
- package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +6 -4
- package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.d.ts +3 -0
- package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.js +28 -2
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.d.ts +1 -1
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.js +22 -11
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginWrapServerFile.d.ts +4 -0
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginWrapServerFile.js +29 -0
- package/dist/node/vite/plugins/pluginUniversalDeploy.js +29 -5
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -1
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +29 -12
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +3 -2
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +7 -7
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +10 -6
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +5 -11
- package/dist/node/vite/plugins/pluginVirtualFiles.js +20 -0
- package/dist/node/vite/shared/addSsrMiddleware.js +11 -27
- package/dist/node/vite/shared/findPageFiles.d.ts +1 -1
- package/dist/node/vite/shared/findPageFiles.js +1 -11
- package/dist/node/vite/shared/getAssetsDir.d.ts +3 -2
- package/dist/node/vite/shared/getAssetsDir.js +3 -3
- package/dist/node/vite/shared/isViteCli.d.ts +3 -3
- package/dist/node/vite/shared/isViteCli.js +80 -84
- package/dist/node/vite/shared/isViteServerSide.js +2 -7
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +6 -4
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +17 -6
- package/dist/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +9 -2
- package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +5 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal.js +86 -13
- package/dist/server/__internal/fetch-deprecated.d.ts +2 -0
- package/dist/server/__internal/fetch-deprecated.js +6 -0
- package/dist/server/__internal/fetch.d.ts +9 -0
- package/dist/server/__internal/fetch.js +5 -0
- package/dist/server/__internal/index.d.ts +4 -0
- package/dist/server/__internal/index.js +8 -0
- package/dist/server/createPageRenderer.d.ts +2 -2
- package/dist/server/createPageRenderer.js +2 -2
- package/dist/server/runtime/createDevMiddleware.js +3 -1
- package/dist/server/runtime/globalContext.d.ts +69 -10
- package/dist/server/runtime/globalContext.js +35 -2
- package/dist/server/runtime/index.d.ts +1 -1
- package/dist/server/runtime/index.js +1 -1
- package/dist/server/runtime/renderPageServer/analyzePage.js +3 -3
- package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +20 -9
- package/dist/server/runtime/renderPageServer/createHttpResponse.js +34 -21
- package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +13 -23
- package/dist/server/runtime/renderPageServer/csp.d.ts +2 -1
- package/dist/server/runtime/renderPageServer/csp.js +2 -1
- package/dist/server/runtime/renderPageServer/execHookOnError.js +1 -1
- package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.d.ts +9 -0
- package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.js +21 -9
- package/dist/server/runtime/renderPageServer/getHttpResponseBody.d.ts +2 -2
- package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +19 -12
- package/dist/server/runtime/renderPageServer/getPageContextJson.d.ts +8 -0
- package/dist/server/runtime/renderPageServer/getPageContextJson.js +47 -0
- package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.d.ts +2 -0
- package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.js +1 -1
- package/dist/server/runtime/renderPageServer/handlePageContextRequestUrl.js +2 -2
- package/dist/server/runtime/renderPageServer/headersResponse.d.ts +11 -2
- package/dist/server/runtime/renderPageServer/headersResponse.js +22 -2
- package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +5 -4
- package/dist/server/runtime/renderPageServer/html/injectAssets.d.ts +3 -2
- package/dist/server/runtime/renderPageServer/html/injectAssets.js +7 -1
- package/dist/server/runtime/renderPageServer/html/renderHtml.js +4 -2
- package/dist/server/runtime/renderPageServer/html/serializeContext.d.ts +5 -1
- package/dist/server/runtime/renderPageServer/html/serializeContext.js +12 -9
- package/dist/server/runtime/renderPageServer/html/stream.d.ts +13 -6
- package/dist/server/runtime/renderPageServer/html/stream.js +135 -32
- package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.d.ts +30 -0
- package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.js +92 -0
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +10 -14
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.js +5 -1
- package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.d.ts +15 -0
- package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.js +61 -0
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +320 -55
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +21 -12
- package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.js +12 -0
- package/dist/server/runtime/renderPageServer/streamedValues/lines.d.ts +10 -0
- package/dist/server/runtime/renderPageServer/streamedValues/lines.js +49 -0
- package/dist/server/runtime/renderPageServer/streamedValues/promise.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/streamedValues/promise.js +14 -0
- package/dist/server/runtime/renderPageServer/streamedValues/pump.d.ts +10 -0
- package/dist/server/runtime/renderPageServer/streamedValues/pump.js +67 -0
- package/dist/server/runtime/renderPageServer/streamedValues/readableStream.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/streamedValues/readableStream.js +12 -0
- package/dist/server/runtime/renderPageServer/streamedValues/registry.d.ts +28 -0
- package/dist/server/runtime/renderPageServer/streamedValues/registry.js +33 -0
- package/dist/server/runtime/renderPageServer.d.ts +65 -18
- package/dist/server/runtime/renderPageServer.js +33 -62
- package/dist/server/runtime/universal-middleware/core.d.ts +25 -0
- package/dist/server/runtime/universal-middleware/core.js +167 -0
- package/dist/server/runtime/universal-middleware/deprecated-export.d.ts +3 -0
- package/dist/server/runtime/universal-middleware/deprecated-export.js +10 -0
- package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.d.ts +15 -0
- package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.js +51 -0
- package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.d.ts +9 -0
- package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.js +22 -0
- package/dist/shared-server-client/createGlobalContextShared.d.ts +8 -0
- package/dist/shared-server-client/createGlobalContextShared.js +2 -1
- package/dist/shared-server-client/getPageContextPublicShared.js +1 -3
- package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.d.ts +8 -0
- package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js +17 -7
- package/dist/shared-server-client/hooks/execHook.d.ts +1 -1
- package/dist/shared-server-client/hooks/execHook.js +2 -2
- package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.js +2 -0
- package/dist/shared-server-client/route/abort.d.ts +1 -1
- package/dist/shared-server-client/route/abort.js +4 -2
- package/dist/shared-server-client/streamedValues.d.ts +22 -0
- package/dist/shared-server-client/streamedValues.js +24 -0
- package/dist/shared-server-node/vike-environments.d.ts +4 -0
- package/dist/shared-server-node/vike-environments.js +10 -0
- package/dist/shared-server-node/virtualFileId.d.ts +7 -5
- package/dist/shared-server-node/virtualFileId.js +42 -42
- package/dist/types/Config.d.ts +11 -3
- package/dist/types/GlobalContext.d.ts +3 -3
- package/dist/types/PageConfig.d.ts +13 -5
- package/dist/types/PageContext.d.ts +18 -10
- package/dist/types/PageContext.js +1 -0
- package/dist/types/Server.d.ts +1 -1
- package/dist/types/VikeNamespace.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/utils/PROJECT_VERSION.js +1 -1
- package/dist/utils/assertViteVersion.d.ts +1 -3
- package/dist/utils/assertViteVersion.js +6 -9
- package/dist/utils/catchInfiniteLoop.js +33 -11
- package/dist/utils/deepEqual.d.ts +2 -1
- package/dist/utils/deepEqual.js +21 -6
- package/dist/utils/getContentTypeFromUrl.d.ts +2 -0
- package/dist/utils/getContentTypeFromUrl.js +39 -0
- package/dist/utils/injectRollupInputs.d.ts +2 -2
- package/dist/utils/injectRollupInputs.js +2 -2
- package/dist/utils/installUncaughtErrorHandlers.js +9 -0
- package/dist/utils/isDev.js +2 -7
- package/dist/utils/parseUrl-extras.js +4 -0
- package/fetch.js +2 -2
- package/modifyUrl.js +2 -2
- package/package.json +42 -26
- package/routing.js +2 -2
- package/universal-middleware.js +2 -2
- package/vike-server.d.ts +14 -0
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginUnwrapProdOptions.d.ts +0 -4
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginUnwrapProdOptions.js +0 -22
- package/dist/server/runtime/fetch.d.ts +0 -10
- package/dist/server/runtime/fetch.js +0 -5
- package/dist/server/runtime/universal-middleware.d.ts +0 -10
- package/dist/server/runtime/universal-middleware.js +0 -27
- package/dist/shared-server-client/addIs404ToPageProps.d.ts +0 -2
- package/dist/shared-server-client/addIs404ToPageProps.js +0 -17
|
@@ -6,11 +6,13 @@ import { pluginServerEntryInject } from './pluginUniversalDeploy/pluginServerEnt
|
|
|
6
6
|
import { getDeployConfig } from './pluginUniversalDeploy/getDeployConfig.js';
|
|
7
7
|
import { pluginCommon } from './pluginUniversalDeploy/common.js';
|
|
8
8
|
import { hasVikeServerOrVikePhoton } from './pluginUniversalDeploy/detectDeprecated.js';
|
|
9
|
-
import { getServerConfig } from './pluginUniversalDeploy/getServerConfig.js';
|
|
9
|
+
import { getServerConfig, getServerEntryFilePath_ifDev } from './pluginUniversalDeploy/getServerConfig.js';
|
|
10
10
|
import { pluginServerEntryAlias } from './pluginUniversalDeploy/pluginServerEntryAlias.js';
|
|
11
|
-
import {
|
|
11
|
+
import { pluginWrapServerFile } from './pluginUniversalDeploy/pluginWrapServerFile.js';
|
|
12
|
+
import { getViteCliCommand } from '../shared/isViteCli.js';
|
|
12
13
|
import { unique } from '../../../utils/unique.js';
|
|
13
14
|
import { assertUsage } from '../../../utils/assert.js';
|
|
15
|
+
import pc from '@brillout/picocolors';
|
|
14
16
|
import '../assertEnvVite.js';
|
|
15
17
|
function pluginUniversalDeploy(vikeConfig) {
|
|
16
18
|
if (hasVikeServerOrVikePhoton(vikeConfig))
|
|
@@ -25,9 +27,31 @@ function pluginUniversalDeploy(vikeConfig) {
|
|
|
25
27
|
}),
|
|
26
28
|
precompress(vikeConfig.config.precompress),
|
|
27
29
|
];
|
|
28
|
-
const { serverEntryVike, serverEntryId, serverFilePath } = serverConfig;
|
|
30
|
+
const { serverEntryVike, serverEntryId, serverFilePath, serverEntryFilePath } = serverConfig;
|
|
31
|
+
const isServerEntryDev = !!getServerEntryFilePath_ifDev(vikeConfig);
|
|
32
|
+
// Vite's CLI always starts Vite's own server => it can't run +serverEntry.js
|
|
33
|
+
assertUsage(!(isServerEntryDev && getViteCliCommand() === 'dev'), `${pc.cyan('+serverEntry.js')} (without ${pc.cyan('+server.js')}) requires ${pc.cyan('$ vike dev')} instead of ${pc.cyan('$ vite dev')} (because Vite's CLI always starts Vite's own server)`);
|
|
29
34
|
return [
|
|
30
|
-
...
|
|
35
|
+
...(!serverEntryFilePath
|
|
36
|
+
? universalDeploy({ node: { precompress: vikeConfig.config.precompress } })
|
|
37
|
+
: [
|
|
38
|
+
// +serverEntry.js is the production server entry dist/server/index.mjs (instead of @universal-deploy/node's server)
|
|
39
|
+
// https://vike.dev/serverEntry
|
|
40
|
+
...universalDeploy({
|
|
41
|
+
entry: {
|
|
42
|
+
id: serverEntryFilePath,
|
|
43
|
+
// Without +server.js, +serverEntry.js handles requests itself (it calls renderPage() instead of using vike:server) and `$ vike dev` runs it
|
|
44
|
+
catchAll: !isServerEntryDev,
|
|
45
|
+
},
|
|
46
|
+
}),
|
|
47
|
+
precompress(vikeConfig.config.precompress),
|
|
48
|
+
resolveTargets((targets) => {
|
|
49
|
+
const target = targets[0];
|
|
50
|
+
assertUsage(target === undefined, `+serverEntry cannot be used with ${target} (because it uses its own server entry)`);
|
|
51
|
+
}),
|
|
52
|
+
// dist/server/index.mjs loads dist/server/entry.mjs
|
|
53
|
+
pluginServerEntryInject(serverEntryFilePath),
|
|
54
|
+
]),
|
|
31
55
|
{
|
|
32
56
|
name: 'vike:pluginUniversalDeploy:entries',
|
|
33
57
|
config() {
|
|
@@ -55,6 +79,6 @@ function pluginUniversalDeploy(vikeConfig) {
|
|
|
55
79
|
},
|
|
56
80
|
pluginServerEntryInject(serverFilePath ?? serverEntryId),
|
|
57
81
|
pluginServerEntryAlias(serverFilePath),
|
|
58
|
-
!serverFilePath ? null :
|
|
82
|
+
!serverFilePath ? null : pluginWrapServerFile(serverFilePath),
|
|
59
83
|
].filter((p) => p !== null);
|
|
60
84
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { generateVirtualFileGlobalEntry };
|
|
2
|
+
import type { RuntimeEnvRuntime } from './getConfigValueSourcesRelevant.js';
|
|
2
3
|
import '../../assertEnvVite.js';
|
|
3
|
-
declare function generateVirtualFileGlobalEntry(
|
|
4
|
+
declare function generateVirtualFileGlobalEntry(runtimeEnv: RuntimeEnvRuntime, id: string): Promise<string>;
|
|
@@ -4,25 +4,31 @@ import { debug } from './debug.js';
|
|
|
4
4
|
import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
|
|
5
5
|
import { serializeConfigValues, } from '../../../../shared-server-client/page-configs/serialize/serializeConfigValues.js';
|
|
6
6
|
import { VIRTUAL_FILE_ID_constantsGlobalThis } from '../pluginReplaceConstantsGlobalThis.js';
|
|
7
|
+
import { getEnvironmentEntryPlaceholder } from '../build/pluginEnvironmentEntries.js';
|
|
7
8
|
import '../../assertEnvVite.js';
|
|
8
|
-
async function generateVirtualFileGlobalEntry(
|
|
9
|
+
async function generateVirtualFileGlobalEntry(runtimeEnv, id) {
|
|
9
10
|
const vikeConfig = await getVikeConfigInternal(true);
|
|
10
|
-
const { _pageConfigs: pageConfigs, _pageConfigGlobal: pageConfigGlobal } = vikeConfig;
|
|
11
|
-
return getCode(pageConfigs, pageConfigGlobal,
|
|
11
|
+
const { _pageConfigs: pageConfigs, _pageConfigGlobal: pageConfigGlobal, _additionalEnvironmentNames: additionalEnvironmentNames, } = vikeConfig;
|
|
12
|
+
return getCode(pageConfigs, pageConfigGlobal, runtimeEnv, id, additionalEnvironmentNames);
|
|
12
13
|
}
|
|
13
|
-
function getCode(pageConfigs, pageConfigGlobal,
|
|
14
|
+
function getCode(pageConfigs, pageConfigGlobal, runtimeEnv, id, additionalEnvironmentNames) {
|
|
14
15
|
const lines = [];
|
|
15
16
|
const importStatements = [];
|
|
16
17
|
const filesEnv = new Map();
|
|
18
|
+
const { environmentName, isDev } = runtimeEnv;
|
|
19
|
+
const isForClientSide = environmentName === 'client';
|
|
17
20
|
if (!isForClientSide) {
|
|
18
21
|
importStatements.push(`import '${VIRTUAL_FILE_ID_constantsGlobalThis}';`);
|
|
19
22
|
}
|
|
20
23
|
lines.push('export const pageConfigsSerialized = [');
|
|
21
|
-
lines.push(getCodePageConfigsSerialized(pageConfigs,
|
|
24
|
+
lines.push(getCodePageConfigsSerialized(pageConfigs, runtimeEnv, importStatements, filesEnv));
|
|
22
25
|
lines.push('];');
|
|
23
26
|
lines.push('export const pageConfigGlobalSerialized = {');
|
|
24
|
-
lines.push(getCodePageConfigGlobalSerialized(pageConfigGlobal,
|
|
27
|
+
lines.push(getCodePageConfigGlobalSerialized(pageConfigGlobal, runtimeEnv, importStatements, filesEnv));
|
|
25
28
|
lines.push('};');
|
|
29
|
+
if (environmentName === 'server') {
|
|
30
|
+
lines.push(getCodeEnvironmentEntries(additionalEnvironmentNames, isDev, importStatements));
|
|
31
|
+
}
|
|
26
32
|
if (!isForClientSide && isDev) {
|
|
27
33
|
// https://vite.dev/guide/api-environment-frameworks.html
|
|
28
34
|
lines.push('if (import.meta.hot) import.meta.hot.accept();');
|
|
@@ -31,10 +37,21 @@ function getCode(pageConfigs, pageConfigGlobal, isForClientSide, isDev, id, isCl
|
|
|
31
37
|
if (!isForClientSide) {
|
|
32
38
|
code = `import '${VIRTUAL_FILE_ID_constantsGlobalThis}';\n` + code;
|
|
33
39
|
}
|
|
34
|
-
debug(id,
|
|
40
|
+
debug(id, `${environmentName.toUpperCase()}-SIDE`, code);
|
|
35
41
|
return code;
|
|
36
42
|
}
|
|
37
|
-
|
|
43
|
+
// The global entries of the additional environments (e.g. `rsc`), loaded by loadPageContextEnvironments.ts
|
|
44
|
+
// - In development, they're loaded with the environment's module runner instead
|
|
45
|
+
function getCodeEnvironmentEntries(additionalEnvironmentNames, isDev, importStatements) {
|
|
46
|
+
const entries = additionalEnvironmentNames.map((name, i) => {
|
|
47
|
+
if (isDev)
|
|
48
|
+
return `${JSON.stringify(name)}: null`;
|
|
49
|
+
importStatements.push(`import * as environmentEntry${i} from ${JSON.stringify(getEnvironmentEntryPlaceholder(name))};`);
|
|
50
|
+
return `${JSON.stringify(name)}: environmentEntry${i}`;
|
|
51
|
+
});
|
|
52
|
+
return `export const environmentEntries = { ${entries.join(', ')} };`;
|
|
53
|
+
}
|
|
54
|
+
function getCodePageConfigsSerialized(pageConfigs, runtimeEnv, importStatements, filesEnv) {
|
|
38
55
|
const lines = [];
|
|
39
56
|
pageConfigs.forEach((pageConfig) => {
|
|
40
57
|
const { pageId, routeFilesystem, isErrorPage } = pageConfig;
|
|
@@ -42,20 +59,20 @@ function getCodePageConfigsSerialized(pageConfigs, isForClientSide, isClientRout
|
|
|
42
59
|
lines.push(` pageId: ${JSON.stringify(pageId)},`);
|
|
43
60
|
lines.push(` isErrorPage: ${JSON.stringify(isErrorPage)},`);
|
|
44
61
|
lines.push(` routeFilesystem: ${JSON.stringify(routeFilesystem)},`);
|
|
45
|
-
const virtualFileId = JSON.stringify(generateVirtualFileId({ type: 'page-entry', pageId,
|
|
62
|
+
const virtualFileId = JSON.stringify(generateVirtualFileId({ type: 'page-entry', pageId, environmentName: runtimeEnv.environmentName }));
|
|
46
63
|
lines.push(` loadVirtualFilePageEntry: () => ({ moduleId: ${virtualFileId}, moduleExportsPromise: import(${virtualFileId}) }),`);
|
|
47
64
|
lines.push(` configValuesSerialized: {`);
|
|
48
|
-
lines.push(...serializeConfigValues(pageConfig, importStatements, filesEnv,
|
|
65
|
+
lines.push(...serializeConfigValues(pageConfig, importStatements, filesEnv, runtimeEnv, ' ', true));
|
|
49
66
|
lines.push(` },`);
|
|
50
67
|
lines.push(` },`);
|
|
51
68
|
});
|
|
52
69
|
const code = lines.join('\n');
|
|
53
70
|
return code;
|
|
54
71
|
}
|
|
55
|
-
function getCodePageConfigGlobalSerialized(pageConfigGlobal,
|
|
72
|
+
function getCodePageConfigGlobalSerialized(pageConfigGlobal, runtimeEnv, importStatements, filesEnv) {
|
|
56
73
|
const lines = [];
|
|
57
74
|
lines.push(` configValuesSerialized: {`);
|
|
58
|
-
lines.push(...serializeConfigValues(pageConfigGlobal, importStatements, filesEnv,
|
|
75
|
+
lines.push(...serializeConfigValues(pageConfigGlobal, importStatements, filesEnv, runtimeEnv, ' ', null));
|
|
59
76
|
lines.push(` },`);
|
|
60
77
|
const code = lines.join('\n');
|
|
61
78
|
return code;
|
package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js
CHANGED
|
@@ -18,7 +18,8 @@ import '../../assertEnvVite.js';
|
|
|
18
18
|
async function generateVirtualFileGlobalEntryWithOldDesign(id, options, config, env, isDev) {
|
|
19
19
|
const idParsed = parseVirtualFileId(id);
|
|
20
20
|
assert(idParsed && idParsed.type === 'global-entry');
|
|
21
|
-
const {
|
|
21
|
+
const { environmentName, isClientRouting } = idParsed;
|
|
22
|
+
const isForClientSide = environmentName === 'client';
|
|
22
23
|
assert(isForClientSide === !isViteServerSide_extraSafe(config, env, options));
|
|
23
24
|
const code = await getCode(config, isForClientSide, isClientRouting, isDev, id);
|
|
24
25
|
return code;
|
|
@@ -75,7 +76,7 @@ export const pageFilesExportNamesEager = {};
|
|
|
75
76
|
export const pageFilesList = [];
|
|
76
77
|
export const neverLoaded = {};
|
|
77
78
|
|
|
78
|
-
${await generateVirtualFileGlobalEntry(isForClientSide, isDev, id
|
|
79
|
+
${await generateVirtualFileGlobalEntry({ environmentName: isForClientSide ? 'client' : 'server', isClientRouting, isDev }, id)}
|
|
79
80
|
|
|
80
81
|
`;
|
|
81
82
|
const vikeConfig = await getVikeConfigInternal();
|
|
@@ -18,7 +18,7 @@ async function generateVirtualFilePageEntry(id, isDev) {
|
|
|
18
18
|
assert(result.isForClientSide === isForClientSide)
|
|
19
19
|
}
|
|
20
20
|
*/
|
|
21
|
-
const { pageId,
|
|
21
|
+
const { pageId, environmentName } = result;
|
|
22
22
|
const vikeConfig = await getVikeConfigInternal(true);
|
|
23
23
|
const { _pageConfigs: pageConfigs } = vikeConfig;
|
|
24
24
|
const pageConfig = pageConfigs.find((pageConfig) => pageConfig.pageId === pageId);
|
|
@@ -31,20 +31,20 @@ async function generateVirtualFilePageEntry(id, isDev) {
|
|
|
31
31
|
throw getProjectError(`Outdated request. Try again. ${getDebugInfoStr({ id, pageId })}`);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
const code = getCode(pageConfig,
|
|
35
|
-
debug(id,
|
|
34
|
+
const code = getCode(pageConfig, environmentName, pageId, resolveIncludeAssetsImportedByServer(vikeConfig.config), isDev);
|
|
35
|
+
debug(id, `${environmentName.toUpperCase()}-SIDE`, code);
|
|
36
36
|
return code;
|
|
37
37
|
}
|
|
38
|
-
function getCode(pageConfig,
|
|
38
|
+
function getCode(pageConfig, environmentName, pageId, includeAssetsImportedByServer, isDev) {
|
|
39
39
|
const lines = [];
|
|
40
40
|
const importStatements = [];
|
|
41
41
|
const filesEnv = new Map();
|
|
42
42
|
const isClientRouting = getConfigValueBuildTime(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
43
43
|
lines.push('export const configValuesSerialized = {');
|
|
44
|
-
lines.push(...serializeConfigValues(pageConfig, importStatements, filesEnv, {
|
|
44
|
+
lines.push(...serializeConfigValues(pageConfig, importStatements, filesEnv, { environmentName, isClientRouting, isDev }, '', false));
|
|
45
45
|
lines.push('};');
|
|
46
|
-
if (!handleAssetsManifest_isFixEnabled() && includeAssetsImportedByServer &&
|
|
47
|
-
importStatements.push(`import '${extractAssetsAddQuery(generateVirtualFileId({ type: 'page-entry', pageId,
|
|
46
|
+
if (!handleAssetsManifest_isFixEnabled() && includeAssetsImportedByServer && environmentName === 'client' && !isDev) {
|
|
47
|
+
importStatements.push(`import '${extractAssetsAddQuery(generateVirtualFileId({ type: 'page-entry', pageId, environmentName: 'server' }))}'`);
|
|
48
48
|
}
|
|
49
49
|
const code = [...importStatements, ...lines].join('\n');
|
|
50
50
|
return code;
|
|
@@ -3,14 +3,18 @@ export { getConfigValueSourceRelevantAnyEnv };
|
|
|
3
3
|
export { isRuntimeEnvMatch };
|
|
4
4
|
export { isConfigSourceValueNull };
|
|
5
5
|
export type { RuntimeEnv };
|
|
6
|
+
export type { RuntimeEnvRuntime };
|
|
6
7
|
import type { ConfigEnv, ConfigValueSource, PageConfigBuildTime, PageConfigGlobalBuildTime } from '../../../../types/PageConfig.js';
|
|
7
8
|
import '../../assertEnvVite.js';
|
|
8
|
-
type RuntimeEnv = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
9
|
+
type RuntimeEnv = (RuntimeEnvRuntime & {
|
|
10
|
+
isConfigEnvironment?: undefined;
|
|
11
|
+
}) | {
|
|
12
|
+
isConfigEnvironment: true;
|
|
13
|
+
};
|
|
14
|
+
type RuntimeEnvRuntime = {
|
|
15
|
+
environmentName: string;
|
|
16
|
+
isClientRouting?: boolean;
|
|
17
|
+
isDev: boolean;
|
|
14
18
|
};
|
|
15
19
|
type PageConfigPartial = Pick<PageConfigBuildTime | PageConfigGlobalBuildTime, 'configValueSources' | 'configDefinitions'>;
|
|
16
20
|
declare function getConfigValueSourcesRelevant(configName: string, runtimeEnv: RuntimeEnv, pageConfig: PageConfigPartial): ConfigValueSource[];
|
|
@@ -44,19 +44,13 @@ function getConfigValueSourceRelevantAnyEnv(configName, pageConfig) {
|
|
|
44
44
|
return source;
|
|
45
45
|
}
|
|
46
46
|
function isRuntimeEnvMatch(configEnv, runtimeEnv) {
|
|
47
|
-
if (
|
|
47
|
+
if (runtimeEnv.isConfigEnvironment)
|
|
48
48
|
return !!configEnv.config;
|
|
49
49
|
// Runtime
|
|
50
|
-
if (!runtimeEnv.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
else {
|
|
55
|
-
if (!configEnv.client)
|
|
56
|
-
return false;
|
|
57
|
-
if (configEnv.client === 'if-client-routing' && !runtimeEnv.isClientRouting)
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
50
|
+
if (!configEnv[runtimeEnv.environmentName])
|
|
51
|
+
return false;
|
|
52
|
+
if (runtimeEnv.environmentName === 'client' && configEnv.clientRoutingOnly && !runtimeEnv.isClientRouting)
|
|
53
|
+
return false;
|
|
60
54
|
// Production/development
|
|
61
55
|
if (configEnv.production !== undefined) {
|
|
62
56
|
assert(typeof configEnv.production === 'boolean');
|
|
@@ -2,6 +2,7 @@ export { pluginVirtualFiles };
|
|
|
2
2
|
import { normalizePath } from 'vite';
|
|
3
3
|
import { generateVirtualFilePageEntry } from './pluginVirtualFiles/generateVirtualFilePageEntry.js';
|
|
4
4
|
import { generateVirtualFileGlobalEntryWithOldDesign } from './pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js';
|
|
5
|
+
import { generateVirtualFileGlobalEntry } from './pluginVirtualFiles/generateVirtualFileGlobalEntry.js';
|
|
5
6
|
import { escapeRegex } from '../../../utils/escapeRegex.js';
|
|
6
7
|
import { isScriptFile } from '../../../utils/isScriptFile.js';
|
|
7
8
|
import { addVirtualFileIdPrefix, isVirtualFileId, removeVirtualFileIdPrefix, virtualFileIdPrefix1, virtualFileIdPrefix2, } from '../../../utils/virtualFileId.js';
|
|
@@ -9,6 +10,8 @@ import { assert } from '../../../utils/assert.js';
|
|
|
9
10
|
import { assertPosixPath } from '../../../utils/path.js';
|
|
10
11
|
import { parseVirtualFileId } from '../../../shared-server-node/virtualFileId.js';
|
|
11
12
|
import { reloadVikeConfig, isV1Design, getVikeConfigInternalOptional } from '../shared/resolveVikeConfigInternal.js';
|
|
13
|
+
import { isEnvironmentBuiltIn } from '../../../shared-server-node/vike-environments.js';
|
|
14
|
+
import { isRunnableDevEnvironment } from '../../../utils/isRunnableDevEnvironment.js';
|
|
12
15
|
import pc from '@brillout/picocolors';
|
|
13
16
|
import { logConfigInfo } from '../shared/loggerDev.js';
|
|
14
17
|
import { getFilePathToShowToUserModule } from '../shared/getFilePath.js';
|
|
@@ -73,6 +76,9 @@ function pluginVirtualFiles() {
|
|
|
73
76
|
return code;
|
|
74
77
|
}
|
|
75
78
|
if (idParsed.type === 'global-entry') {
|
|
79
|
+
if (!isEnvironmentBuiltIn(idParsed.environmentName)) {
|
|
80
|
+
return generateVirtualFileGlobalEntry({ environmentName: idParsed.environmentName, isDev }, id);
|
|
81
|
+
}
|
|
76
82
|
const code = await generateVirtualFileGlobalEntryWithOldDesign(id, options, config, this.environment, isDev);
|
|
77
83
|
return code;
|
|
78
84
|
}
|
|
@@ -179,6 +185,20 @@ function invalidateVikeVirtualFiles(server) {
|
|
|
179
185
|
vikeVirtualFiles.forEach((mod) => {
|
|
180
186
|
server.moduleGraph.invalidateModule(mod);
|
|
181
187
|
});
|
|
188
|
+
// - `server.moduleGraph` only covers the `client` and `ssr` environments, while additional environments (e.g. `rsc`) also load Vike's virtual files
|
|
189
|
+
Object.values(server.environments).forEach((environment) => {
|
|
190
|
+
environment.moduleGraph.idToModuleMap.forEach((mod, id) => {
|
|
191
|
+
if (parseVirtualFileId(id))
|
|
192
|
+
environment.moduleGraph.invalidateModule(mod);
|
|
193
|
+
});
|
|
194
|
+
if (!isRunnableDevEnvironment(environment))
|
|
195
|
+
return;
|
|
196
|
+
const { evaluatedModules } = environment.runner;
|
|
197
|
+
evaluatedModules.idToModuleMap.forEach((mod, id) => {
|
|
198
|
+
if (parseVirtualFileId(id))
|
|
199
|
+
evaluatedModules.invalidateModule(mod);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
182
202
|
}
|
|
183
203
|
function getVikeVirtualFiles(server) {
|
|
184
204
|
const vikeVirtualFiles = Array.from(server.moduleGraph.urlToModuleMap.keys())
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { addSsrMiddleware };
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
2
|
+
import { vikeUniversalMiddleware } from '../../../server/runtime/universal-middleware/vikeUniversalMiddleware.js';
|
|
3
|
+
import { getAdapterRuntime } from '@universal-middleware/core';
|
|
4
|
+
import { createRequestAdapter } from '@universal-middleware/node/request';
|
|
5
|
+
import { sendResponse } from '@universal-middleware/node/response';
|
|
5
6
|
import '../assertEnvVite.js';
|
|
7
|
+
const requestAdapter = createRequestAdapter();
|
|
6
8
|
function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled) {
|
|
7
9
|
middlewares.use(async (req, res, next) => {
|
|
8
10
|
if (res.headersSent)
|
|
@@ -10,26 +12,11 @@ function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled)
|
|
|
10
12
|
const url = req.originalUrl || req.url;
|
|
11
13
|
if (!url)
|
|
12
14
|
return next();
|
|
13
|
-
|
|
14
|
-
const pageContextInit = {
|
|
15
|
-
urlOriginal: url,
|
|
16
|
-
headersOriginal: headers,
|
|
17
|
-
_nodeDev: { req, res },
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(pageContextInit, 'userAgent', {
|
|
20
|
-
get() {
|
|
21
|
-
// TO-DO/next-major-release: assertUsage() instead of assertWarning()
|
|
22
|
-
assertWarning(false, `${pc.cyan('pageContext.userAgent')} is deprecated: use ${pc.cyan("pageContext.headers['user-agent']")} instead.`, {
|
|
23
|
-
showStackTrace: true,
|
|
24
|
-
onlyOnce: true,
|
|
25
|
-
});
|
|
26
|
-
return headers['user-agent'];
|
|
27
|
-
},
|
|
28
|
-
enumerable: false,
|
|
29
|
-
});
|
|
30
|
-
let pageContext;
|
|
15
|
+
let response;
|
|
31
16
|
try {
|
|
32
|
-
|
|
17
|
+
const runtime = Object.assign(getAdapterRuntime('other', { params: undefined }), { req, res });
|
|
18
|
+
const context = { urlOriginal: url };
|
|
19
|
+
response = await vikeUniversalMiddleware(requestAdapter(req, res), context, runtime);
|
|
33
20
|
}
|
|
34
21
|
catch (err) {
|
|
35
22
|
// Throwing an error in a connect middleware shuts down the server
|
|
@@ -39,7 +26,7 @@ function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled)
|
|
|
39
26
|
// - We purposely don't use next(err) to align behavior: we use our own/copied implementation of buildErrorMessage() regardless of whether the user uses Vite's dev middleware or Vite's standalone dev server
|
|
40
27
|
return next();
|
|
41
28
|
}
|
|
42
|
-
if (
|
|
29
|
+
if (response.status === 404 && isPreview && isPrerenderingEnabled) {
|
|
43
30
|
// Serve /dist/client/404.html instead
|
|
44
31
|
return next();
|
|
45
32
|
}
|
|
@@ -49,9 +36,6 @@ function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled)
|
|
|
49
36
|
if (value)
|
|
50
37
|
res.setHeader(name, value);
|
|
51
38
|
}
|
|
52
|
-
|
|
53
|
-
httpResponse.headers.forEach(([name, value]) => res.setHeader(name, value));
|
|
54
|
-
res.statusCode = httpResponse.statusCode;
|
|
55
|
-
httpResponse.pipe(res);
|
|
39
|
+
await sendResponse(response, res);
|
|
56
40
|
});
|
|
57
41
|
}
|
|
@@ -2,4 +2,4 @@ export { findPageFiles };
|
|
|
2
2
|
import type { ResolvedConfig } from 'vite';
|
|
3
3
|
import type { FileType } from '../../../shared-server-client/getPageFiles/fileTypes.js';
|
|
4
4
|
import '../assertEnvVite.js';
|
|
5
|
-
declare function findPageFiles(config: ResolvedConfig, fileTypes: FileType[]
|
|
5
|
+
declare function findPageFiles(config: ResolvedConfig, fileTypes: FileType[]): Promise<string[]>;
|
|
@@ -2,22 +2,12 @@ export { findPageFiles };
|
|
|
2
2
|
import { glob } from 'tinyglobby';
|
|
3
3
|
import { scriptFileExtensionPattern } from '../../../utils/isScriptFile.js';
|
|
4
4
|
import { toPosixPath } from '../../../utils/path.js';
|
|
5
|
-
import { assertWarning } from '../../../utils/assert.js';
|
|
6
|
-
import pc from '@brillout/picocolors';
|
|
7
5
|
import { getOutDirs } from './getOutDirs.js';
|
|
8
6
|
import '../assertEnvVite.js';
|
|
9
|
-
async function findPageFiles(config, fileTypes
|
|
7
|
+
async function findPageFiles(config, fileTypes) {
|
|
10
8
|
const cwd = config.root;
|
|
11
9
|
const { outDirRoot } = getOutDirs(config, undefined);
|
|
12
|
-
const timeBase = new Date().getTime();
|
|
13
10
|
let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensionPattern}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false, expandDirectories: false });
|
|
14
11
|
pageFiles = pageFiles.map((p) => '/' + toPosixPath(p));
|
|
15
|
-
const time = new Date().getTime() - timeBase;
|
|
16
|
-
if (isDev) {
|
|
17
|
-
// We only warn in dev, because while building it's expected to take a long time as tinyglobby is competing for resources with other tasks
|
|
18
|
-
assertWarning(time < 1.5 * 1000, `Finding your page files ${pc.cyan('**/*.page.*')} took an unexpected long time (${time}ms). Reach out to the vike maintainer.`, {
|
|
19
|
-
onlyOnce: 'slow-page-files-search',
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
12
|
return pageFiles;
|
|
23
13
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { getAssetsDir };
|
|
2
2
|
import { assertUsage } from '../../../utils/assert.js';
|
|
3
3
|
import '../assertEnvVite.js';
|
|
4
|
-
function getAssetsDir(
|
|
5
|
-
let { assetsDir } =
|
|
6
|
-
assertUsage(assetsDir,
|
|
4
|
+
function getAssetsDir(build) {
|
|
5
|
+
let { assetsDir } = build;
|
|
6
|
+
assertUsage(assetsDir, "Vite's build.assetsDir cannot be an empty string");
|
|
7
7
|
assetsDir = assetsDir.split(/\/|\\/).filter(Boolean).join('/');
|
|
8
8
|
return assetsDir;
|
|
9
9
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { isViteCli };
|
|
2
2
|
export { getViteCliArgs };
|
|
3
|
-
export {
|
|
3
|
+
export { getViteCliArgsMinimal };
|
|
4
4
|
export { getViteCliCommand };
|
|
5
5
|
import '../assertEnvVite.js';
|
|
6
6
|
declare function isViteCli(): boolean;
|
|
@@ -12,8 +12,8 @@ type ConfigFromCli = {
|
|
|
12
12
|
};
|
|
13
13
|
type ViteCommand = 'dev' | 'build' | 'optimize' | 'preview';
|
|
14
14
|
declare function getViteCliCommand(): ViteCommand | null;
|
|
15
|
-
declare function
|
|
16
|
-
declare function getViteCliArgs(): null | {
|
|
15
|
+
declare function getViteCliArgsMinimal(): null | {
|
|
17
16
|
root: string | undefined;
|
|
18
17
|
configFile: string | undefined;
|
|
19
18
|
};
|
|
19
|
+
declare function getViteCliArgs(): null | ConfigFromCli;
|