vike 0.4.196 → 0.4.197-commit-9db6c02
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/client-routing-runtime/prefetch/PrefetchSetting.js +2 -0
- package/dist/cjs/client/server-routing-runtime/onLoad.js +7 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +34 -0
- package/dist/cjs/client/shared/getPageContextProxyForUser.js +79 -0
- package/dist/cjs/client/shared/preparePageContextForUserConsumptionClientSide.js +46 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +17 -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/resolvePointerImport.js +26 -23
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformFileImports.js → transformPointerImports.js} +3 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +44 -47
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
- package/dist/cjs/node/prerender/runPrerender.js +5 -5
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
- package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +2 -2
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +3 -3
- package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +1 -1
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -4
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -7
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -4
- package/dist/cjs/node/runtime/renderPage.js +8 -8
- package/dist/cjs/shared/addIs404ToPageProps.js +1 -1
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +2 -2
- package/dist/cjs/shared/preparePageContextForUserConsumption.js +34 -0
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +6 -6
- package/dist/cjs/shared/route/index.js +3 -3
- package/dist/cjs/shared/route/resolveRouteString.js +10 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/isNpmPackage.js +4 -0
- package/dist/cjs/utils/isScriptFile.js +3 -3
- package/dist/esm/client/client-routing-runtime/entry.js +2 -2
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +10 -0
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.js +25 -0
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +28 -18
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +39 -32
- package/dist/esm/client/client-routing-runtime/history.js +1 -1
- package/dist/esm/client/client-routing-runtime/initClientRouter.d.ts +2 -0
- package/dist/esm/client/client-routing-runtime/{installClientRouter.js → initClientRouter.js} +11 -8
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +2 -0
- package/dist/esm/client/client-routing-runtime/{onLinkClick.js → initOnLinkClick.js} +2 -2
- package/dist/esm/client/client-routing-runtime/isClientSideRoutable.js +1 -0
- package/dist/esm/client/client-routing-runtime/onBrowserHistoryNavigation.js +1 -1
- package/dist/esm/client/client-routing-runtime/prefetch/PrefetchSetting.d.ts +7 -0
- package/dist/esm/client/client-routing-runtime/prefetch/PrefetchSetting.js +1 -0
- package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +8 -7
- package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.js +74 -67
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +16 -5
- package/dist/esm/client/client-routing-runtime/prefetch.js +167 -64
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +115 -28
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.js +1 -1
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +1 -1
- package/dist/esm/client/shared/getPageContextSerializedInHtml.d.ts +1 -1
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +1 -1
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +1 -1
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +20 -29
- package/dist/esm/client/shared/removeFoucBuster.js +17 -11
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +17 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -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 +25 -22
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformFileImports.d.ts → transformPointerImports.d.ts} +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformFileImports.js → transformPointerImports.js} +3 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +45 -48
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
- package/dist/esm/node/prerender/runPrerender.js +5 -5
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
- package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
- package/dist/esm/node/runtime/html/injectAssets.d.ts +1 -1
- package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +1 -1
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +3 -3
- package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/debugPageFiles.js +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -4
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -8
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +6 -6
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -4
- package/dist/esm/node/runtime/renderPage.js +8 -8
- package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -1
- package/dist/esm/shared/addIs404ToPageProps.js +1 -1
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/page-configs/Config.d.ts +21 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +1 -1
- package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +5 -0
- package/dist/esm/shared/preparePageContextForUserConsumption.js +32 -0
- package/dist/esm/shared/route/executeGuardHook.d.ts +1 -1
- package/dist/esm/shared/route/executeGuardHook.js +1 -1
- package/dist/esm/shared/route/executeOnBeforeRouteHook.js +6 -6
- package/dist/esm/shared/route/index.d.ts +1 -1
- package/dist/esm/shared/route/index.js +3 -3
- package/dist/esm/shared/route/resolveRouteString.d.ts +2 -15
- package/dist/esm/shared/route/resolveRouteString.js +10 -1
- package/dist/esm/shared/types.d.ts +6 -2
- 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/isNpmPackage.d.ts +2 -0
- package/dist/esm/utils/isNpmPackage.js +4 -0
- package/dist/esm/utils/isScriptFile.d.ts +2 -2
- package/dist/esm/utils/isScriptFile.js +3 -3
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/shared/sortPageContext.js +0 -12
- package/dist/esm/client/client-routing-runtime/installClientRouter.d.ts +0 -2
- package/dist/esm/client/client-routing-runtime/onLinkClick.d.ts +0 -2
- package/dist/esm/client/client-routing-runtime/prefetch/alreadyPrefetched.d.ts +0 -4
- package/dist/esm/client/client-routing-runtime/prefetch/alreadyPrefetched.js +0 -16
- package/dist/esm/shared/sortPageContext.d.ts +0 -2
- package/dist/esm/shared/sortPageContext.js +0 -10
- /package/{readme.md → README.md} +0 -0
|
@@ -14,7 +14,7 @@ const assertNoInfiniteHttpRedirect_js_1 = require("./createHttpResponse/assertNo
|
|
|
14
14
|
async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
|
|
15
15
|
let statusCode = pageContext.abortStatusCode;
|
|
16
16
|
if (!statusCode) {
|
|
17
|
-
const isError = !pageContext.
|
|
17
|
+
const isError = !pageContext.pageId || (0, error_page_js_1.isErrorPage)(pageContext.pageId, pageContext._pageConfigs);
|
|
18
18
|
if (pageContext.errorWhileRendering) {
|
|
19
19
|
(0, utils_js_1.assert)(isError);
|
|
20
20
|
}
|
|
@@ -29,8 +29,8 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
|
|
|
29
29
|
}
|
|
30
30
|
const earlyHints = (0, getEarlyHints_js_1.getEarlyHints)(await pageContext.__getPageAssets());
|
|
31
31
|
const headers = [];
|
|
32
|
-
(0, utils_js_1.assert)(pageContext.
|
|
33
|
-
const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.
|
|
32
|
+
(0, utils_js_1.assert)(pageContext.pageId);
|
|
33
|
+
const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._pageConfigs);
|
|
34
34
|
if (cacheControl) {
|
|
35
35
|
headers.push(['Cache-Control', cacheControl]);
|
|
36
36
|
}
|
|
@@ -12,7 +12,7 @@ function debugPageFiles({ pageContext, isHtmlOnly, isClientRouting, pageFilesLoa
|
|
|
12
12
|
debug('All page files:', printPageFiles(pageContext._pageFilesAll, true)); // TODO
|
|
13
13
|
debug(`URL:`, pageContext.urlOriginal);
|
|
14
14
|
debug.options({ serialization: { emptyArray: 'No match' } })(`Routing:`, printRouteMatches(pageContext._debugRouteMatches));
|
|
15
|
-
debug(`pageId:`, pageContext.
|
|
15
|
+
debug(`pageId:`, pageContext.pageId);
|
|
16
16
|
debug('Page type:', isHtmlOnly ? 'HTML-only' : 'SSR/SPA');
|
|
17
17
|
debug(`Routing type:`, !isHtmlOnly && isClientRouting ? 'Client Routing' : 'Server Routing');
|
|
18
18
|
debug('Server-side page files:', printPageFiles(pageFilesLoaded));
|
|
@@ -11,7 +11,7 @@ const createHttpResponse_js_1 = require("./createHttpResponse.js");
|
|
|
11
11
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
12
12
|
// When the user hasn't defined _error.page.js
|
|
13
13
|
async function handleErrorWithoutErrorPage(pageContext) {
|
|
14
|
-
(0, utils_js_1.assert)(pageContext.
|
|
14
|
+
(0, utils_js_1.assert)(pageContext.pageId === null);
|
|
15
15
|
(0, utils_js_1.assert)(pageContext.errorWhileRendering || pageContext.is404);
|
|
16
16
|
{
|
|
17
17
|
const isV1 = pageContext._pageConfigs.length > 0;
|
|
@@ -11,12 +11,12 @@ const analyzePage_js_1 = require("./analyzePage.js");
|
|
|
11
11
|
const globalContext_js_1 = require("../globalContext.js");
|
|
12
12
|
const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
|
|
13
13
|
async function loadUserFilesServerSide(pageContext) {
|
|
14
|
-
const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext.
|
|
14
|
+
const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig?
|
|
15
15
|
const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
|
|
16
|
-
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.
|
|
17
|
-
(0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext.
|
|
16
|
+
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !(0, globalContext_js_1.getGlobalContext)().isProduction),
|
|
17
|
+
(0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext.pageId, { sharedPageFilesAlreadyLoaded: true })
|
|
18
18
|
]);
|
|
19
|
-
const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext.
|
|
19
|
+
const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext.pageId);
|
|
20
20
|
const isV1Design = !!pageConfig;
|
|
21
21
|
const passToClient = [];
|
|
22
22
|
const errMsg = ' should be an array of strings.';
|
|
@@ -2,17 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.preparePageContextForUserConsumptionServerSide = preparePageContextForUserConsumptionServerSide;
|
|
4
4
|
const utils_js_1 = require("../utils.js");
|
|
5
|
-
const sortPageContext_js_1 = require("../../../shared/sortPageContext.js");
|
|
6
5
|
const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
|
|
7
|
-
const
|
|
6
|
+
const preparePageContextForUserConsumption_js_1 = require("../../../shared/preparePageContextForUserConsumption.js");
|
|
8
7
|
function preparePageContextForUserConsumptionServerSide(pageContext) {
|
|
9
8
|
(0, getPageContextUrlComputed_js_1.assertPageContextUrl)(pageContext);
|
|
10
9
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(pageContext.routeParams));
|
|
11
10
|
(0, utils_js_1.assert)('Page' in pageContext);
|
|
12
|
-
(0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.pageExports));
|
|
13
|
-
(0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.exports));
|
|
14
|
-
(0, utils_js_1.assert)((0, utils_js_1.isObject)(pageContext.exportsAll));
|
|
15
11
|
(0, utils_js_1.assert)(typeof pageContext.isClientSideNavigation === 'boolean');
|
|
16
|
-
(0,
|
|
17
|
-
(0, addIs404ToPageProps_js_1.addIs404ToPageProps)(pageContext);
|
|
12
|
+
(0, preparePageContextForUserConsumption_js_1.preparePageContextForUserConsumption)(pageContext);
|
|
18
13
|
}
|
|
@@ -28,12 +28,12 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
|
28
28
|
const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
|
|
29
29
|
const assertV1Design_js_1 = require("../../shared/assertV1Design.js");
|
|
30
30
|
async function renderPageAlreadyRouted(pageContext) {
|
|
31
|
-
// pageContext.
|
|
31
|
+
// pageContext.pageId can either be the:
|
|
32
32
|
// - ID of the page matching the routing, or the
|
|
33
33
|
// - ID of the error page `_error.page.js`.
|
|
34
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '
|
|
34
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'pageId', 'string'));
|
|
35
35
|
const isError = pageContext.is404 || !!pageContext.errorWhileRendering;
|
|
36
|
-
(0, utils_js_1.assert)(isError === (pageContext.
|
|
36
|
+
(0, utils_js_1.assert)(isError === (pageContext.pageId === (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs)));
|
|
37
37
|
(0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
|
|
38
38
|
if (!isError) {
|
|
39
39
|
await (0, executeGuardHook_js_1.executeGuardHook)(pageContext, (pageContext) => (0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext));
|
|
@@ -95,7 +95,7 @@ async function prerender404Page(renderContext, pageContextInit_) {
|
|
|
95
95
|
return null;
|
|
96
96
|
}
|
|
97
97
|
const pageContext = {
|
|
98
|
-
|
|
98
|
+
pageId: errorPageId,
|
|
99
99
|
_httpRequestId: null,
|
|
100
100
|
_urlRewrite: null,
|
|
101
101
|
is404: true,
|
|
@@ -163,11 +163,11 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, renderC
|
|
|
163
163
|
{
|
|
164
164
|
const errorPageId = (0, error_page_js_1.getErrorPageId)(renderContext.pageFilesAll, renderContext.pageConfigs);
|
|
165
165
|
if (!errorPageId) {
|
|
166
|
-
(0, utils_js_1.objectAssign)(pageContextErrorPageInit, {
|
|
166
|
+
(0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
|
|
167
167
|
return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
|
|
168
168
|
}
|
|
169
169
|
else {
|
|
170
|
-
(0, utils_js_1.objectAssign)(pageContextErrorPageInit, {
|
|
170
|
+
(0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: errorPageId });
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
let pageContextErrorPage;
|
|
@@ -276,17 +276,17 @@ async function renderPageNominal(pageContext) {
|
|
|
276
276
|
{
|
|
277
277
|
const pageContextFromRoute = await (0, index_js_1.route)(pageContext);
|
|
278
278
|
(0, utils_js_1.objectAssign)(pageContext, pageContextFromRoute);
|
|
279
|
-
(0, utils_js_1.objectAssign)(pageContext, { is404: pageContext.
|
|
280
|
-
if (pageContext.
|
|
279
|
+
(0, utils_js_1.objectAssign)(pageContext, { is404: pageContext.pageId ? null : true });
|
|
280
|
+
if (pageContext.pageId === null) {
|
|
281
281
|
const errorPageId = (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs);
|
|
282
282
|
if (!errorPageId) {
|
|
283
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '
|
|
283
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'pageId', 'null'));
|
|
284
284
|
return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContext);
|
|
285
285
|
}
|
|
286
|
-
(0, utils_js_1.objectAssign)(pageContext, {
|
|
286
|
+
(0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, '
|
|
289
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'pageId', 'string'));
|
|
290
290
|
(0, utils_js_1.assert)(pageContext.errorWhileRendering === null);
|
|
291
291
|
// Render
|
|
292
292
|
const pageContextAfterRender = await (0, renderPageAlreadyRouted_js_1.renderPageAlreadyRouted)(pageContext);
|
|
@@ -406,7 +406,7 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
|
|
|
406
406
|
(0, utils_js_1.assert)(abortCall);
|
|
407
407
|
(0, utils_js_1.assertUsage)(errorPageId, `You called ${picocolors_1.default.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
|
|
408
408
|
const pageContext = createPageContext({});
|
|
409
|
-
(0, utils_js_1.objectAssign)(pageContext, {
|
|
409
|
+
(0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
|
|
410
410
|
(0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
|
|
411
411
|
(0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit);
|
|
412
412
|
(0, utils_js_1.objectAssign)(pageContext, renderContext);
|
|
@@ -8,7 +8,7 @@ function addIs404ToPageProps(pageContext) {
|
|
|
8
8
|
addIs404(pageContext);
|
|
9
9
|
}
|
|
10
10
|
function assertIs404(pageContext) {
|
|
11
|
-
if ((0, error_page_js_1.isErrorPage)(pageContext.
|
|
11
|
+
if ((0, error_page_js_1.isErrorPage)(pageContext.pageId, pageContext._pageConfigs)) {
|
|
12
12
|
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContext, 'is404', 'boolean'));
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -15,6 +15,6 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
|
|
|
15
15
|
(0, utils_js_1.assertUsage)(!('_objectCreatedByVike' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${picocolors_1.default.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
|
|
16
16
|
// In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
|
|
17
17
|
// Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
|
|
18
|
-
(0, utils_js_1.assertWarning)(!('
|
|
18
|
+
(0, utils_js_1.assertWarning)(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
|
|
19
19
|
(0, utils_js_1.assertUsage)(!('is404' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.is404')} which is forbidden, use ${picocolors_1.default.cyan('throw render()')} instead, see https://vike.dev/render`);
|
|
20
20
|
}
|
|
@@ -7,7 +7,7 @@ exports.serializeConfigValues = serializeConfigValues;
|
|
|
7
7
|
const assertIsNotProductionRuntime_js_1 = require("../../../utils/assertIsNotProductionRuntime.js");
|
|
8
8
|
const utils_js_1 = require("../../../node/plugin/utils.js");
|
|
9
9
|
const addImportStatement_js_1 = require("../../../node/plugin/plugins/importUserCode/addImportStatement.js");
|
|
10
|
-
const
|
|
10
|
+
const transformPointerImports_js_1 = require("../../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transformPointerImports.js");
|
|
11
11
|
const helpers_js_1 = require("../helpers.js");
|
|
12
12
|
const stringify_1 = require("@brillout/json-serializer/stringify");
|
|
13
13
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
@@ -164,7 +164,7 @@ function valueToJson(value, configName, definedAtData, importStatements) {
|
|
|
164
164
|
// - https://github.com/vikejs/vike-react/pull/113
|
|
165
165
|
replacer(_, value) {
|
|
166
166
|
if (typeof value === 'string') {
|
|
167
|
-
const importData = (0,
|
|
167
|
+
const importData = (0, transformPointerImports_js_1.parsePointerImportData)(value);
|
|
168
168
|
if (importData) {
|
|
169
169
|
const { importName } = (0, addImportStatement_js_1.addImportStatement)(importStatements, importData.importPath, importData.exportName);
|
|
170
170
|
const replacement = [REPLACE_ME_BEFORE, importName, REPLACE_ME_AFTER].join('');
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
}
|
|
@@ -10,7 +10,7 @@ async function executeGuardHook(pageContext, prepareForUserConsumption) {
|
|
|
10
10
|
if (pageContext._pageFilesAll.length > 0) {
|
|
11
11
|
// V0.4 design
|
|
12
12
|
(0, utils_js_1.assert)(pageContext._pageConfigs.length === 0);
|
|
13
|
-
hook = findPageGuard(pageContext.
|
|
13
|
+
hook = findPageGuard(pageContext.pageId, pageContext._pageFilesAll);
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
16
|
// V1 design
|
|
@@ -16,8 +16,8 @@ async function executeOnBeforeRouteHook(pageContext) {
|
|
|
16
16
|
const pageContextFromHook = await getPageContextFromHook(pageContext._onBeforeRouteHook, pageContext);
|
|
17
17
|
if (pageContextFromHook) {
|
|
18
18
|
(0, utils_js_1.objectAssign)(pageContextFromOnBeforeRouteHook, pageContextFromHook);
|
|
19
|
-
if ((0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, '
|
|
20
|
-
(0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, '
|
|
19
|
+
if ((0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, 'pageId', 'string') ||
|
|
20
|
+
(0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, 'pageId', 'null')) {
|
|
21
21
|
// We bypass Vike's routing
|
|
22
22
|
if (!(0, utils_js_1.hasProp)(pageContextFromOnBeforeRouteHook, 'routeParams')) {
|
|
23
23
|
(0, utils_js_1.objectAssign)(pageContextFromOnBeforeRouteHook, { routeParams: {} });
|
|
@@ -50,10 +50,10 @@ async function getPageContextFromHook(onBeforeRouteHook, pageContext) {
|
|
|
50
50
|
return null;
|
|
51
51
|
}
|
|
52
52
|
(0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(hookReturn, 'pageContext', 'object'), `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext }')} but pageContext should be a plain JavaScript object.`);
|
|
53
|
-
if ((0, utils_js_1.hasProp)(hookReturn.pageContext, '
|
|
54
|
-
const errPrefix2 = `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext: {
|
|
55
|
-
(0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(hookReturn.pageContext, '
|
|
56
|
-
(0, utils_js_1.assertUsage)(pageContext._allPageIds.includes(hookReturn.pageContext.
|
|
53
|
+
if ((0, utils_js_1.hasProp)(hookReturn.pageContext, 'pageId') && !(0, utils_js_1.hasProp)(hookReturn.pageContext, 'pageId', 'null')) {
|
|
54
|
+
const errPrefix2 = `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext: { pageId } }')} but ${picocolors_1.default.cyan('pageId')} should be`;
|
|
55
|
+
(0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(hookReturn.pageContext, 'pageId', 'string'), `${errPrefix2} a string or null`);
|
|
56
|
+
(0, utils_js_1.assertUsage)(pageContext._allPageIds.includes(hookReturn.pageContext.pageId), `${errPrefix2} ${(0, utils_js_1.joinEnglish)(pageContext._allPageIds.map((s) => picocolors_1.default.cyan(s)), 'or')}`);
|
|
57
57
|
}
|
|
58
58
|
if ((0, utils_js_1.hasProp)(hookReturn.pageContext, 'routeParams')) {
|
|
59
59
|
(0, resolveRouteFunction_js_1.assertRouteParams)(hookReturn.pageContext, `${errPrefix} returned ${picocolors_1.default.cyan('{ pageContext: { routeParams } }')} but routeParams should`);
|
|
@@ -26,7 +26,7 @@ async function route(pageContext) {
|
|
|
26
26
|
const pageContextFromOnBeforeRouteHook = await (0, executeOnBeforeRouteHook_js_1.executeOnBeforeRouteHook)(pageContext);
|
|
27
27
|
if (pageContextFromOnBeforeRouteHook) {
|
|
28
28
|
if (pageContextFromOnBeforeRouteHook._routingProvidedByOnBeforeRouteHook) {
|
|
29
|
-
(0, utils_js_1.assert)(pageContextFromOnBeforeRouteHook.
|
|
29
|
+
(0, utils_js_1.assert)(pageContextFromOnBeforeRouteHook.pageId);
|
|
30
30
|
return pageContextFromOnBeforeRouteHook;
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
@@ -90,7 +90,7 @@ async function route(pageContext) {
|
|
|
90
90
|
(0, utils_js_1.objectAssign)(pageContextFromRoute, { _routeMatch: winner });
|
|
91
91
|
if (!winner) {
|
|
92
92
|
(0, utils_js_1.objectAssign)(pageContextFromRoute, {
|
|
93
|
-
|
|
93
|
+
pageId: null,
|
|
94
94
|
routeParams: {}
|
|
95
95
|
});
|
|
96
96
|
return pageContextFromRoute;
|
|
@@ -99,7 +99,7 @@ async function route(pageContext) {
|
|
|
99
99
|
const { routeParams } = winner;
|
|
100
100
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(routeParams));
|
|
101
101
|
(0, utils_js_1.objectAssign)(pageContextFromRoute, {
|
|
102
|
-
|
|
102
|
+
pageId: winner.pageId,
|
|
103
103
|
routeParams: winner.routeParams
|
|
104
104
|
});
|
|
105
105
|
}
|
|
@@ -8,7 +8,7 @@ exports.getUrlFromRouteString = getUrlFromRouteString;
|
|
|
8
8
|
exports.isStaticRouteString = isStaticRouteString;
|
|
9
9
|
exports.analyzeRouteString = analyzeRouteString;
|
|
10
10
|
exports.assertRouteString = assertRouteString;
|
|
11
|
-
exports.
|
|
11
|
+
exports.getRouteStringParameterList = getRouteStringParameterList;
|
|
12
12
|
const utils_js_1 = require("../utils.js");
|
|
13
13
|
const utils_js_2 = require("./utils.js");
|
|
14
14
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
@@ -101,6 +101,15 @@ function parseRouteString(routeString) {
|
|
|
101
101
|
});
|
|
102
102
|
return segments;
|
|
103
103
|
}
|
|
104
|
+
function getRouteStringParameterList(routeString) {
|
|
105
|
+
const routeParameterList = [];
|
|
106
|
+
const segments = parseRouteString(routeString);
|
|
107
|
+
segments.forEach((segment) => {
|
|
108
|
+
if (segment.param)
|
|
109
|
+
routeParameterList.push(segment.param);
|
|
110
|
+
});
|
|
111
|
+
return routeParameterList;
|
|
112
|
+
}
|
|
104
113
|
function getUrlFromRouteString(routeString) {
|
|
105
114
|
if (isStaticRouteString(routeString)) {
|
|
106
115
|
const url = routeString;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isNpmPackageImport = isNpmPackageImport;
|
|
4
|
+
exports.isNpmPackageImport_unreliable = isNpmPackageImport_unreliable;
|
|
4
5
|
exports.assertIsNpmPackageImport = assertIsNpmPackageImport;
|
|
5
6
|
exports.isValidPathAlias = isValidPathAlias;
|
|
6
7
|
exports.parse = parse;
|
|
@@ -11,6 +12,9 @@ const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
|
|
|
11
12
|
function isNpmPackageImport(str, { cannotBePathAlias }) {
|
|
12
13
|
// We cannot distinguish path alises that look like npm package imports
|
|
13
14
|
(0, assert_js_1.assert)(cannotBePathAlias);
|
|
15
|
+
return isNpmPackageImport_unreliable(str);
|
|
16
|
+
}
|
|
17
|
+
function isNpmPackageImport_unreliable(str) {
|
|
14
18
|
const res = parse(str);
|
|
15
19
|
return res !== null;
|
|
16
20
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.scriptFileExtensionList = exports.scriptFileExtensions = void 0;
|
|
4
4
|
exports.isScriptFile = isScriptFile;
|
|
5
|
-
exports.
|
|
5
|
+
exports.isPlainJavaScriptFile = isPlainJavaScriptFile;
|
|
6
6
|
exports.isTemplateFile = isTemplateFile;
|
|
7
7
|
const assert_js_1 = require("./assert.js");
|
|
8
8
|
// We can't use a RegExp:
|
|
@@ -49,11 +49,11 @@ const scriptFileExtensions = '(' + scriptFileExtensionList.join('|') + ')';
|
|
|
49
49
|
exports.scriptFileExtensions = scriptFileExtensions;
|
|
50
50
|
function isScriptFile(filePath) {
|
|
51
51
|
const yes = scriptFileExtensionList.some((ext) => filePath.endsWith('.' + ext));
|
|
52
|
-
if (
|
|
52
|
+
if (isPlainJavaScriptFile(filePath))
|
|
53
53
|
(0, assert_js_1.assert)(yes);
|
|
54
54
|
return yes;
|
|
55
55
|
}
|
|
56
|
-
function
|
|
56
|
+
function isPlainJavaScriptFile(filePath) {
|
|
57
57
|
const yes1 = /\.(c|m)?(j|t)s$/.test(filePath);
|
|
58
58
|
const yes2 = extJavaScript.some((ext) => filePath.endsWith('.' + ext));
|
|
59
59
|
(0, assert_js_1.assert)(yes1 === yes2);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { assertClientRouting } from '../../utils/assertRoutingType.js';
|
|
2
2
|
assertClientRouting();
|
|
3
3
|
import './pageFiles';
|
|
4
|
-
import {
|
|
4
|
+
import { initClientRouter } from './initClientRouter.js';
|
|
5
5
|
import { assertSingleInstance_onClientEntryClientRouting } from './utils.js';
|
|
6
6
|
import { removeFoucBuster } from '../shared/removeFoucBuster.js';
|
|
7
7
|
// @ts-ignore Since dist/cjs/client/ is never used, we can ignore this error.
|
|
@@ -9,4 +9,4 @@ const isProd = import.meta.env.PROD;
|
|
|
9
9
|
assertSingleInstance_onClientEntryClientRouting(isProd);
|
|
10
10
|
if (import.meta.env.DEV)
|
|
11
11
|
removeFoucBuster();
|
|
12
|
-
|
|
12
|
+
initClientRouter();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { setPageContextCurrent };
|
|
2
|
+
export { getPageContextCurrent };
|
|
3
|
+
export { getPageContextCurrentAsync };
|
|
4
|
+
import type { PageContextExports } from '../../shared/getPageFiles.js';
|
|
5
|
+
type PageContextCurrent = PageContextExports & {
|
|
6
|
+
urlPathname: string;
|
|
7
|
+
};
|
|
8
|
+
declare function getPageContextCurrent(): null | PageContextCurrent;
|
|
9
|
+
declare function getPageContextCurrentAsync(): Promise<PageContextCurrent>;
|
|
10
|
+
declare function setPageContextCurrent(pageContextCurrent: PageContextCurrent): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { setPageContextCurrent };
|
|
2
|
+
export { getPageContextCurrent };
|
|
3
|
+
export { getPageContextCurrentAsync };
|
|
4
|
+
import { genPromise, getGlobalObject } from './utils.js';
|
|
5
|
+
const globalObject = getGlobalObject('getPageContextCurrent.ts', (() => {
|
|
6
|
+
const { promise: pageContextCurrentPromise, resolve: pageContextCurrentPromiseResolve } = genPromise();
|
|
7
|
+
return {
|
|
8
|
+
pageContextCurrent: null,
|
|
9
|
+
pageContextCurrentPromise,
|
|
10
|
+
pageContextCurrentPromiseResolve
|
|
11
|
+
};
|
|
12
|
+
})());
|
|
13
|
+
function getPageContextCurrent() {
|
|
14
|
+
const { pageContextCurrent } = globalObject;
|
|
15
|
+
return pageContextCurrent;
|
|
16
|
+
}
|
|
17
|
+
// TODO/pageContext-prefetch: I think we can remove this? Once we use Vike's default if pageContextCurrent isn't defined yet.
|
|
18
|
+
async function getPageContextCurrentAsync() {
|
|
19
|
+
const pageContextCurrent = await globalObject.pageContextCurrentPromise;
|
|
20
|
+
return pageContextCurrent;
|
|
21
|
+
}
|
|
22
|
+
function setPageContextCurrent(pageContextCurrent) {
|
|
23
|
+
globalObject.pageContextCurrent = pageContextCurrent;
|
|
24
|
+
globalObject.pageContextCurrentPromiseResolve(pageContextCurrent);
|
|
25
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { getPageContextFromHooks_isHydration };
|
|
2
|
-
export { getPageContextFromHooks_isNotHydration };
|
|
3
2
|
export { getPageContextFromHooks_serialized };
|
|
3
|
+
export { getPageContextFromServerHooks };
|
|
4
|
+
export { getPageContextFromClientHooks };
|
|
5
|
+
export { setPageContextInitIsPassedToClient };
|
|
6
|
+
export type { PageContextFromServerHooks };
|
|
7
|
+
export type { PageContextFromClientHooks };
|
|
4
8
|
import type { PageContextExports, PageFile } from '../../shared/getPageFiles.js';
|
|
5
9
|
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
6
10
|
type PageContext = {
|
|
@@ -10,30 +14,36 @@ type PageContext = {
|
|
|
10
14
|
_pageConfigs: PageConfigRuntime[];
|
|
11
15
|
};
|
|
12
16
|
type PageContextSerialized = {
|
|
13
|
-
|
|
17
|
+
pageId: string;
|
|
14
18
|
_hasPageContextFromServer: true;
|
|
15
19
|
};
|
|
16
20
|
declare function getPageContextFromHooks_serialized(): PageContextSerialized & {
|
|
17
21
|
routeParams: Record<string, string>;
|
|
18
22
|
};
|
|
19
|
-
declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageContextExports
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageContextExports & {
|
|
24
|
+
_hasPageContextFromServer: true;
|
|
25
|
+
}): Promise<PageContextSerialized & PageContext & PageContextExports & {
|
|
22
26
|
_hasPageContextFromServer: true;
|
|
27
|
+
} & {
|
|
28
|
+
isHydration: true;
|
|
29
|
+
_hasPageContextFromClient: boolean;
|
|
23
30
|
}>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
type PageContextFromServerHooks = {
|
|
32
|
+
_hasPageContextFromServer: boolean;
|
|
33
|
+
};
|
|
34
|
+
declare function getPageContextFromServerHooks(pageContext: {
|
|
35
|
+
pageId: string;
|
|
36
|
+
} & PageContext, isErrorPage: boolean): Promise<{
|
|
37
|
+
is404ServerSideRouted: true;
|
|
29
38
|
} | {
|
|
30
|
-
pageContextAugmented: {
|
|
31
|
-
_pageId: string;
|
|
32
|
-
} & PageContext & PageContextExports & {
|
|
33
|
-
isHydration: false;
|
|
34
|
-
_hasPageContextFromClient: boolean;
|
|
35
|
-
} & {
|
|
36
|
-
_hasPageContextFromServer: boolean;
|
|
37
|
-
};
|
|
38
39
|
is404ServerSideRouted?: undefined;
|
|
40
|
+
pageContextFromServerHooks: PageContextFromServerHooks;
|
|
39
41
|
}>;
|
|
42
|
+
type PageContextFromClientHooks = {
|
|
43
|
+
_hasPageContextFromClient: boolean;
|
|
44
|
+
};
|
|
45
|
+
declare function getPageContextFromClientHooks(pageContext: {
|
|
46
|
+
pageId: string;
|
|
47
|
+
_hasPageContextFromServer: boolean;
|
|
48
|
+
} & PageContext & PageContextExports, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
|
|
49
|
+
declare function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>): void;
|