vike 0.4.229 → 0.4.230
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/server-routing-runtime/utils.js +1 -0
- package/dist/cjs/client/shared/{preparePageContextForUserConsumptionClientSide.js → preparePageContextForPublicUsageClientShared.js} +14 -19
- package/dist/cjs/node/api/build.js +1 -5
- package/dist/cjs/node/plugin/index.js +3 -1
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -0
- 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 +5 -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/transpileAndExecuteFile.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -6
- 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/loggerNotProd.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
- package/dist/cjs/node/prerender/runPrerender.js +42 -38
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +13 -27
- package/dist/cjs/node/runtime/html/renderHtml.js +12 -2
- package/dist/cjs/node/runtime/html/serializeContext.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +3 -4
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +6 -9
- package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/cjs/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
- package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
- package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +0 -2
- package/dist/cjs/node/runtime/renderPage.js +21 -12
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -1
- package/dist/cjs/shared/addIs404ToPageProps.js +0 -7
- package/dist/cjs/shared/createGlobalContextShared.js +37 -8
- package/dist/cjs/shared/createPageContextShared.js +14 -11
- package/dist/cjs/shared/getPageContext.js +3 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
- package/dist/cjs/shared/getProxyForPublicUsage.js +56 -0
- package/dist/cjs/shared/hooks/execHook.js +170 -0
- package/dist/cjs/shared/hooks/getHook.js +23 -4
- package/dist/cjs/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +54 -47
- package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
- package/dist/cjs/shared/preparePageContextForPublicUsage.js +80 -0
- package/dist/cjs/shared/route/abort.js +2 -2
- package/dist/cjs/shared/route/debug.js +17 -7
- package/dist/cjs/shared/route/executeGuardHook.js +4 -9
- package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +4 -3
- package/dist/cjs/shared/route/index.js +2 -4
- package/dist/cjs/shared/route/loadPageRoutes.js +6 -0
- package/dist/cjs/shared/route/resolveRouteFunction.js +14 -10
- package/dist/cjs/shared/utils.js +1 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/debug.js +15 -6
- package/dist/cjs/utils/isScriptFile.js +24 -21
- package/dist/cjs/utils/objectAssign.js +3 -3
- package/dist/cjs/utils/objectDefineProperty.js +1 -1
- package/dist/cjs/utils/parseNpmPackage.js +1 -0
- package/dist/cjs/utils/parseUrl-extras.js +0 -1
- package/dist/cjs/utils/requireResolve.js +39 -19
- package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +21 -13
- package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +9 -11
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +400 -15
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +56 -54
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +11 -1
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
- package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
- package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.d.ts +11 -0
- package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +135 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +72 -81
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +19 -13
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +15 -26
- package/dist/esm/client/server-routing-runtime/entry.js +4 -4
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +11 -1
- package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.d.ts +9 -0
- package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/utils.js +1 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +11 -1
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
- package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
- package/dist/esm/client/shared/{loadUserFilesClientSide.d.ts → loadPageConfigsLazyClientSide.d.ts} +2 -2
- package/dist/esm/client/shared/{loadUserFilesClientSide.js → loadPageConfigsLazyClientSide.js} +4 -4
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +11 -0
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +39 -0
- package/dist/esm/node/api/build.js +1 -2
- package/dist/esm/node/plugin/index.js +3 -1
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
- 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 +5 -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/transpileAndExecuteFile.js +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -6
- 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/loggerNotProd.js +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +37 -73
- package/dist/esm/node/prerender/runPrerender.js +42 -38
- 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 +46 -251
- package/dist/esm/node/runtime/globalContext.js +14 -28
- package/dist/esm/node/runtime/html/renderHtml.js +12 -2
- package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
- package/dist/esm/node/runtime/html/serializeContext.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +3 -4
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +26 -41
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +7 -10
- package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +12 -0
- package/dist/esm/node/runtime/renderPage/execHookServer.js +9 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -3
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +4 -2
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.d.ts → loadPageConfigsLazyServerSide.d.ts} +6 -6
- package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +20 -0
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +8 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +38 -74
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
- package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +0 -2
- package/dist/esm/node/runtime/renderPage/resolveRedirects.js +0 -1
- package/dist/esm/node/runtime/renderPage.d.ts +21 -39
- package/dist/esm/node/runtime/renderPage.js +22 -13
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/shared/NOT_SERIALIZABLE.js +0 -1
- package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -6
- package/dist/esm/shared/addIs404ToPageProps.js +1 -8
- package/dist/esm/shared/createGlobalContextShared.d.ts +28 -6
- package/dist/esm/shared/createGlobalContextShared.js +37 -8
- package/dist/esm/shared/createPageContextShared.d.ts +7 -6
- package/dist/esm/shared/createPageContextShared.js +15 -12
- package/dist/esm/shared/getPageContext.d.ts +1 -1
- package/dist/esm/shared/getPageContext.js +1 -1
- package/dist/esm/shared/getPageContextUrlComputed.d.ts +2 -5
- package/dist/esm/shared/getPageContextUrlComputed.js +3 -37
- package/dist/esm/shared/getPageFiles.d.ts +1 -1
- package/dist/esm/shared/getProxyForPublicUsage.d.ts +4 -0
- package/dist/esm/shared/getProxyForPublicUsage.js +54 -0
- package/dist/esm/shared/hooks/execHook.d.ts +63 -0
- package/dist/esm/shared/hooks/execHook.js +168 -0
- package/dist/esm/shared/hooks/getHook.d.ts +10 -11
- package/dist/esm/shared/hooks/getHook.js +23 -4
- package/dist/esm/shared/page-configs/Config.d.ts +11 -4
- package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.d.ts → getUserFriendlyConfigs.d.ts} +8 -6
- package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +55 -48
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +11 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.js +78 -0
- package/dist/esm/shared/route/abort.js +1 -1
- package/dist/esm/shared/route/debug.d.ts +4 -1
- package/dist/esm/shared/route/debug.js +17 -7
- package/dist/esm/shared/route/executeGuardHook.d.ts +4 -3
- package/dist/esm/shared/route/executeGuardHook.js +4 -9
- package/dist/esm/shared/route/executeOnBeforeRouteHook.js +4 -3
- package/dist/esm/shared/route/index.js +2 -4
- package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -1
- package/dist/esm/shared/route/loadPageRoutes.js +7 -1
- package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
- package/dist/esm/shared/route/resolveRouteFunction.js +14 -10
- package/dist/esm/shared/types.d.ts +14 -4
- package/dist/esm/shared/utils.d.ts +1 -0
- package/dist/esm/shared/utils.js +1 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +15 -6
- 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 +3 -3
- package/dist/esm/utils/objectDefineProperty.d.ts +0 -1
- package/dist/esm/utils/objectDefineProperty.js +1 -1
- package/dist/esm/utils/parseNpmPackage.d.ts +2 -0
- package/dist/esm/utils/parseNpmPackage.js +1 -1
- package/dist/esm/utils/parseUrl-extras.js +0 -1
- package/dist/esm/utils/requireResolve.js +39 -19
- package/package.json +2 -2
- package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
- package/dist/cjs/shared/getPageConfigsRuntime.js +0 -23
- package/dist/cjs/shared/hooks/executeHook.js +0 -87
- package/dist/cjs/shared/hooks/executeHookGeneric.js +0 -18
- package/dist/cjs/shared/preparePageContextForUserConsumption.js +0 -34
- package/dist/cjs/utils/getPublicProxy.js +0 -27
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +0 -2
- package/dist/esm/client/shared/getPageContextProxyForUser.js +0 -14
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +0 -12
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +0 -44
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
- package/dist/esm/shared/getPageConfigsRuntime.d.ts +0 -14
- package/dist/esm/shared/getPageConfigsRuntime.js +0 -21
- package/dist/esm/shared/hooks/executeHook.d.ts +0 -21
- package/dist/esm/shared/hooks/executeHook.js +0 -85
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +0 -8
- package/dist/esm/shared/hooks/executeHookGeneric.js +0 -16
- package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +0 -5
- package/dist/esm/shared/preparePageContextForUserConsumption.js +0 -32
- package/dist/esm/utils/getPublicProxy.d.ts +0 -2
- package/dist/esm/utils/getPublicProxy.js +0 -25
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.preparePageContextForUserConsumption = preparePageContextForUserConsumption;
|
|
4
|
-
const utils_js_1 = require("./utils.js");
|
|
5
|
-
const addIs404ToPageProps_js_1 = require("./addIs404ToPageProps.js");
|
|
6
|
-
function preparePageContextForUserConsumption(pageContext) {
|
|
7
|
-
(0, utils_js_1.assert)(pageContext.pageId);
|
|
8
|
-
(0, utils_js_1.assert)('config' in pageContext);
|
|
9
|
-
(0, utils_js_1.assert)('configEntries' in pageContext);
|
|
10
|
-
(0, addIs404ToPageProps_js_1.addIs404ToPageProps)(pageContext);
|
|
11
|
-
// TODO/next-major-release: remove
|
|
12
|
-
if (!('_pageId' in pageContext)) {
|
|
13
|
-
Object.defineProperty(pageContext, '_pageId', {
|
|
14
|
-
get() {
|
|
15
|
-
(0, utils_js_1.assertWarning)(false, 'pageContext._pageId has been renamed to pageContext.pageId', {
|
|
16
|
-
showStackTrace: true,
|
|
17
|
-
onlyOnce: true
|
|
18
|
-
});
|
|
19
|
-
return pageContext.pageId;
|
|
20
|
-
},
|
|
21
|
-
enumerable: false
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
// For a more readable `console.log(pageContext)` output
|
|
25
|
-
sortPageContext(pageContext);
|
|
26
|
-
}
|
|
27
|
-
// Sort `pageContext` keys alphabetically, in order to make reading the `console.log(pageContext)` output easier
|
|
28
|
-
function sortPageContext(pageContext) {
|
|
29
|
-
let descriptors = Object.getOwnPropertyDescriptors(pageContext);
|
|
30
|
-
for (const key of Object.keys(pageContext))
|
|
31
|
-
delete pageContext[key];
|
|
32
|
-
descriptors = Object.fromEntries(Object.entries(descriptors).sort(([key1], [key2]) => (0, utils_js_1.compareString)(key1, key2)));
|
|
33
|
-
Object.defineProperties(pageContext, descriptors);
|
|
34
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPublicProxy = getPublicProxy;
|
|
4
|
-
// We use a proxy instead of property getters.
|
|
5
|
-
// - The issue with property getters is that they can't be `writable: true` but we do want the user to be able to modify the value of internal properties.
|
|
6
|
-
// ```console
|
|
7
|
-
// TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute, #<Object>
|
|
8
|
-
// ```
|
|
9
|
-
// - Previous implementation using property getters: https://github.com/vikejs/vike/blob/main/vike/utils/makePublicCopy.ts
|
|
10
|
-
const assert_js_1 = require("./assert.js");
|
|
11
|
-
// Show warning when user is accessing internal `_` properties.
|
|
12
|
-
function getPublicProxy(obj, objName, propsPublic, expectCustomUserLandProps) {
|
|
13
|
-
if (!expectCustomUserLandProps) {
|
|
14
|
-
Object.keys(obj).forEach((key) => (0, assert_js_1.assert)(key.startsWith('_') || propsPublic.includes(key)));
|
|
15
|
-
propsPublic.forEach((prop) => prop in obj);
|
|
16
|
-
}
|
|
17
|
-
return new Proxy(obj, {
|
|
18
|
-
get(_, prop) {
|
|
19
|
-
const propStr = String(prop);
|
|
20
|
-
if (propStr.startsWith('_')) {
|
|
21
|
-
(0, assert_js_1.assertWarning)(false, `Using internal ${objName}.${propStr} which may break in any minor version update. Reach out on GitHub and elaborate your use case so that the Vike team can add official support for your use case.`, { onlyOnce: true });
|
|
22
|
-
}
|
|
23
|
-
// @ts-ignore Seems to be TypeScript bug
|
|
24
|
-
return Reflect.get(...arguments);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { getPageContextProxyForUser };
|
|
2
|
-
import { assertUsage, getPropAccessNotation } from '../server-routing-runtime/utils.js';
|
|
3
|
-
import { NOT_SERIALIZABLE } from '../../shared/NOT_SERIALIZABLE.js';
|
|
4
|
-
// Throw error when pageContext value isn't serializable
|
|
5
|
-
function getPageContextProxyForUser(pageContext) {
|
|
6
|
-
return new Proxy(pageContext, {
|
|
7
|
-
get(_, prop) {
|
|
8
|
-
const val = pageContext[prop];
|
|
9
|
-
const propName = getPropAccessNotation(prop);
|
|
10
|
-
assertUsage(val !== NOT_SERIALIZABLE, `Can't access pageContext${propName} on the client side. Because it can't be serialized, see server logs.`);
|
|
11
|
-
return val;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export { preparePageContextForUserConsumptionClientSide };
|
|
2
|
-
export type { PageContextForUserConsumptionClientSide };
|
|
3
|
-
import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
4
|
-
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
5
|
-
type PageContextForUserConsumptionClientSide = PageConfigUserFriendlyOld & {
|
|
6
|
-
pageId: string;
|
|
7
|
-
_hasPageContextFromServer: boolean;
|
|
8
|
-
_pageConfigs: PageConfigRuntime[];
|
|
9
|
-
};
|
|
10
|
-
declare function preparePageContextForUserConsumptionClientSide<T extends PageContextForUserConsumptionClientSide>(pageContext: T, isClientRouting: boolean): T & {
|
|
11
|
-
Page: unknown;
|
|
12
|
-
};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export { preparePageContextForUserConsumptionClientSide };
|
|
2
|
-
import { assert, objectAssign } from '../server-routing-runtime/utils.js';
|
|
3
|
-
import { getPageContextProxyForUser } from './getPageContextProxyForUser.js';
|
|
4
|
-
import { preparePageContextForUserConsumption } from '../../shared/preparePageContextForUserConsumption.js';
|
|
5
|
-
function preparePageContextForUserConsumptionClientSide(pageContext, isClientRouting) {
|
|
6
|
-
if (isClientRouting) {
|
|
7
|
-
const pageContextTyped = pageContext;
|
|
8
|
-
assert([true, false].includes(pageContextTyped.isHydration));
|
|
9
|
-
assert([true, false, null].includes(pageContextTyped.isBackwardNavigation));
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
const pageContextTyped = pageContext;
|
|
13
|
-
assert(pageContextTyped.isHydration === true);
|
|
14
|
-
assert(pageContextTyped.isBackwardNavigation === null);
|
|
15
|
-
}
|
|
16
|
-
const Page = pageContext.config.Page ||
|
|
17
|
-
// TODO/next-major-release: remove
|
|
18
|
-
pageContext.exports.Page;
|
|
19
|
-
objectAssign(pageContext, { Page });
|
|
20
|
-
// TODO/next-major-release: remove
|
|
21
|
-
// - Requires https://github.com/vikejs/vike-vue/issues/198
|
|
22
|
-
// - Last time I tried to remove it (https://github.com/vikejs/vike/commit/705fd23598d9d69bf46a52c8550216cd7117ce71) the tests were failing as expected: only the Vue integrations that used shallowReactive() failed.
|
|
23
|
-
supportVueReactiviy(pageContext);
|
|
24
|
-
preparePageContextForUserConsumption(pageContext);
|
|
25
|
-
const pageContextProxy = getPageContextProxyForUser(pageContext);
|
|
26
|
-
return pageContextProxy;
|
|
27
|
-
}
|
|
28
|
-
// With Vue + Cient Routing, the `pageContext` is made reactive:
|
|
29
|
-
// ```js
|
|
30
|
-
// import { reactive } from 'vue'
|
|
31
|
-
// // See /examples/vue-full/renderer/createVueApp.ts
|
|
32
|
-
// const pageContextReactive = reactive(pageContext)
|
|
33
|
-
// ```
|
|
34
|
-
function supportVueReactiviy(pageContext) {
|
|
35
|
-
resolveGetters(pageContext);
|
|
36
|
-
}
|
|
37
|
-
// Remove propery descriptor getters because they break Vue's reactivity.
|
|
38
|
-
// E.g. resolve the `pageContext.urlPathname` getter.
|
|
39
|
-
function resolveGetters(pageContext) {
|
|
40
|
-
Object.entries(pageContext).forEach(([key, val]) => {
|
|
41
|
-
delete pageContext[key];
|
|
42
|
-
pageContext[key] = val;
|
|
43
|
-
});
|
|
44
|
-
}
|
package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export { preparePageContextForUserConsumptionServerSide };
|
|
2
|
-
export type { PageContextForUserConsumptionServerSide };
|
|
3
|
-
import { PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
4
|
-
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
|
-
import type { PageConfigUserFriendlyOld } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
6
|
-
import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
|
|
7
|
-
import type { GlobalContextServerInternal, GlobalContextServer } from '../globalContext.js';
|
|
8
|
-
type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & PageConfigUserFriendlyOld & {
|
|
9
|
-
urlOriginal: string;
|
|
10
|
-
/** @deprecated */
|
|
11
|
-
url: string;
|
|
12
|
-
urlPathname: string;
|
|
13
|
-
urlParsed: PageContextUrlInternal['urlParsed'];
|
|
14
|
-
routeParams: Record<string, string>;
|
|
15
|
-
Page: unknown;
|
|
16
|
-
pageId: string;
|
|
17
|
-
_pageConfigs: PageConfigRuntime[];
|
|
18
|
-
is404: null | boolean;
|
|
19
|
-
isClientSideNavigation: boolean;
|
|
20
|
-
pageProps?: Record<string, unknown>;
|
|
21
|
-
_globalContext: GlobalContextServerInternal;
|
|
22
|
-
globalContext: GlobalContextServer;
|
|
23
|
-
} & Record<string, unknown>;
|
|
24
|
-
declare function preparePageContextForUserConsumptionServerSide(pageContext: PageContextForUserConsumptionServerSide): void;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { preparePageContextForUserConsumptionServerSide };
|
|
2
|
-
import { assert, isPlainObject } from '../utils.js';
|
|
3
|
-
import { assertPageContextUrl } from '../../../shared/getPageContextUrlComputed.js';
|
|
4
|
-
import { preparePageContextForUserConsumption } from '../../../shared/preparePageContextForUserConsumption.js';
|
|
5
|
-
function preparePageContextForUserConsumptionServerSide(pageContext) {
|
|
6
|
-
assertPageContextUrl(pageContext);
|
|
7
|
-
assert(isPlainObject(pageContext.routeParams));
|
|
8
|
-
assert('Page' in pageContext);
|
|
9
|
-
assert(typeof pageContext.isClientSideNavigation === 'boolean');
|
|
10
|
-
assert(pageContext.isPageContext);
|
|
11
|
-
assert(pageContext.isClientSide === false);
|
|
12
|
-
assert(typeof pageContext.isPrerendering === 'boolean');
|
|
13
|
-
preparePageContextForUserConsumption(pageContext);
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { getPageConfigsRuntime };
|
|
2
|
-
export { getAllPageIds };
|
|
3
|
-
import type { PageFile } from './getPageFiles.js';
|
|
4
|
-
import { type PageConfigUserFriendly, type PageConfigsUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
5
|
-
import type { PageConfigGlobalRuntime, PageConfigRuntime } from './page-configs/PageConfig.js';
|
|
6
|
-
declare function getPageConfigsRuntime(virtualFileExports: unknown): {
|
|
7
|
-
pageFilesAll: PageFile[];
|
|
8
|
-
allPageIds: string[];
|
|
9
|
-
pageConfigs: PageConfigRuntime[];
|
|
10
|
-
pageConfigGlobal: PageConfigGlobalRuntime;
|
|
11
|
-
globalConfig: PageConfigUserFriendly;
|
|
12
|
-
pageConfigsUserFriendly: PageConfigsUserFriendly;
|
|
13
|
-
};
|
|
14
|
-
declare function getAllPageIds(pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[]): string[];
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export { getPageConfigsRuntime };
|
|
2
|
-
export { getAllPageIds };
|
|
3
|
-
import { parseGlobResults } from './getPageFiles/parseGlobResults.js';
|
|
4
|
-
import { getPageConfigGlobalUserFriendly, getPageConfigUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
5
|
-
import { unique } from './utils.js';
|
|
6
|
-
function getPageConfigsRuntime(virtualFileExports) {
|
|
7
|
-
const { pageFilesAll, pageConfigs, pageConfigGlobal } = parseGlobResults(virtualFileExports);
|
|
8
|
-
const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
|
|
9
|
-
// TODO/now: re-use this call, instead of calling it twice
|
|
10
|
-
const globalConfig = getPageConfigGlobalUserFriendly({ pageConfigGlobalValues: pageConfigGlobal.configValues });
|
|
11
|
-
const pageConfigsUserFriendly = Object.fromEntries(pageConfigs.map((pageConfig) => {
|
|
12
|
-
return getPageConfigUserFriendly(pageConfigGlobal.configValues, pageConfig, pageConfig.configValues);
|
|
13
|
-
}));
|
|
14
|
-
return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly };
|
|
15
|
-
}
|
|
16
|
-
function getAllPageIds(pageFilesAll, pageConfigs) {
|
|
17
|
-
const fileIds = pageFilesAll.filter(({ isDefaultPageFile }) => !isDefaultPageFile).map(({ pageId }) => pageId);
|
|
18
|
-
const allPageIds = unique(fileIds);
|
|
19
|
-
const allPageIds2 = pageConfigs.map((p) => p.pageId);
|
|
20
|
-
return [...allPageIds, ...allPageIds2];
|
|
21
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export { executeHook };
|
|
2
|
-
export { getPageContext };
|
|
3
|
-
export { providePageContext };
|
|
4
|
-
export { isUserHookError };
|
|
5
|
-
import type { PageContextClient, PageContextServer } from '../types.js';
|
|
6
|
-
import type { Hook, HookLoc } from './getHook.js';
|
|
7
|
-
type PageContextUnknown = null | Record<string, any>;
|
|
8
|
-
declare function isUserHookError(err: unknown): false | HookLoc;
|
|
9
|
-
declare function executeHook<T = unknown>(hookFnCaller: () => T, hook: Omit<Hook, 'hookFn'>, pageContext: PageContextUnknown): Promise<T>;
|
|
10
|
-
/**
|
|
11
|
-
* Access `pageContext` object inside Vike hooks, in order to create universal hooks.
|
|
12
|
-
*
|
|
13
|
-
* https://vike.dev/getPageContext
|
|
14
|
-
*/
|
|
15
|
-
declare function getPageContext<PageContext = PageContextClient | PageContextServer>(): null | PageContext;
|
|
16
|
-
/**
|
|
17
|
-
* Provide `pageContext` for universal hooks.
|
|
18
|
-
*
|
|
19
|
-
* https://vike.dev/getPageContext
|
|
20
|
-
*/
|
|
21
|
-
declare function providePageContext(pageContext: PageContextUnknown): void;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
export { executeHook };
|
|
2
|
-
export { getPageContext };
|
|
3
|
-
export { providePageContext };
|
|
4
|
-
export { isUserHookError };
|
|
5
|
-
import { getProjectError, assertWarning } from '../../utils/assert.js';
|
|
6
|
-
import { getGlobalObject } from '../../utils/getGlobalObject.js';
|
|
7
|
-
import { humanizeTime } from '../../utils/humanizeTime.js';
|
|
8
|
-
import { isObject } from '../../utils/isObject.js';
|
|
9
|
-
const globalObject = getGlobalObject('utils/executeHook.ts', {
|
|
10
|
-
userHookErrors: new WeakMap(),
|
|
11
|
-
pageContext: null
|
|
12
|
-
});
|
|
13
|
-
function isUserHookError(err) {
|
|
14
|
-
if (!isObject(err))
|
|
15
|
-
return false;
|
|
16
|
-
return globalObject.userHookErrors.get(err) ?? false;
|
|
17
|
-
}
|
|
18
|
-
function executeHook(hookFnCaller, hook, pageContext) {
|
|
19
|
-
const { hookName, hookFilePath, hookTimeout: { error: timeoutErr, warning: timeoutWarn } } = hook;
|
|
20
|
-
let resolve;
|
|
21
|
-
let reject;
|
|
22
|
-
const promise = new Promise((resolve_, reject_) => {
|
|
23
|
-
resolve = (ret) => {
|
|
24
|
-
clearTimeouts();
|
|
25
|
-
resolve_(ret);
|
|
26
|
-
};
|
|
27
|
-
reject = (err) => {
|
|
28
|
-
clearTimeouts();
|
|
29
|
-
reject_(err);
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
const clearTimeouts = () => {
|
|
33
|
-
if (currentTimeoutWarn)
|
|
34
|
-
clearTimeout(currentTimeoutWarn);
|
|
35
|
-
if (currentTimeoutErr)
|
|
36
|
-
clearTimeout(currentTimeoutErr);
|
|
37
|
-
};
|
|
38
|
-
const currentTimeoutWarn = isNotDisabled(timeoutWarn) &&
|
|
39
|
-
setTimeout(() => {
|
|
40
|
-
assertWarning(false, `The ${hookName}() hook defined by ${hookFilePath} is slow: it's taking more than ${humanizeTime(timeoutWarn)} (https://vike.dev/hooksTimeout)`, { onlyOnce: false });
|
|
41
|
-
}, timeoutWarn);
|
|
42
|
-
const currentTimeoutErr = isNotDisabled(timeoutErr) &&
|
|
43
|
-
setTimeout(() => {
|
|
44
|
-
const err = getProjectError(`The ${hookName}() hook defined by ${hookFilePath} timed out: it didn't finish after ${humanizeTime(timeoutErr)} (https://vike.dev/hooksTimeout)`);
|
|
45
|
-
reject(err);
|
|
46
|
-
}, timeoutErr);
|
|
47
|
-
(async () => {
|
|
48
|
-
try {
|
|
49
|
-
providePageContext(pageContext);
|
|
50
|
-
const ret = await hookFnCaller();
|
|
51
|
-
resolve(ret);
|
|
52
|
-
}
|
|
53
|
-
catch (err) {
|
|
54
|
-
if (isObject(err)) {
|
|
55
|
-
globalObject.userHookErrors.set(err, { hookName, hookFilePath });
|
|
56
|
-
}
|
|
57
|
-
reject(err);
|
|
58
|
-
}
|
|
59
|
-
})();
|
|
60
|
-
return promise;
|
|
61
|
-
}
|
|
62
|
-
function isNotDisabled(timeout) {
|
|
63
|
-
return !!timeout && timeout !== Infinity;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Access `pageContext` object inside Vike hooks, in order to create universal hooks.
|
|
67
|
-
*
|
|
68
|
-
* https://vike.dev/getPageContext
|
|
69
|
-
*/
|
|
70
|
-
function getPageContext() {
|
|
71
|
-
return globalObject.pageContext;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Provide `pageContext` for universal hooks.
|
|
75
|
-
*
|
|
76
|
-
* https://vike.dev/getPageContext
|
|
77
|
-
*/
|
|
78
|
-
function providePageContext(pageContext) {
|
|
79
|
-
globalObject.pageContext = pageContext;
|
|
80
|
-
// Promise.resolve() is quicker than process.nextTick() and setImmediate()
|
|
81
|
-
// https://stackoverflow.com/questions/67949576/process-nexttick-before-promise-resolve-then
|
|
82
|
-
Promise.resolve().then(() => {
|
|
83
|
-
globalObject.pageContext = null;
|
|
84
|
-
});
|
|
85
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { executeHookGeneric };
|
|
2
|
-
export { executeHookGenericGlobalCumulative };
|
|
3
|
-
import type { PageConfigUserFriendlyOld } from '../getPageFiles.js';
|
|
4
|
-
import { type HookName } from './getHook.js';
|
|
5
|
-
import type { HookNameGlobal } from '../page-configs/Config.js';
|
|
6
|
-
import type { PageConfigGlobalRuntime } from '../page-configs/PageConfig.js';
|
|
7
|
-
declare function executeHookGeneric(hookName: HookName, pageContext: PageConfigUserFriendlyOld): Promise<void>;
|
|
8
|
-
declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal, pageConfigGlobal: PageConfigGlobalRuntime, pageContext: object | null, arg: object): Promise<void>;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export { executeHookGeneric }; // TO-DO/refactor: start using executeHookGeneric() and, eventually, prominently use it
|
|
2
|
-
export { executeHookGenericGlobalCumulative };
|
|
3
|
-
import { executeHook } from './executeHook.js';
|
|
4
|
-
import { getHookFromPageContext, getHookFromPageConfigGlobalCumulative } from './getHook.js';
|
|
5
|
-
async function executeHookGeneric(hookName, pageContext) {
|
|
6
|
-
const hook = getHookFromPageContext(pageContext, hookName);
|
|
7
|
-
if (!hook)
|
|
8
|
-
return;
|
|
9
|
-
await executeHook(() => hook.hookFn(pageContext), hook, pageContext);
|
|
10
|
-
}
|
|
11
|
-
async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext, arg) {
|
|
12
|
-
const hooks = getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName);
|
|
13
|
-
await Promise.all(hooks.map(async (hook) => {
|
|
14
|
-
await executeHook(() => hook.hookFn(arg), hook, pageContext);
|
|
15
|
-
}));
|
|
16
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { preparePageContextForUserConsumption };
|
|
2
|
-
import type { PageContextForUserConsumptionClientSide } from '../client/shared/preparePageContextForUserConsumptionClientSide.js';
|
|
3
|
-
import type { PageContextForUserConsumptionServerSide } from '../node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js';
|
|
4
|
-
type PageContextForUserConsumption = PageContextForUserConsumptionServerSide | PageContextForUserConsumptionClientSide;
|
|
5
|
-
declare function preparePageContextForUserConsumption(pageContext: PageContextForUserConsumption): void;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export { preparePageContextForUserConsumption };
|
|
2
|
-
import { assert, assertWarning, compareString } from './utils.js';
|
|
3
|
-
import { addIs404ToPageProps } from './addIs404ToPageProps.js';
|
|
4
|
-
function preparePageContextForUserConsumption(pageContext) {
|
|
5
|
-
assert(pageContext.pageId);
|
|
6
|
-
assert('config' in pageContext);
|
|
7
|
-
assert('configEntries' in pageContext);
|
|
8
|
-
addIs404ToPageProps(pageContext);
|
|
9
|
-
// TODO/next-major-release: remove
|
|
10
|
-
if (!('_pageId' in pageContext)) {
|
|
11
|
-
Object.defineProperty(pageContext, '_pageId', {
|
|
12
|
-
get() {
|
|
13
|
-
assertWarning(false, 'pageContext._pageId has been renamed to pageContext.pageId', {
|
|
14
|
-
showStackTrace: true,
|
|
15
|
-
onlyOnce: true
|
|
16
|
-
});
|
|
17
|
-
return pageContext.pageId;
|
|
18
|
-
},
|
|
19
|
-
enumerable: false
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
// For a more readable `console.log(pageContext)` output
|
|
23
|
-
sortPageContext(pageContext);
|
|
24
|
-
}
|
|
25
|
-
// Sort `pageContext` keys alphabetically, in order to make reading the `console.log(pageContext)` output easier
|
|
26
|
-
function sortPageContext(pageContext) {
|
|
27
|
-
let descriptors = Object.getOwnPropertyDescriptors(pageContext);
|
|
28
|
-
for (const key of Object.keys(pageContext))
|
|
29
|
-
delete pageContext[key];
|
|
30
|
-
descriptors = Object.fromEntries(Object.entries(descriptors).sort(([key1], [key2]) => compareString(key1, key2)));
|
|
31
|
-
Object.defineProperties(pageContext, descriptors);
|
|
32
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export { getPublicProxy };
|
|
2
|
-
// We use a proxy instead of property getters.
|
|
3
|
-
// - The issue with property getters is that they can't be `writable: true` but we do want the user to be able to modify the value of internal properties.
|
|
4
|
-
// ```console
|
|
5
|
-
// TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute, #<Object>
|
|
6
|
-
// ```
|
|
7
|
-
// - Previous implementation using property getters: https://github.com/vikejs/vike/blob/main/vike/utils/makePublicCopy.ts
|
|
8
|
-
import { assert, assertWarning } from './assert.js';
|
|
9
|
-
// Show warning when user is accessing internal `_` properties.
|
|
10
|
-
function getPublicProxy(obj, objName, propsPublic, expectCustomUserLandProps) {
|
|
11
|
-
if (!expectCustomUserLandProps) {
|
|
12
|
-
Object.keys(obj).forEach((key) => assert(key.startsWith('_') || propsPublic.includes(key)));
|
|
13
|
-
propsPublic.forEach((prop) => prop in obj);
|
|
14
|
-
}
|
|
15
|
-
return new Proxy(obj, {
|
|
16
|
-
get(_, prop) {
|
|
17
|
-
const propStr = String(prop);
|
|
18
|
-
if (propStr.startsWith('_')) {
|
|
19
|
-
assertWarning(false, `Using internal ${objName}.${propStr} which may break in any minor version update. Reach out on GitHub and elaborate your use case so that the Vike team can add official support for your use case.`, { onlyOnce: true });
|
|
20
|
-
}
|
|
21
|
-
// @ts-ignore Seems to be TypeScript bug
|
|
22
|
-
return Reflect.get(...arguments);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|