vike 0.4.228 → 0.4.229-commit-a19745d
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/__internal/index.js +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +22 -0
- package/dist/cjs/node/plugin/index.js +3 -1
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
- package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
- package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
- package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
- package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +8 -20
- package/dist/cjs/node/plugin/utils.js +1 -0
- package/dist/cjs/node/prerender/runPrerender.js +44 -41
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +102 -125
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +13 -3
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/index-deprecated.js +9 -38
- package/dist/cjs/node/runtime/index.js +56 -2
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +3 -3
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
- package/dist/cjs/node/runtime/renderPage.js +102 -81
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +54 -0
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
- package/dist/cjs/shared/hooks/getHook.js +45 -27
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/debug.js +1 -0
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/isImportPath.js +21 -0
- package/dist/cjs/utils/isScriptFile.js +24 -21
- package/dist/cjs/utils/objectAssign.js +6 -10
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -23
- package/dist/cjs/utils/path.js +12 -2
- package/dist/cjs/utils/requireResolve.js +148 -53
- package/dist/esm/__internal/index.js +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
- package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
- package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/utils.js +0 -1
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/node.js +1 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/utils.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/removeFoucBuster.js +1 -0
- package/dist/esm/client/shared/utils.d.ts +4 -0
- package/dist/esm/client/shared/utils.js +4 -0
- package/dist/esm/node/plugin/index.js +3 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +7 -2
- package/dist/esm/node/plugin/plugins/envVars.js +18 -20
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
- package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
- package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +9 -21
- package/dist/esm/node/plugin/utils.d.ts +1 -0
- package/dist/esm/node/plugin/utils.js +1 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
- package/dist/esm/node/prerender/runPrerender.js +48 -45
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +425 -47
- package/dist/esm/node/runtime/globalContext.js +103 -126
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +13 -3
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
- package/dist/esm/node/runtime/index-deprecated.js +9 -36
- package/dist/esm/node/runtime/index.d.ts +23 -1
- package/dist/esm/node/runtime/index.js +38 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +3 -3
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
- package/dist/esm/node/runtime/renderPage.d.ts +146 -7
- package/dist/esm/node/runtime/renderPage.js +105 -84
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/shared/VikeNamespace.d.ts +35 -13
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
- package/dist/esm/shared/createGlobalContextShared.js +51 -0
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
- package/dist/esm/shared/hooks/getHook.d.ts +5 -3
- package/dist/esm/shared/hooks/getHook.js +47 -29
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +12 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/esm/shared/route/executeGuardHook.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -1
- package/dist/esm/shared/types.d.ts +64 -32
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +1 -0
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/isImportPath.d.ts +4 -0
- package/dist/esm/utils/isImportPath.js +19 -0
- package/dist/esm/utils/isScriptFile.d.ts +5 -5
- package/dist/esm/utils/isScriptFile.js +23 -20
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +6 -10
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/dist/esm/utils/parseNpmPackage.d.ts +19 -0
- package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -24
- package/dist/esm/utils/path.d.ts +1 -1
- package/dist/esm/utils/path.js +12 -2
- package/dist/esm/utils/requireResolve.d.ts +20 -7
- package/dist/esm/utils/requireResolve.js +148 -53
- package/package.json +14 -13
- package/dist/cjs/node/runtime/index-common.js +0 -27
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
- package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/index-common.d.ts +0 -8
- package/dist/esm/node/runtime/index-common.js +0 -10
- package/dist/esm/utils/isNpmPackage.d.ts +0 -17
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js}
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
export { getPropKeys };
|
|
1
|
+
export { getPageContextClientSerialized };
|
|
2
|
+
export { getPageContextClientSerializedAbort };
|
|
3
|
+
export { getGlobalContextClientSerialized };
|
|
5
4
|
import { stringify, isJsonSerializerError } from '@brillout/json-serializer/stringify';
|
|
6
|
-
import { assert, assertUsage, assertWarning, getPropAccessNotation, hasProp,
|
|
5
|
+
import { assert, assertUsage, assertWarning, getPropAccessNotation, hasProp, unique } from '../utils.js';
|
|
7
6
|
import { isErrorPage } from '../../../shared/error-page.js';
|
|
8
7
|
import { addIs404ToPageProps } from '../../../shared/addIs404ToPageProps.js';
|
|
9
8
|
import pc from '@brillout/picocolors';
|
|
10
9
|
import { NOT_SERIALIZABLE } from '../../../shared/NOT_SERIALIZABLE.js';
|
|
11
10
|
import { pageContextInitIsPassedToClient } from '../../../shared/misc/pageContextInitIsPassedToClient.js';
|
|
12
11
|
import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
|
|
13
|
-
|
|
12
|
+
import { getPropKeys, getPropVal, setPropVal } from './propKeys.js';
|
|
13
|
+
const passToClientBuiltInPageContext = [
|
|
14
14
|
'abortReason',
|
|
15
15
|
'_urlRewrite',
|
|
16
16
|
'_urlRedirect',
|
|
@@ -24,29 +24,39 @@ const PASS_TO_CLIENT = [
|
|
|
24
24
|
'routeParams',
|
|
25
25
|
'data' // for data() hook
|
|
26
26
|
];
|
|
27
|
-
const
|
|
28
|
-
function
|
|
29
|
-
const
|
|
30
|
-
const pageContextClient = applyPassToClient(
|
|
31
|
-
if (
|
|
27
|
+
const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError];
|
|
28
|
+
function getPageContextClientSerialized(pageContext) {
|
|
29
|
+
const passToClientPageContext = getPassToClientPageContext(pageContext);
|
|
30
|
+
const pageContextClient = applyPassToClient(passToClientPageContext, pageContext);
|
|
31
|
+
if (passToClientPageContext.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
|
|
32
32
|
pageContextClient[pageContextInitIsPassedToClient] = true;
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
const pageContextClientSerialized = serializeObject(pageContextClient, 'pageContext', passToClientPageContext);
|
|
35
|
+
return pageContextClientSerialized;
|
|
36
|
+
}
|
|
37
|
+
function getGlobalContextClientSerialized(pageContext) {
|
|
38
|
+
const passToClient = pageContext._passToClient;
|
|
39
|
+
const globalContextClient = applyPassToClient(passToClient, pageContext.globalContext);
|
|
40
|
+
const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
|
|
41
|
+
return globalContextClientSerialized;
|
|
42
|
+
}
|
|
43
|
+
function serializeObject(obj, objName, passToClient) {
|
|
44
|
+
let serialized;
|
|
35
45
|
try {
|
|
36
|
-
|
|
46
|
+
serialized = serializeValue(obj);
|
|
37
47
|
}
|
|
38
48
|
catch (err) {
|
|
39
49
|
const h = (s) => pc.cyan(s);
|
|
40
50
|
let hasWarned = false;
|
|
41
51
|
const propsNonSerializable = [];
|
|
42
52
|
passToClient.forEach((prop) => {
|
|
43
|
-
const res = getPropVal(
|
|
53
|
+
const res = getPropVal(obj, prop);
|
|
44
54
|
if (!res)
|
|
45
55
|
return;
|
|
46
56
|
const { value } = res;
|
|
47
|
-
const varName =
|
|
57
|
+
const varName = `${objName}${getPropKeys(prop).map(getPropAccessNotation).join('')}`;
|
|
48
58
|
try {
|
|
49
|
-
|
|
59
|
+
serializeValue(value, varName);
|
|
50
60
|
}
|
|
51
61
|
catch (err) {
|
|
52
62
|
propsNonSerializable.push(prop);
|
|
@@ -58,7 +68,7 @@ function serializePageContextClientSide(pageContext) {
|
|
|
58
68
|
}
|
|
59
69
|
assertUsage(false, `Cannot serialize config ${h(pathString)} set by useConfig(), see https://vike.dev/useConfig#serialization-error`);
|
|
60
70
|
}
|
|
61
|
-
// Non-serializable
|
|
71
|
+
// Non-serializable property set by the user
|
|
62
72
|
let msg = [
|
|
63
73
|
`${h(varName)} can't be serialized and, therefore, can't be passed to the client side.`,
|
|
64
74
|
`Make sure ${h(varName)} is serializable, or remove ${h(JSON.stringify(prop))} from ${h('passToClient')}.`
|
|
@@ -79,31 +89,31 @@ function serializePageContextClientSide(pageContext) {
|
|
|
79
89
|
});
|
|
80
90
|
assert(hasWarned);
|
|
81
91
|
propsNonSerializable.forEach((prop) => {
|
|
82
|
-
|
|
92
|
+
obj[getPropKeys(prop)[0]] = NOT_SERIALIZABLE;
|
|
83
93
|
});
|
|
84
94
|
try {
|
|
85
|
-
|
|
95
|
+
serialized = serializeValue(obj);
|
|
86
96
|
}
|
|
87
97
|
catch (err) {
|
|
88
98
|
assert(false);
|
|
89
99
|
}
|
|
90
100
|
}
|
|
91
|
-
return
|
|
101
|
+
return serialized;
|
|
92
102
|
}
|
|
93
|
-
function
|
|
103
|
+
function serializeValue(value, varName) {
|
|
94
104
|
return stringify(value, { forbidReactElements: true, valueName: varName });
|
|
95
105
|
}
|
|
96
|
-
function
|
|
97
|
-
let passToClient = [...pageContext._passToClient, ...
|
|
106
|
+
function getPassToClientPageContext(pageContext) {
|
|
107
|
+
let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
|
|
98
108
|
if (isErrorPage(pageContext.pageId, pageContext._pageConfigs)) {
|
|
99
109
|
assert(hasProp(pageContext, 'is404', 'boolean'));
|
|
100
110
|
addIs404ToPageProps(pageContext);
|
|
101
|
-
passToClient.push(...
|
|
111
|
+
passToClient.push(...pageToClientBuiltInPageContextError);
|
|
102
112
|
}
|
|
103
113
|
passToClient = unique(passToClient);
|
|
104
114
|
return passToClient;
|
|
105
115
|
}
|
|
106
|
-
function
|
|
116
|
+
function getPageContextClientSerializedAbort(pageContext) {
|
|
107
117
|
assert(pageContext._urlRedirect || pageContext._urlRewrite || pageContext.abortStatusCode);
|
|
108
118
|
assert(pageContext._abortCall);
|
|
109
119
|
assert(pageContext._abortCaller);
|
|
@@ -136,7 +146,7 @@ function serializePageContextAbort(pageContext) {
|
|
|
136
146
|
onlyOnce: false
|
|
137
147
|
});
|
|
138
148
|
}
|
|
139
|
-
return
|
|
149
|
+
return serializeValue(pageContext);
|
|
140
150
|
}
|
|
141
151
|
function applyPassToClient(passToClient, pageContext) {
|
|
142
152
|
const pageContextClient = {};
|
|
@@ -151,44 +161,3 @@ function applyPassToClient(passToClient, pageContext) {
|
|
|
151
161
|
});
|
|
152
162
|
return pageContextClient;
|
|
153
163
|
}
|
|
154
|
-
// Get a nested property from an object using a dot-separated path such as 'user.id'
|
|
155
|
-
function getPropVal(obj, prop) {
|
|
156
|
-
const keys = getPropKeys(prop);
|
|
157
|
-
let value = obj;
|
|
158
|
-
for (const key of keys) {
|
|
159
|
-
if (isObject(value) && key in value) {
|
|
160
|
-
value = value[key];
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
return null; // Property or intermediate property doesn't exist
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return { value };
|
|
167
|
-
}
|
|
168
|
-
// Set a nested property in an object using a dot-separated path such as 'user.id'
|
|
169
|
-
function setPropVal(obj, prop, val) {
|
|
170
|
-
const keys = getPropKeys(prop);
|
|
171
|
-
let currentObj = obj;
|
|
172
|
-
// Creating intermediate objects if necessary
|
|
173
|
-
for (let i = 0; i <= keys.length - 2; i++) {
|
|
174
|
-
const key = keys[i];
|
|
175
|
-
if (!(key in currentObj)) {
|
|
176
|
-
// Create intermediate object
|
|
177
|
-
currentObj[key] = {};
|
|
178
|
-
}
|
|
179
|
-
if (!isObject(currentObj[key])) {
|
|
180
|
-
// Skip value upon data structure conflict
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
currentObj = currentObj[key];
|
|
184
|
-
}
|
|
185
|
-
// Set the final key to the value
|
|
186
|
-
const finalKey = keys[keys.length - 1];
|
|
187
|
-
currentObj[finalKey] = val;
|
|
188
|
-
}
|
|
189
|
-
function getPropKeys(prop) {
|
|
190
|
-
// Like `prop.split('.')` but with added support for `\` escaping, see serializePageContextClientSide.spec.ts
|
|
191
|
-
return prop
|
|
192
|
-
.split(/(?<!\\)\./) // Split on unescaped dots
|
|
193
|
-
.map((key) => key.replace(/\\\./g, '.')); // Replace escaped dots with literal dots
|
|
194
|
-
}
|
|
@@ -1,16 +1 @@
|
|
|
1
|
-
export * from './index
|
|
2
|
-
export * from '../../types/index-dreprecated.js';
|
|
3
|
-
import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
|
|
4
|
-
/** @deprecated
|
|
5
|
-
* Replace:
|
|
6
|
-
* ```
|
|
7
|
-
* import { RenderErrorPage } from 'vike'
|
|
8
|
-
* ```
|
|
9
|
-
* With:
|
|
10
|
-
* ```
|
|
11
|
-
* import { render } from 'vike/abort'
|
|
12
|
-
* ```
|
|
13
|
-
*
|
|
14
|
-
* See https://vike.dev/render
|
|
15
|
-
*/
|
|
16
|
-
export declare const RenderErrorPage: (...args: Parameters<typeof RenderErrorPage_>) => Error;
|
|
1
|
+
export * from './index.js';
|
|
@@ -1,41 +1,14 @@
|
|
|
1
|
-
// TODO/
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
import { assertUsage } from '../../utils/assert.js';
|
|
5
|
-
assertUsage(!isBrowser(), "It's forbidden to `import { something } from 'vike'` on the client-side: the module 'vike' is a server-only module.", { showStackTrace: true });
|
|
6
|
-
export * from './index-common.js';
|
|
7
|
-
export * from '../../types/index-dreprecated.js';
|
|
1
|
+
// TODO/soon: point package.json#exports['./server'] to this file.
|
|
2
|
+
// - Write migration guide, see comment below.
|
|
3
|
+
export * from './index.js';
|
|
8
4
|
import { assertWarning } from './utils.js';
|
|
9
5
|
import pc from '@brillout/picocolors';
|
|
10
|
-
import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
|
|
11
|
-
/** @deprecated
|
|
12
|
-
* Replace:
|
|
13
|
-
* ```
|
|
14
|
-
* import { RenderErrorPage } from 'vike'
|
|
15
|
-
* ```
|
|
16
|
-
* With:
|
|
17
|
-
* ```
|
|
18
|
-
* import { render } from 'vike/abort'
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* See https://vike.dev/render
|
|
22
|
-
*/
|
|
23
|
-
export const RenderErrorPage = (...args) => {
|
|
24
|
-
assertWarning(false, [
|
|
25
|
-
'Replace:',
|
|
26
|
-
pc.red(" import { RenderErrorPage } from 'vike'"),
|
|
27
|
-
'With:',
|
|
28
|
-
pc.green(" import { render } from 'vike/abort'"),
|
|
29
|
-
'See https://vike.dev/render'
|
|
30
|
-
].join('\n'), { onlyOnce: true, showStackTrace: true });
|
|
31
|
-
return RenderErrorPage_(...args);
|
|
32
|
-
};
|
|
33
6
|
assertWarning(false, [
|
|
34
|
-
'You have
|
|
35
|
-
pc.red(" import { something } from 'vike'"),
|
|
7
|
+
'You have outdated imports:',
|
|
8
|
+
pc.bold(pc.red(" import { something } from 'vike/server'")),
|
|
36
9
|
'Replace them with:',
|
|
37
|
-
pc.green(" import { something } from 'vike
|
|
38
|
-
|
|
39
|
-
pc.
|
|
40
|
-
|
|
10
|
+
pc.bold(pc.green(" import { something } from 'vike'"))
|
|
11
|
+
/* Add migration guide, with migration scritps such as `$ rename vike/server vike`
|
|
12
|
+
`See ${pc.underline('https://vike.dev/migration/0.4.xxx')}`
|
|
13
|
+
*/
|
|
41
14
|
].join('\n'), { showStackTrace: true, onlyOnce: true });
|
|
@@ -1 +1,23 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { renderPage } from './renderPage.js';
|
|
2
|
+
export { escapeInject, dangerouslySkipEscape } from './html/renderHtml.js';
|
|
3
|
+
export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './html/stream.js';
|
|
4
|
+
export { PROJECT_VERSION as version } from './utils.js';
|
|
5
|
+
export { getGlobalContext, getGlobalContextSync, getGlobalContextAsync } from './globalContext.js';
|
|
6
|
+
export { createDevMiddleware } from '../runtime-dev/index.js';
|
|
7
|
+
export * from '../../types/index-dreprecated.js';
|
|
8
|
+
export { injectAssets__public as _injectAssets } from './html/injectAssets/injectAssets__public.js';
|
|
9
|
+
export { createPageRenderer } from '../createPageRenderer.js';
|
|
10
|
+
import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
|
|
11
|
+
/** @deprecated
|
|
12
|
+
* Replace:
|
|
13
|
+
* ```
|
|
14
|
+
* import { RenderErrorPage } from 'vike'
|
|
15
|
+
* ```
|
|
16
|
+
* With:
|
|
17
|
+
* ```
|
|
18
|
+
* import { render } from 'vike/abort'
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* See https://vike.dev/render
|
|
22
|
+
*/
|
|
23
|
+
export declare const RenderErrorPage: (...args: Parameters<typeof RenderErrorPage_>) => Error;
|
|
@@ -1,4 +1,39 @@
|
|
|
1
1
|
import { isBrowser } from '../../utils/isBrowser.js';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export
|
|
2
|
+
import { assert } from '../../utils/assert.js';
|
|
3
|
+
assert(!isBrowser());
|
|
4
|
+
export { renderPage } from './renderPage.js';
|
|
5
|
+
export { escapeInject, dangerouslySkipEscape } from './html/renderHtml.js';
|
|
6
|
+
export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './html/stream.js';
|
|
7
|
+
export { PROJECT_VERSION as version } from './utils.js';
|
|
8
|
+
export { getGlobalContext, getGlobalContextSync, getGlobalContextAsync } from './globalContext.js';
|
|
9
|
+
export { createDevMiddleware } from '../runtime-dev/index.js';
|
|
10
|
+
// TODO/v1-release: remove
|
|
11
|
+
// Deprecated exports
|
|
12
|
+
export * from '../../types/index-dreprecated.js';
|
|
13
|
+
export { injectAssets__public as _injectAssets } from './html/injectAssets/injectAssets__public.js';
|
|
14
|
+
export { createPageRenderer } from '../createPageRenderer.js';
|
|
15
|
+
import { assertWarning } from './utils.js';
|
|
16
|
+
import pc from '@brillout/picocolors';
|
|
17
|
+
import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js';
|
|
18
|
+
/** @deprecated
|
|
19
|
+
* Replace:
|
|
20
|
+
* ```
|
|
21
|
+
* import { RenderErrorPage } from 'vike'
|
|
22
|
+
* ```
|
|
23
|
+
* With:
|
|
24
|
+
* ```
|
|
25
|
+
* import { render } from 'vike/abort'
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* See https://vike.dev/render
|
|
29
|
+
*/
|
|
30
|
+
export const RenderErrorPage = (...args) => {
|
|
31
|
+
assertWarning(false, [
|
|
32
|
+
'Replace:',
|
|
33
|
+
pc.red(" import { RenderErrorPage } from 'vike'"),
|
|
34
|
+
'With:',
|
|
35
|
+
pc.green(" import { render } from 'vike/abort'"),
|
|
36
|
+
'See https://vike.dev/render'
|
|
37
|
+
].join('\n'), { onlyOnce: true, showStackTrace: true });
|
|
38
|
+
return RenderErrorPage_(...args);
|
|
39
|
+
};
|
|
@@ -2,5 +2,5 @@ export { analyzePage };
|
|
|
2
2
|
import type { PageFile } from '../../../shared/getPageFiles/getPageFileObject.js';
|
|
3
3
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
4
4
|
import { type AnalysisResult } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
5
|
-
import type {
|
|
6
|
-
declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string, globalContext:
|
|
5
|
+
import type { GlobalContextServerInternal } from '../globalContext.js';
|
|
6
|
+
declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string, globalContext: GlobalContextServerInternal): Promise<AnalysisResult>;
|
|
@@ -20,7 +20,7 @@ async function analyzePage(pageFilesAll, pageConfig, pageId, globalContext) {
|
|
|
20
20
|
eagerlyImported: false
|
|
21
21
|
});
|
|
22
22
|
// In production we inject the import of the server virtual module with ?extractAssets inside the client virtual module
|
|
23
|
-
if (!globalContext.
|
|
23
|
+
if (!globalContext._isProduction) {
|
|
24
24
|
clientDependencies.push({
|
|
25
25
|
id: getVirtualFileIdPageConfigValuesAll(pageConfig.pageId, false),
|
|
26
26
|
onlyAssets: true,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { createHttpResponsePage };
|
|
2
2
|
export { createHttpResponsePageContextJson };
|
|
3
3
|
export { createHttpResponseError };
|
|
4
|
+
export { createHttpResponseErrorWithoutGlobalContext };
|
|
4
5
|
export { createHttpResponseRedirect };
|
|
5
6
|
export { createHttpResponseFavicon404 };
|
|
6
7
|
export { createHttpResponseBaseIsMissing };
|
|
@@ -13,6 +14,7 @@ import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../
|
|
|
13
14
|
import { HttpResponseBody } from './getHttpResponseBody.js';
|
|
14
15
|
import { type EarlyHint } from './getEarlyHints.js';
|
|
15
16
|
import type { PageFile } from '../../../shared/getPageFiles.js';
|
|
17
|
+
import type { PageContextBegin } from '../renderPage.js';
|
|
16
18
|
type HttpResponse = {
|
|
17
19
|
statusCode: 200 | 404 | 500 | RedirectStatusCode | AbortStatusCode;
|
|
18
20
|
headers: [string, string][];
|
|
@@ -30,11 +32,10 @@ declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null
|
|
|
30
32
|
}): Promise<HttpResponse>;
|
|
31
33
|
declare function createHttpResponseFavicon404(): HttpResponse;
|
|
32
34
|
declare function createHttpResponseBaseIsMissing(urlOriginal: string, baseServer: string): HttpResponse;
|
|
33
|
-
declare function createHttpResponseError(pageContext:
|
|
35
|
+
declare function createHttpResponseError(pageContext: {
|
|
34
36
|
_pageFilesAll: PageFile[];
|
|
35
37
|
_pageConfigs: PageConfigRuntime[];
|
|
36
38
|
}): HttpResponse;
|
|
39
|
+
declare function createHttpResponseErrorWithoutGlobalContext(): HttpResponse;
|
|
37
40
|
declare function createHttpResponsePageContextJson(pageContextSerialized: string): Promise<HttpResponse>;
|
|
38
|
-
declare function createHttpResponseRedirect({ url, statusCode }: UrlRedirect, pageContextInit:
|
|
39
|
-
urlOriginal: string;
|
|
40
|
-
}): HttpResponse;
|
|
41
|
+
declare function createHttpResponseRedirect({ url, statusCode }: UrlRedirect, pageContextInit: PageContextBegin): HttpResponse;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { createHttpResponsePage };
|
|
2
2
|
export { createHttpResponsePageContextJson };
|
|
3
3
|
export { createHttpResponseError };
|
|
4
|
+
export { createHttpResponseErrorWithoutGlobalContext };
|
|
4
5
|
export { createHttpResponseRedirect };
|
|
5
6
|
export { createHttpResponseFavicon404 };
|
|
6
7
|
export { createHttpResponseBaseIsMissing };
|
|
@@ -64,9 +65,6 @@ function createHttpResponseBaseIsMissing(urlOriginal, baseServer) {
|
|
|
64
65
|
}
|
|
65
66
|
function createHttpResponseError(pageContext) {
|
|
66
67
|
const reason = (() => {
|
|
67
|
-
if (!pageContext) {
|
|
68
|
-
return 'no error page (https://vike.dev/error-page) could be rendered';
|
|
69
|
-
}
|
|
70
68
|
const errorPageId = getErrorPageId(pageContext._pageFilesAll, pageContext._pageConfigs);
|
|
71
69
|
if (errorPageId) {
|
|
72
70
|
return "the error page (https://vike.dev/error-page) couldn't be rendered (for example if an error occurred while rendering the error page)";
|
|
@@ -75,6 +73,13 @@ function createHttpResponseError(pageContext) {
|
|
|
75
73
|
return 'no error page (https://vike.dev/error-page) is defined, make sure to create one';
|
|
76
74
|
}
|
|
77
75
|
})();
|
|
76
|
+
return createHttpResponseError_(reason);
|
|
77
|
+
}
|
|
78
|
+
function createHttpResponseErrorWithoutGlobalContext() {
|
|
79
|
+
const reason = 'no error page (https://vike.dev/error-page) could be rendered';
|
|
80
|
+
return createHttpResponseError_(reason);
|
|
81
|
+
}
|
|
82
|
+
function createHttpResponseError_(reason) {
|
|
78
83
|
const httpResponse = createHttpResponse(500, 'text/html;charset=utf-8', [], `<p>An error occurred.</p><script>console.log(${JSON.stringify(`This HTTP response was generated by Vike. Vike returned this response because ${reason}.`)})</script>`);
|
|
79
84
|
return httpResponse;
|
|
80
85
|
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
export { createPageContextServerSide };
|
|
2
|
+
export { createPageContextServerSideWithoutGlobalContext };
|
|
3
|
+
export type { PageContextCreatedServerSide };
|
|
4
|
+
import type { GlobalContextServerInternal, GlobalContextServer } from '../globalContext.js';
|
|
5
|
+
import type { PageContextInit } from '../renderPage.js';
|
|
6
|
+
type PageContextCreatedServerSide = Awaited<ReturnType<typeof createPageContextServerSide>>;
|
|
7
|
+
declare function createPageContextServerSide(pageContextInit: PageContextInit, globalContext: GlobalContextServerInternal, globalObject_public: GlobalContextServer, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } }: {
|
|
8
|
+
isPrerendering: false;
|
|
9
|
+
ssr: {
|
|
10
|
+
urlHandler: null | ((url: string) => string);
|
|
11
|
+
isClientSideNavigation: boolean;
|
|
12
|
+
};
|
|
13
|
+
} | {
|
|
14
|
+
isPrerendering: true;
|
|
15
|
+
ssr?: undefined;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
isClientSide: boolean;
|
|
18
|
+
isPrerendering: boolean;
|
|
19
|
+
} & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
20
|
+
url?: string;
|
|
21
|
+
headers?: Record<string, string>;
|
|
22
|
+
} & {
|
|
23
|
+
globalContext: GlobalContextServer;
|
|
24
|
+
_globalContext: {
|
|
25
|
+
isGlobalContext: true;
|
|
26
|
+
_virtualFileExports: unknown;
|
|
27
|
+
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
28
|
+
_pageConfigs: import("../../../__internal/index.js").PageConfig[];
|
|
29
|
+
_pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
30
|
+
_allPageIds: string[];
|
|
31
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
32
|
+
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
33
|
+
} & ({
|
|
34
|
+
_isProduction: false;
|
|
35
|
+
_isPrerendering: false;
|
|
36
|
+
assetsManifest: null;
|
|
37
|
+
_viteDevServer: import("vite").ViteDevServer;
|
|
38
|
+
viteConfig: import("vite").ResolvedConfig;
|
|
39
|
+
viteConfigRuntime: {
|
|
40
|
+
root: string;
|
|
41
|
+
build: {
|
|
42
|
+
outDir: string;
|
|
43
|
+
};
|
|
44
|
+
_baseViteOriginal: string;
|
|
45
|
+
vitePluginServerEntry: {
|
|
46
|
+
inject: boolean | undefined;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
baseServer: string;
|
|
50
|
+
baseAssets: string;
|
|
51
|
+
isClientSide: false;
|
|
52
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
53
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
54
|
+
isGlobalContext: true;
|
|
55
|
+
_virtualFileExports: unknown;
|
|
56
|
+
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
57
|
+
_pageConfigs: import("../../../__internal/index.js").PageConfig[];
|
|
58
|
+
_pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
59
|
+
_allPageIds: string[];
|
|
60
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
61
|
+
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
62
|
+
} | {
|
|
63
|
+
_isPrerendering: true;
|
|
64
|
+
viteConfig: import("vite").ResolvedConfig;
|
|
65
|
+
_isProduction: true;
|
|
66
|
+
assetsManifest: import("../../shared/ViteManifest.js").ViteManifest;
|
|
67
|
+
_viteDevServer: null;
|
|
68
|
+
viteConfigRuntime: {
|
|
69
|
+
root: string;
|
|
70
|
+
build: {
|
|
71
|
+
outDir: string;
|
|
72
|
+
};
|
|
73
|
+
_baseViteOriginal: string;
|
|
74
|
+
vitePluginServerEntry: {
|
|
75
|
+
inject: boolean | undefined;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
_usesClientRouter: boolean;
|
|
79
|
+
baseServer: string;
|
|
80
|
+
baseAssets: string;
|
|
81
|
+
isClientSide: false;
|
|
82
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
83
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
84
|
+
isGlobalContext: true;
|
|
85
|
+
_virtualFileExports: unknown;
|
|
86
|
+
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
87
|
+
_pageConfigs: import("../../../__internal/index.js").PageConfig[];
|
|
88
|
+
_pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
89
|
+
_allPageIds: string[];
|
|
90
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
91
|
+
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
92
|
+
} | {
|
|
93
|
+
_isPrerendering: false;
|
|
94
|
+
viteConfig: null;
|
|
95
|
+
_isProduction: true;
|
|
96
|
+
assetsManifest: import("../../shared/ViteManifest.js").ViteManifest;
|
|
97
|
+
_viteDevServer: null;
|
|
98
|
+
viteConfigRuntime: {
|
|
99
|
+
root: string;
|
|
100
|
+
build: {
|
|
101
|
+
outDir: string;
|
|
102
|
+
};
|
|
103
|
+
_baseViteOriginal: string;
|
|
104
|
+
vitePluginServerEntry: {
|
|
105
|
+
inject: boolean | undefined;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
_usesClientRouter: boolean;
|
|
109
|
+
baseServer: string;
|
|
110
|
+
baseAssets: string;
|
|
111
|
+
isClientSide: false;
|
|
112
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
113
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
114
|
+
isGlobalContext: true;
|
|
115
|
+
_virtualFileExports: unknown;
|
|
116
|
+
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
117
|
+
_pageConfigs: import("../../../__internal/index.js").PageConfig[];
|
|
118
|
+
_pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
119
|
+
_allPageIds: string[];
|
|
120
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
121
|
+
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
122
|
+
});
|
|
123
|
+
_baseServer: string;
|
|
124
|
+
_baseAssets: string;
|
|
125
|
+
_includeAssetsImportedByServer: boolean;
|
|
126
|
+
_pageFilesAll: import("../../../shared/getPageFiles.js").PageFile[];
|
|
127
|
+
_pageConfigs: import("../../../__internal/index.js").PageConfig[];
|
|
128
|
+
_pageConfigGlobal: import("../../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
129
|
+
_allPageIds: string[];
|
|
130
|
+
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
131
|
+
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
132
|
+
_pageContextInit: PageContextInit;
|
|
133
|
+
_urlRewrite: null;
|
|
134
|
+
_urlHandler: ((url: string) => string) | null;
|
|
135
|
+
isClientSideNavigation: boolean;
|
|
136
|
+
} & {
|
|
137
|
+
urlParsed: import("../utils.js").UrlPublic;
|
|
138
|
+
urlPathname: string;
|
|
139
|
+
url: string;
|
|
140
|
+
} & {
|
|
141
|
+
headers: Record<string, string> | null;
|
|
142
|
+
} & {
|
|
143
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
144
|
+
_source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
145
|
+
_sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
146
|
+
_from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
147
|
+
isPageContext: true;
|
|
148
|
+
}>;
|
|
149
|
+
declare function createPageContextServerSideWithoutGlobalContext(pageContextInit: PageContextInit): {
|
|
150
|
+
isClientSide: boolean;
|
|
151
|
+
isPrerendering: boolean;
|
|
152
|
+
} & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
153
|
+
url?: string;
|
|
154
|
+
headers?: Record<string, string>;
|
|
155
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export { createPageContextServerSide };
|
|
2
|
+
export { createPageContextServerSideWithoutGlobalContext };
|
|
3
|
+
import { assert, assertUsage, assertWarning, augmentType, normalizeHeaders, objectAssign } from '../utils.js';
|
|
4
|
+
import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
|
|
5
|
+
import { createPageContextShared } from '../../../shared/createPageContextShared.js';
|
|
6
|
+
async function createPageContextServerSide(pageContextInit, globalContext, globalObject_public, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
|
|
7
|
+
urlHandler: null,
|
|
8
|
+
isClientSideNavigation: false
|
|
9
|
+
} }) {
|
|
10
|
+
assert(pageContextInit.urlOriginal);
|
|
11
|
+
const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
|
|
12
|
+
objectAssign(pageContextCreated, {
|
|
13
|
+
/* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
|
|
14
|
+
// We must use Flatten<T> otherwise TypeScript complains upon assigning types
|
|
15
|
+
...(globalContext as Flatten<typeof globalContext>), // least precedence
|
|
16
|
+
*/
|
|
17
|
+
globalContext: globalObject_public,
|
|
18
|
+
_globalContext: globalContext,
|
|
19
|
+
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
20
|
+
_baseServer: globalContext.baseServer,
|
|
21
|
+
_baseAssets: globalContext.baseAssets,
|
|
22
|
+
// TODO/now: add meta.default
|
|
23
|
+
_includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
|
|
24
|
+
// TODO/soon: use GloablContext instead
|
|
25
|
+
_pageFilesAll: globalContext._pageFilesAll,
|
|
26
|
+
_pageConfigs: globalContext._pageConfigs,
|
|
27
|
+
_pageConfigGlobal: globalContext._pageConfigGlobal,
|
|
28
|
+
_allPageIds: globalContext._allPageIds,
|
|
29
|
+
_pageRoutes: globalContext._pageRoutes,
|
|
30
|
+
_onBeforeRouteHook: globalContext._onBeforeRouteHook,
|
|
31
|
+
_pageContextInit: pageContextInit,
|
|
32
|
+
_urlRewrite: null,
|
|
33
|
+
_urlHandler: urlHandler,
|
|
34
|
+
isClientSideNavigation
|
|
35
|
+
});
|
|
36
|
+
// pageContext.urlParsed
|
|
37
|
+
const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
|
|
38
|
+
objectAssign(pageContextCreated, pageContextUrlComputed);
|
|
39
|
+
// pageContext.headers
|
|
40
|
+
{
|
|
41
|
+
let headers;
|
|
42
|
+
if (pageContextInit.headersOriginal) {
|
|
43
|
+
headers = normalizeHeaders(pageContextInit.headersOriginal);
|
|
44
|
+
assertUsage(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
|
|
45
|
+
}
|
|
46
|
+
else if (pageContextInit.headers) {
|
|
47
|
+
headers = pageContextInit.headers;
|
|
48
|
+
// TODO/next-major-release: remove
|
|
49
|
+
assertWarning(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
headers = null;
|
|
53
|
+
}
|
|
54
|
+
objectAssign(pageContextCreated, { headers });
|
|
55
|
+
}
|
|
56
|
+
const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal);
|
|
57
|
+
augmentType(pageContextCreated, pageContextAugmented);
|
|
58
|
+
return pageContextCreated;
|
|
59
|
+
}
|
|
60
|
+
function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
|
|
61
|
+
const pageContext = createPageContext(pageContextInit, false);
|
|
62
|
+
return pageContext;
|
|
63
|
+
}
|
|
64
|
+
function createPageContext(pageContextInit, isPrerendering) {
|
|
65
|
+
const pageContext = {
|
|
66
|
+
isClientSide: false,
|
|
67
|
+
isPrerendering
|
|
68
|
+
};
|
|
69
|
+
objectAssign(pageContext, pageContextInit);
|
|
70
|
+
return pageContext;
|
|
71
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { executeOnBeforeRenderAndDataHooks };
|
|
2
|
-
import {
|
|
2
|
+
import { getHookFromPageContext } from '../../../shared/hooks/getHook.js';
|
|
3
3
|
import { preparePageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
|
|
4
4
|
import { assertOnBeforeRenderHookReturn } from '../../../shared/assertOnBeforeRenderHookReturn.js';
|
|
5
5
|
import { executeHook } from '../../../shared/hooks/executeHook.js';
|
|
@@ -7,8 +7,8 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
|
|
|
7
7
|
if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
|
-
const dataHook =
|
|
11
|
-
const onBeforeRenderHook =
|
|
10
|
+
const dataHook = getHookFromPageContext(pageContext, 'data');
|
|
11
|
+
const onBeforeRenderHook = getHookFromPageContext(pageContext, 'onBeforeRender');
|
|
12
12
|
if (!dataHook && !onBeforeRenderHook) {
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
@@ -5,7 +5,7 @@ import { type Hook } from '../../../shared/hooks/getHook.js';
|
|
|
5
5
|
import type { PageAsset } from './getPageAssets.js';
|
|
6
6
|
import { type PageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
|
|
7
7
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
8
|
-
import type { PageContextSerialization } from '../html/
|
|
8
|
+
import type { PageContextSerialization } from '../html/serializeContext.js';
|
|
9
9
|
type GetPageAssets = () => Promise<PageAsset[]>;
|
|
10
10
|
type RenderHook = Hook & {
|
|
11
11
|
hookName: HookName;
|