vike 0.4.238 → 0.4.239
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/node/prerender/resolvePrerenderConfig.js +3 -2
- package/dist/cjs/node/runtime/index.js +3 -3
- package/dist/cjs/node/runtime/page-files/setup.js +3 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -9
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +2 -2
- package/dist/cjs/node/runtime/renderPage/csp.js +47 -0
- package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +2 -2
- package/dist/cjs/node/runtime/renderPage/headersResponse.js +48 -0
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/getHtmlTags.js +16 -13
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/getViteDevScript.js +1 -1
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/inferHtmlTags.js +8 -6
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/injectAssets__public.js +1 -1
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/injectHtmlTags.js +1 -1
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/mergeScriptTags.js +5 -3
- package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets.js +2 -2
- package/dist/cjs/node/runtime/{html → renderPage/html}/propKeys.js +1 -1
- package/dist/cjs/node/runtime/{html → renderPage/html}/renderHtml.js +1 -1
- package/dist/cjs/node/runtime/{html → renderPage/html}/serializeContext.js +6 -6
- package/dist/cjs/node/runtime/{html → renderPage/html}/stream/react-streaming.js +1 -1
- package/dist/cjs/node/runtime/{html → renderPage/html}/stream.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +17 -38
- package/dist/cjs/node/runtime/renderPage/renderPageAfterRoute.js +2 -2
- package/dist/cjs/node/runtime/renderPage.js +1 -1
- package/dist/cjs/node/vite/onLoad.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginCommon.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginNonRunnableDev.js +4 -3
- package/dist/cjs/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +1 -1
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +3 -0
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -1
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +20 -22
- package/dist/cjs/shared/createGlobalContextShared.js +4 -22
- package/dist/cjs/shared/createPageContextShared.js +2 -2
- package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +62 -43
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +16 -1
- package/dist/cjs/utils/assertNodeVersion.js +3 -1
- package/dist/cjs/utils/assertVersion.js +26 -5
- package/dist/cjs/utils/joinEnglish.js +2 -1
- package/dist/esm/client/runtime-client-routing/createPageContextClientSide.d.ts +39 -16
- package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +1 -1
- package/dist/esm/client/runtime-client-routing/getPageContextCurrent.d.ts +2 -2
- package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +97 -83
- package/dist/esm/client/runtime-client-routing/globalContext.d.ts +38 -10
- package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.d.ts +2 -2
- package/dist/esm/client/runtime-client-routing/prefetch.d.ts +2 -2
- package/dist/esm/client/runtime-client-routing/prefetch.js +2 -2
- package/dist/esm/client/runtime-client-routing/preparePageContextForPublicUsageClient.d.ts +2 -2
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +43 -28
- package/dist/esm/client/runtime-server-routing/createPageContextClientSide.d.ts +39 -16
- package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +1 -1
- package/dist/esm/client/runtime-server-routing/globalContext.d.ts +38 -10
- package/dist/esm/client/runtime-server-routing/preparePageContextForPublicUsageClient.d.ts +2 -2
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +38 -10
- package/dist/esm/client/shared/execHookOnRenderClient.d.ts +2 -2
- package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +1 -1
- package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -3
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +2 -2
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +4 -3
- package/dist/esm/node/prerender/runPrerender.d.ts +57 -14
- package/dist/esm/node/runtime/globalContext.d.ts +152 -40
- package/dist/esm/node/runtime/index.d.ts +3 -3
- package/dist/esm/node/runtime/index.js +3 -3
- package/dist/esm/node/runtime/page-files/setup.js +3 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -9
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +52 -10
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/csp.d.ts +12 -0
- package/dist/esm/node/runtime/renderPage/csp.js +45 -0
- package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.js +2 -2
- package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -1
- package/dist/esm/node/runtime/renderPage/getHttpResponseBody.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +2 -2
- package/dist/esm/node/runtime/renderPage/headersResponse.d.ts +10 -0
- package/dist/esm/node/runtime/renderPage/headersResponse.js +46 -0
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getHtmlTags.d.ts +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getHtmlTags.js +16 -13
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getViteDevScript.d.ts +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/getViteDevScript.js +1 -1
- package/dist/esm/node/runtime/renderPage/html/injectAssets/inferHtmlTags.d.ts +10 -0
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/inferHtmlTags.js +7 -5
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectAssets__public.js +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectHtmlTags.js +1 -1
- package/dist/esm/node/runtime/renderPage/html/injectAssets/mergeScriptTags.d.ts +3 -0
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/mergeScriptTags.js +6 -4
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets.d.ts +2 -2
- package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets.js +2 -2
- package/dist/esm/node/runtime/{html → renderPage/html}/propKeys.js +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/renderHtml.d.ts +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/renderHtml.js +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/serializeContext.d.ts +6 -5
- package/dist/esm/node/runtime/{html → renderPage/html}/serializeContext.js +6 -6
- package/dist/esm/node/runtime/{html → renderPage/html}/stream/react-streaming.js +1 -1
- package/dist/esm/node/runtime/{html → renderPage/html}/stream.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +62 -15
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +18 -39
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAfterRoute.d.ts +114 -28
- package/dist/esm/node/runtime/renderPage/renderPageAfterRoute.js +2 -2
- package/dist/esm/node/runtime/renderPage.d.ts +52 -10
- package/dist/esm/node/runtime/renderPage.js +1 -1
- package/dist/esm/node/vite/onLoad.js +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +1 -1
- package/dist/esm/node/vite/plugins/pluginCommon.js +1 -1
- package/dist/esm/node/vite/plugins/pluginNonRunnableDev.js +4 -3
- package/dist/esm/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +2 -2
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +3 -0
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +2 -2
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal.d.ts +4 -8
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +22 -24
- package/dist/esm/shared/createGlobalContextShared.d.ts +73 -17
- package/dist/esm/shared/createGlobalContextShared.js +5 -23
- package/dist/esm/shared/createPageContextShared.d.ts +2 -7
- package/dist/esm/shared/createPageContextShared.js +2 -2
- package/dist/esm/shared/getPageFiles.d.ts +1 -1
- package/dist/esm/shared/hooks/execHook.d.ts +2 -2
- package/dist/esm/shared/hooks/getHook.d.ts +3 -3
- package/dist/esm/shared/page-configs/resolveVikeConfigPublic.d.ts +91 -31
- package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +62 -43
- package/dist/esm/types/Config/ConfigResolved.d.ts +8 -0
- package/dist/esm/types/Config.d.ts +14 -6
- package/dist/esm/types/PageContext.d.ts +8 -25
- package/dist/esm/types/VikeNamespace.d.ts +0 -27
- package/dist/esm/types/index.d.ts +2 -2
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assert.js +16 -1
- package/dist/esm/utils/assertNodeVersion.js +3 -1
- package/dist/esm/utils/assertVersion.d.ts +4 -3
- package/dist/esm/utils/assertVersion.js +23 -5
- package/dist/esm/utils/joinEnglish.js +2 -1
- package/package.json +2 -2
- package/dist/cjs/types/Config/helpers.js +0 -2
- package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.d.ts +0 -9
- package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +0 -2
- package/dist/esm/types/Config/PageContextConfig.d.ts +0 -15
- package/dist/esm/types/Config/helpers.d.ts +0 -10
- package/dist/esm/types/Config/helpers.js +0 -1
- /package/dist/cjs/node/runtime/{html → renderPage/html}/injectAssets/sanitizeJson.js +0 -0
- /package/dist/cjs/types/Config/{PageContextConfig.js → ConfigResolved.js} +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectAssets__public.d.ts +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/injectHtmlTags.d.ts +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/sanitizeJson.d.ts +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/injectAssets/sanitizeJson.js +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/propKeys.d.ts +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/stream/react-streaming.d.ts +0 -0
- /package/dist/esm/node/runtime/{html → renderPage/html}/stream.d.ts +0 -0
- /package/dist/esm/types/Config/{PageContextConfig.js → ConfigResolved.js} +0 -0
|
@@ -4,6 +4,7 @@ exports.resolvePrerenderConfigGlobal = resolvePrerenderConfigGlobal;
|
|
|
4
4
|
exports.resolvePrerenderConfigLocal = resolvePrerenderConfigLocal;
|
|
5
5
|
const utils_js_1 = require("./utils.js");
|
|
6
6
|
const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
|
|
7
|
+
const getConfigDefinedAt_js_1 = require("../../shared/page-configs/getConfigDefinedAt.js");
|
|
7
8
|
// When setting +prerender to an object => it also enables pre-rendering
|
|
8
9
|
const defaultValueForObject = true;
|
|
9
10
|
function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
@@ -51,9 +52,9 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
51
52
|
const values = configValue.value;
|
|
52
53
|
(0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
|
|
53
54
|
const value = values[0];
|
|
54
|
-
// If it's set to an object in a local config then Vike considers it a global config and it's skipped from local inheritance, thus we can assume the value to be a boolean.
|
|
55
|
-
(0, utils_js_1.assert)(typeof value === 'boolean');
|
|
56
55
|
(0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
|
|
56
|
+
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'prerender', configValue.definedAtData);
|
|
57
|
+
(0, utils_js_1.assertUsage)(typeof value === 'boolean', `${configDefinedAt} must be a boolean (it isn't defined at a global location)`);
|
|
57
58
|
const prerenderConfigLocal = { value };
|
|
58
59
|
return prerenderConfigLocal;
|
|
59
60
|
}
|
|
@@ -23,10 +23,10 @@ const assert_js_1 = require("../../utils/assert.js");
|
|
|
23
23
|
(0, assert_js_1.assert)(!(0, isBrowser_js_1.isBrowser)());
|
|
24
24
|
var renderPage_js_1 = require("./renderPage.js");
|
|
25
25
|
Object.defineProperty(exports, "renderPage", { enumerable: true, get: function () { return renderPage_js_1.renderPage; } });
|
|
26
|
-
var renderHtml_js_1 = require("./html/renderHtml.js");
|
|
26
|
+
var renderHtml_js_1 = require("./renderPage/html/renderHtml.js");
|
|
27
27
|
Object.defineProperty(exports, "escapeInject", { enumerable: true, get: function () { return renderHtml_js_1.escapeInject; } });
|
|
28
28
|
Object.defineProperty(exports, "dangerouslySkipEscape", { enumerable: true, get: function () { return renderHtml_js_1.dangerouslySkipEscape; } });
|
|
29
|
-
var stream_js_1 = require("./html/stream.js");
|
|
29
|
+
var stream_js_1 = require("./renderPage/html/stream.js");
|
|
30
30
|
Object.defineProperty(exports, "pipeWebStream", { enumerable: true, get: function () { return stream_js_1.pipeWebStream; } });
|
|
31
31
|
Object.defineProperty(exports, "pipeNodeStream", { enumerable: true, get: function () { return stream_js_1.pipeNodeStream; } });
|
|
32
32
|
Object.defineProperty(exports, "pipeStream", { enumerable: true, get: function () { return stream_js_1.pipeStream; } });
|
|
@@ -42,7 +42,7 @@ Object.defineProperty(exports, "createDevMiddleware", { enumerable: true, get: f
|
|
|
42
42
|
// TO-DO/next-major-release: remove
|
|
43
43
|
// Deprecated exports
|
|
44
44
|
__exportStar(require("../../types/index-dreprecated.js"), exports);
|
|
45
|
-
var injectAssets__public_js_1 = require("./html/injectAssets/injectAssets__public.js");
|
|
45
|
+
var injectAssets__public_js_1 = require("./renderPage/html/injectAssets/injectAssets__public.js");
|
|
46
46
|
Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: function () { return injectAssets__public_js_1.injectAssets__public; } });
|
|
47
47
|
var createPageRenderer_js_1 = require("../createPageRenderer.js");
|
|
48
48
|
Object.defineProperty(exports, "createPageRenderer", { enumerable: true, get: function () { return createPageRenderer_js_1.createPageRenderer; } });
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// TO-DO/
|
|
2
|
+
// TO-DO/eventually: remove
|
|
3
|
+
// - This was used by some older Vike extensions made by Joël (I believe vite-plugin-vercel)
|
|
4
|
+
// - See also https://github.com/vikejs/vike/issues/2122
|
|
3
5
|
// This doesn't do anything anymore. (It's kept to avoid introducing a breaking change.)
|
|
@@ -12,7 +12,7 @@ const error_page_js_1 = require("../../../shared/error-page.js");
|
|
|
12
12
|
const getHttpResponseBody_js_1 = require("./getHttpResponseBody.js");
|
|
13
13
|
const getEarlyHints_js_1 = require("./getEarlyHints.js");
|
|
14
14
|
const assertNoInfiniteHttpRedirect_js_1 = require("./createHttpResponse/assertNoInfiniteHttpRedirect.js");
|
|
15
|
-
const
|
|
15
|
+
const headersResponse_js_1 = require("./headersResponse.js");
|
|
16
16
|
async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
|
|
17
17
|
let statusCode = pageContext.abortStatusCode;
|
|
18
18
|
if (!statusCode) {
|
|
@@ -30,14 +30,7 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
const earlyHints = (0, getEarlyHints_js_1.getEarlyHints)(await pageContext.__getPageAssets());
|
|
33
|
-
const headers =
|
|
34
|
-
const headersResponse = pageContext.headersResponse || new Headers();
|
|
35
|
-
headersResponse.forEach((value, key) => {
|
|
36
|
-
headers.push([key, value]);
|
|
37
|
-
});
|
|
38
|
-
// An 5xx error page shouldn't be cached (it should be temporary)
|
|
39
|
-
if (statusCode >= 500)
|
|
40
|
-
headersResponse.set('Cache-Control', getCacheControl_js_1.cacheControlDisable);
|
|
33
|
+
const headers = (0, headersResponse_js_1.resolveHeadersResponseFinal)(pageContext, statusCode);
|
|
41
34
|
return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
|
|
42
35
|
}
|
|
43
36
|
function createHttpResponse404(errMsg404) {
|
|
@@ -19,7 +19,7 @@ function createPageContextServerSide(pageContextInit, globalContext, args) {
|
|
|
19
19
|
_urlHandler: args.ssr?.urlHandler ?? null,
|
|
20
20
|
isClientSideNavigation: args.ssr?.isClientSideNavigation ?? false,
|
|
21
21
|
});
|
|
22
|
-
(0, utils_js_1.objectAssign)(pageContextCreated, globalContext.
|
|
22
|
+
(0, utils_js_1.objectAssign)(pageContextCreated, globalContext._globalConfigPublic);
|
|
23
23
|
// pageContext.urlParsed
|
|
24
24
|
const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextCreated);
|
|
25
25
|
(0, utils_js_1.objectAssign)(pageContextCreated, pageContextUrlComputed);
|
|
@@ -40,7 +40,7 @@ function createPageContextServerSide(pageContextInit, globalContext, args) {
|
|
|
40
40
|
}
|
|
41
41
|
(0, utils_js_1.objectAssign)(pageContextCreated, { headers });
|
|
42
42
|
}
|
|
43
|
-
const pageContextAugmented = (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext.
|
|
43
|
+
const pageContextAugmented = (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._globalConfigPublic);
|
|
44
44
|
(0, utils_js_1.updateType)(pageContextCreated, pageContextAugmented);
|
|
45
45
|
return pageContextCreated;
|
|
46
46
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvePageContextCspNone = resolvePageContextCspNone;
|
|
4
|
+
exports.inferNonceAttr = inferNonceAttr;
|
|
5
|
+
exports.addCspResponseHeader = addCspResponseHeader;
|
|
6
|
+
const import_1 = require("@brillout/import");
|
|
7
|
+
const utils_js_1 = require("../utils.js");
|
|
8
|
+
async function resolvePageContextCspNone(pageContext) {
|
|
9
|
+
if (pageContext.cspNonce)
|
|
10
|
+
return null; // already set by user e.g. `renderPage({ cspNonce: '123456789' })`
|
|
11
|
+
const { csp } = pageContext.config;
|
|
12
|
+
const pageContextAddendum = { cspNonce: null };
|
|
13
|
+
if (csp?.nonce) {
|
|
14
|
+
if (csp.nonce === true) {
|
|
15
|
+
pageContextAddendum.cspNonce = await generateNonce();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
pageContextAddendum.cspNonce = await csp.nonce(pageContext);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return pageContextAddendum;
|
|
22
|
+
}
|
|
23
|
+
// Generate a cryptographically secure nonce for Content Security Policy (CSP).
|
|
24
|
+
// Returns a base64url-encoded nonce string (URL-safe, no padding).
|
|
25
|
+
// https://github.com/vikejs/vike/issues/1554#issuecomment-3181128304
|
|
26
|
+
async function generateNonce() {
|
|
27
|
+
let cryptoModule;
|
|
28
|
+
try {
|
|
29
|
+
cryptoModule = (await (0, import_1.import_)('crypto')).default;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return Math.random().toString(36).substring(2, 18);
|
|
33
|
+
}
|
|
34
|
+
return cryptoModule.randomBytes(16).toString('base64url');
|
|
35
|
+
}
|
|
36
|
+
function inferNonceAttr(pageContext) {
|
|
37
|
+
const nonceAttr = pageContext.cspNonce ? ` nonce="${pageContext.cspNonce}"` : '';
|
|
38
|
+
return nonceAttr;
|
|
39
|
+
}
|
|
40
|
+
function addCspResponseHeader(pageContext, headersResponse) {
|
|
41
|
+
(0, utils_js_1.assert)(pageContext.cspNonce === null || typeof pageContext.cspNonce === 'string'); // ensure resolvePageContextCspNone() is called before addCspResponseHeader()
|
|
42
|
+
if (!pageContext.cspNonce)
|
|
43
|
+
return;
|
|
44
|
+
if (headersResponse.get('Content-Security-Policy'))
|
|
45
|
+
return;
|
|
46
|
+
headersResponse.set('Content-Security-Policy', `script-src 'self' 'nonce-${pageContext.cspNonce}'`);
|
|
47
|
+
}
|
|
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.execHookOnRenderHtml = execHookOnRenderHtml;
|
|
7
|
-
const renderHtml_js_1 = require("
|
|
7
|
+
const renderHtml_js_1 = require("./html/renderHtml.js");
|
|
8
8
|
const getHook_js_1 = require("../../../shared/hooks/getHook.js");
|
|
9
9
|
const utils_js_1 = require("../utils.js");
|
|
10
|
-
const stream_js_1 = require("
|
|
10
|
+
const stream_js_1 = require("./html/stream.js");
|
|
11
11
|
const assertPageContextProvidedByUser_js_1 = require("../../../shared/assertPageContextProvidedByUser.js");
|
|
12
12
|
const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContextForPublicUsageServer.js");
|
|
13
13
|
const assertHookReturnedObject_js_1 = require("../../../shared/assertHookReturnedObject.js");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getEarlyHints = getEarlyHints;
|
|
4
4
|
const isFontFallback_js_1 = require("./isFontFallback.js");
|
|
5
|
-
const inferHtmlTags_js_1 = require("
|
|
5
|
+
const inferHtmlTags_js_1 = require("./html/injectAssets/inferHtmlTags.js");
|
|
6
6
|
function getEarlyHints(assets) {
|
|
7
7
|
const earlyHints = [];
|
|
8
8
|
{
|
|
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getHttpResponseBody = getHttpResponseBody;
|
|
7
7
|
exports.getHttpResponseBodyStreamHandlers = getHttpResponseBodyStreamHandlers;
|
|
8
|
-
const stream_js_1 = require("
|
|
8
|
+
const stream_js_1 = require("./html/stream.js");
|
|
9
9
|
const utils_js_1 = require("../utils.js");
|
|
10
|
-
const renderHtml_js_1 = require("
|
|
10
|
+
const renderHtml_js_1 = require("./html/renderHtml.js");
|
|
11
11
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
12
12
|
const streamDocs = 'See https://vike.dev/streaming for more information.';
|
|
13
13
|
function getHttpResponseBody(htmlRender, renderHook) {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveHeadersResponseEarly = resolveHeadersResponseEarly;
|
|
4
|
+
exports.resolveHeadersResponseFinal = resolveHeadersResponseFinal;
|
|
5
|
+
const csp_js_1 = require("./csp.js");
|
|
6
|
+
const utils_js_1 = require("../utils.js");
|
|
7
|
+
const getCacheControl_js_1 = require("./getCacheControl.js");
|
|
8
|
+
function resolveHeadersResponseFinal(pageContext, statusCode) {
|
|
9
|
+
const headersResponse = pageContext.headersResponse || new Headers();
|
|
10
|
+
// 5xx error pages are temporary and shouldn't be cached.
|
|
11
|
+
// This overrides any previously set Cache-Control value.
|
|
12
|
+
if (statusCode >= 500)
|
|
13
|
+
headersResponse.set('Cache-Control', getCacheControl_js_1.cacheControlDisable);
|
|
14
|
+
const headers = [];
|
|
15
|
+
headersResponse.forEach((value, key) => {
|
|
16
|
+
headers.push([key, value]);
|
|
17
|
+
});
|
|
18
|
+
return headers;
|
|
19
|
+
}
|
|
20
|
+
async function resolveHeadersResponseEarly(pageContext) {
|
|
21
|
+
const headersResponse = await resolveHeadersResponseConfig(pageContext);
|
|
22
|
+
if (!headersResponse.get('Cache-Control')) {
|
|
23
|
+
const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs);
|
|
24
|
+
if (cacheControl)
|
|
25
|
+
headersResponse.set('Cache-Control', cacheControl);
|
|
26
|
+
}
|
|
27
|
+
(0, csp_js_1.addCspResponseHeader)(pageContext, headersResponse);
|
|
28
|
+
const pageContextAddendum = {
|
|
29
|
+
headersResponse,
|
|
30
|
+
};
|
|
31
|
+
return pageContextAddendum;
|
|
32
|
+
}
|
|
33
|
+
async function resolveHeadersResponseConfig(pageContext) {
|
|
34
|
+
const headersMerged = new Headers();
|
|
35
|
+
await Promise.all((pageContext.config.headersResponse ?? []).map(async (headers) => {
|
|
36
|
+
let headersInit;
|
|
37
|
+
if ((0, utils_js_1.isCallable)(headers)) {
|
|
38
|
+
headersInit = await headers(pageContext);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
headersInit = headers;
|
|
42
|
+
}
|
|
43
|
+
new Headers(headersInit).forEach((value, key) => {
|
|
44
|
+
headersMerged.append(key, value);
|
|
45
|
+
});
|
|
46
|
+
}));
|
|
47
|
+
return headersMerged;
|
|
48
|
+
}
|
|
@@ -4,17 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getHtmlTags = getHtmlTags;
|
|
7
|
-
const utils_js_1 = require("
|
|
7
|
+
const utils_js_1 = require("../../../utils.js");
|
|
8
8
|
const serializeContext_js_1 = require("../serializeContext.js");
|
|
9
9
|
const sanitizeJson_js_1 = require("./sanitizeJson.js");
|
|
10
10
|
const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
|
|
11
11
|
const mergeScriptTags_js_1 = require("./mergeScriptTags.js");
|
|
12
|
-
const helpers_js_1 = require("
|
|
13
|
-
const getConfigValueRuntime_js_1 = require("
|
|
12
|
+
const helpers_js_1 = require("../../../../../shared/page-configs/helpers.js");
|
|
13
|
+
const getConfigValueRuntime_js_1 = require("../../../../../shared/page-configs/getConfigValueRuntime.js");
|
|
14
14
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
15
|
-
const getConfigDefinedAt_js_1 = require("
|
|
16
|
-
const htmlElementIds_js_1 = require("
|
|
17
|
-
const isFontFallback_js_1 = require("../../
|
|
15
|
+
const getConfigDefinedAt_js_1 = require("../../../../../shared/page-configs/getConfigDefinedAt.js");
|
|
16
|
+
const htmlElementIds_js_1 = require("../../../../../shared/htmlElementIds.js");
|
|
17
|
+
const isFontFallback_js_1 = require("../../isFontFallback.js");
|
|
18
|
+
const csp_js_1 = require("../../csp.js");
|
|
18
19
|
const stamp = '__injectFilterEntry';
|
|
19
20
|
async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
|
|
20
21
|
(0, utils_js_1.assert)([true, false].includes(pageContext._isHtmlOnly));
|
|
@@ -81,7 +82,7 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
|
|
|
81
82
|
.forEach((asset) => {
|
|
82
83
|
if (!asset.inject)
|
|
83
84
|
return;
|
|
84
|
-
const htmlTag = asset.isEntry ? (0, inferHtmlTags_js_1.inferAssetTag)(asset) : (0, inferHtmlTags_js_1.inferPreloadTag)(asset);
|
|
85
|
+
const htmlTag = asset.isEntry ? (0, inferHtmlTags_js_1.inferAssetTag)(asset, pageContext) : (0, inferHtmlTags_js_1.inferPreloadTag)(asset);
|
|
85
86
|
htmlTags.push({ htmlTag, position: asset.inject });
|
|
86
87
|
});
|
|
87
88
|
// ==========
|
|
@@ -142,7 +143,7 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
|
|
|
142
143
|
});
|
|
143
144
|
}
|
|
144
145
|
// The JavaScript entry <script> tag
|
|
145
|
-
const scriptEntry = mergeScriptEntries(pageAssets, viteDevScript);
|
|
146
|
+
const scriptEntry = mergeScriptEntries(pageAssets, viteDevScript, pageContext);
|
|
146
147
|
if (scriptEntry) {
|
|
147
148
|
htmlTags.push({
|
|
148
149
|
htmlTag: scriptEntry,
|
|
@@ -163,9 +164,9 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
|
|
|
163
164
|
});
|
|
164
165
|
return htmlTags;
|
|
165
166
|
}
|
|
166
|
-
function mergeScriptEntries(pageAssets, viteDevScript) {
|
|
167
|
+
function mergeScriptEntries(pageAssets, viteDevScript, pageContext) {
|
|
167
168
|
const scriptEntries = pageAssets.filter((pageAsset) => pageAsset.isEntry && pageAsset.assetType === 'script');
|
|
168
|
-
let scriptEntry = `${viteDevScript}${scriptEntries.map((asset) => (0, inferHtmlTags_js_1.inferAssetTag)(asset)).join('')}`;
|
|
169
|
+
let scriptEntry = `${viteDevScript}${scriptEntries.map((asset) => (0, inferHtmlTags_js_1.inferAssetTag)(asset, pageContext)).join('')}`;
|
|
169
170
|
// We merge scripts to avoid the infamous HMR preamble error.
|
|
170
171
|
// - Infamous HMR preamble error:
|
|
171
172
|
// ```browser-console
|
|
@@ -183,12 +184,13 @@ function mergeScriptEntries(pageAssets, viteDevScript) {
|
|
|
183
184
|
// ```
|
|
184
185
|
// - Maybe an alternative would be to make Vike's client runtime entry <script> tag non-async. Would that work? Would it be a performance issue?
|
|
185
186
|
// - The entry <script> shouldn't be `<script defer>` upon HTML streaming, otherwise progressive hydration while SSR streaming won't work.
|
|
186
|
-
scriptEntry = (0, mergeScriptTags_js_1.mergeScriptTags)(scriptEntry);
|
|
187
|
+
scriptEntry = (0, mergeScriptTags_js_1.mergeScriptTags)(scriptEntry, pageContext);
|
|
187
188
|
return scriptEntry;
|
|
188
189
|
}
|
|
189
190
|
function getPageContextJsonScriptTag(pageContext) {
|
|
190
191
|
const pageContextClientSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializeContext_js_1.getPageContextClientSerialized)(pageContext, true));
|
|
191
|
-
const
|
|
192
|
+
const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
|
|
193
|
+
const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_pageContext}" type="application/json"${nonceAttr}>${pageContextClientSerialized}</script>`;
|
|
192
194
|
// Used by contra.com https://github.com/gajus
|
|
193
195
|
// @ts-expect-error
|
|
194
196
|
pageContext._pageContextHtmlTag = htmlTag;
|
|
@@ -196,7 +198,8 @@ function getPageContextJsonScriptTag(pageContext) {
|
|
|
196
198
|
}
|
|
197
199
|
function getGlobalContextJsonScriptTag(pageContext) {
|
|
198
200
|
const globalContextClientSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializeContext_js_1.getGlobalContextClientSerialized)(pageContext, true));
|
|
199
|
-
const
|
|
201
|
+
const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
|
|
202
|
+
const htmlTag = `<script id="${htmlElementIds_js_1.htmlElementId_globalContext}" type="application/json"${nonceAttr}>${globalContextClientSerialized}</script>`;
|
|
200
203
|
return htmlTag;
|
|
201
204
|
}
|
|
202
205
|
function assertInjectFilterEntries(injectFilterEntries) {
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getViteDevScript = getViteDevScript;
|
|
7
|
-
const utils_js_1 = require("
|
|
7
|
+
const utils_js_1 = require("../../../utils.js");
|
|
8
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
9
9
|
const reachOutCTA = 'Create a new GitHub issue to discuss a solution.';
|
|
10
10
|
async function getViteDevScript(pageContext) {
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.scriptCommonAttrs = void 0;
|
|
4
4
|
exports.inferAssetTag = inferAssetTag;
|
|
5
5
|
exports.inferPreloadTag = inferPreloadTag;
|
|
6
6
|
exports.inferEarlyHintLink = inferEarlyHintLink;
|
|
7
|
-
const utils_js_1 = require("
|
|
7
|
+
const utils_js_1 = require("../../../utils.js");
|
|
8
|
+
const csp_js_1 = require("../../csp.js");
|
|
8
9
|
// We can't use `defer` here. With `defer`, the entry script won't start before `</body>` has been parsed, preventing progressive hydration during SSR streaming, see https://github.com/vikejs/vike/pull/1271
|
|
9
|
-
const
|
|
10
|
-
exports.
|
|
10
|
+
const scriptCommonAttrs = 'type="module" async';
|
|
11
|
+
exports.scriptCommonAttrs = scriptCommonAttrs;
|
|
11
12
|
function inferPreloadTag(pageAsset) {
|
|
12
13
|
const { src, assetType, mediaType } = pageAsset;
|
|
13
14
|
const rel = getRel(pageAsset);
|
|
@@ -23,11 +24,12 @@ function inferPreloadTag(pageAsset) {
|
|
|
23
24
|
.join(' ');
|
|
24
25
|
return `<link ${attributes}>`;
|
|
25
26
|
}
|
|
26
|
-
function inferAssetTag(pageAsset) {
|
|
27
|
+
function inferAssetTag(pageAsset, pageContext) {
|
|
27
28
|
const { src, assetType, mediaType } = pageAsset;
|
|
28
29
|
if (assetType === 'script') {
|
|
29
30
|
(0, utils_js_1.assert)(mediaType === 'text/javascript');
|
|
30
|
-
|
|
31
|
+
const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
|
|
32
|
+
return `<script src="${src}" ${scriptCommonAttrs}${nonceAttr}></script>`;
|
|
31
33
|
}
|
|
32
34
|
if (assetType === 'style') {
|
|
33
35
|
// WARNING: if changing following line, then also update https://github.com/vikejs/vike/blob/fae90a15d88e5e87ca9fcbb54cf2dc8773d2f229/vike/client/shared/removeFoucBuster.ts#L29
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.injectAssets__public = injectAssets__public;
|
|
4
|
-
const utils_js_1 = require("
|
|
4
|
+
const utils_js_1 = require("../../../utils.js");
|
|
5
5
|
const injectAssets_js_1 = require("../injectAssets.js");
|
|
6
6
|
// TO-DO/next-major-release: remove
|
|
7
7
|
async function injectAssets__public(htmlString, pageContext) {
|
|
@@ -7,7 +7,7 @@ exports.createHtmlHeadIfMissing = createHtmlHeadIfMissing;
|
|
|
7
7
|
exports.joinHtmlTags = joinHtmlTags;
|
|
8
8
|
exports.injectAtOpeningTag = injectAtOpeningTag;
|
|
9
9
|
exports.injectAtClosingTag = injectAtClosingTag;
|
|
10
|
-
const utils_js_1 = require("
|
|
10
|
+
const utils_js_1 = require("../../../utils.js");
|
|
11
11
|
function injectHtmlTags(htmlString, htmlTags, position) {
|
|
12
12
|
const htmlFragment = joinHtmlTags(htmlTags.filter((h) => h.position === position));
|
|
13
13
|
if (htmlFragment) {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeScriptTags = mergeScriptTags;
|
|
4
|
-
const
|
|
4
|
+
const csp_js_1 = require("../../csp.js");
|
|
5
|
+
const utils_js_1 = require("../../../utils.js");
|
|
5
6
|
const inferHtmlTags_js_1 = require("./inferHtmlTags.js");
|
|
6
7
|
const scriptRE = /(<script\b(?:\s[^>]*>|>))(.*?)<\/script>/gims;
|
|
7
8
|
const srcRE = /\bsrc\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im;
|
|
8
9
|
const typeRE = /\btype\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im;
|
|
9
|
-
function mergeScriptTags(scriptTagsHtml) {
|
|
10
|
+
function mergeScriptTags(scriptTagsHtml, pageContext) {
|
|
10
11
|
let scriptTag = '';
|
|
11
12
|
const scripts = parseScripts(scriptTagsHtml);
|
|
12
13
|
// We need to merge module scripts to ensure execution order
|
|
@@ -35,7 +36,8 @@ function mergeScriptTags(scriptTagsHtml) {
|
|
|
35
36
|
}
|
|
36
37
|
});
|
|
37
38
|
if (contents.length > 0) {
|
|
38
|
-
|
|
39
|
+
const nonceAttr = (0, csp_js_1.inferNonceAttr)(pageContext);
|
|
40
|
+
scriptTag += `<script ${inferHtmlTags_js_1.scriptCommonAttrs}${nonceAttr}>\n${contents.join('\n')}\n</script>`;
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.injectHtmlTagsToString = injectHtmlTagsToString;
|
|
4
4
|
exports.injectHtmlTagsToStream = injectHtmlTagsToStream;
|
|
5
|
-
const utils_js_1 = require("
|
|
6
|
-
const assertPageContextProvidedByUser_js_1 = require("
|
|
5
|
+
const utils_js_1 = require("../../utils.js");
|
|
6
|
+
const assertPageContextProvidedByUser_js_1 = require("../../../../shared/assertPageContextProvidedByUser.js");
|
|
7
7
|
const injectHtmlTags_js_1 = require("./injectAssets/injectHtmlTags.js");
|
|
8
8
|
const getHtmlTags_js_1 = require("./injectAssets/getHtmlTags.js");
|
|
9
9
|
const getViteDevScript_js_1 = require("./injectAssets/getViteDevScript.js");
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getPropVal = getPropVal;
|
|
4
4
|
exports.setPropVal = setPropVal;
|
|
5
5
|
exports.getPropKeys = getPropKeys;
|
|
6
|
-
const utils_js_1 = require("
|
|
6
|
+
const utils_js_1 = require("../../utils.js");
|
|
7
7
|
// Get a nested property from an object using a dot-separated path such as 'user.id'
|
|
8
8
|
function getPropVal(obj, prop) {
|
|
9
9
|
const keys = getPropKeys(prop);
|
|
@@ -8,7 +8,7 @@ exports.dangerouslySkipEscape = dangerouslySkipEscape;
|
|
|
8
8
|
exports.renderDocumentHtml = renderDocumentHtml;
|
|
9
9
|
exports.isDocumentHtml = isDocumentHtml;
|
|
10
10
|
exports.getHtmlString = getHtmlString;
|
|
11
|
-
const utils_js_1 = require("
|
|
11
|
+
const utils_js_1 = require("../../utils.js");
|
|
12
12
|
const injectAssets_js_1 = require("./injectAssets.js");
|
|
13
13
|
const stream_js_1 = require("./stream.js");
|
|
14
14
|
const react_streaming_js_1 = require("./stream/react-streaming.js");
|
|
@@ -7,13 +7,13 @@ exports.getPageContextClientSerialized = getPageContextClientSerialized;
|
|
|
7
7
|
exports.getPageContextClientSerializedAbort = getPageContextClientSerializedAbort;
|
|
8
8
|
exports.getGlobalContextClientSerialized = getGlobalContextClientSerialized;
|
|
9
9
|
const stringify_1 = require("@brillout/json-serializer/stringify");
|
|
10
|
-
const utils_js_1 = require("
|
|
11
|
-
const error_page_js_1 = require("
|
|
12
|
-
const addIs404ToPageProps_js_1 = require("
|
|
10
|
+
const utils_js_1 = require("../../utils.js");
|
|
11
|
+
const error_page_js_1 = require("../../../../shared/error-page.js");
|
|
12
|
+
const addIs404ToPageProps_js_1 = require("../../../../shared/addIs404ToPageProps.js");
|
|
13
13
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
14
|
-
const NOT_SERIALIZABLE_js_1 = require("
|
|
15
|
-
const pageContextInitIsPassedToClient_js_1 = require("
|
|
16
|
-
const isServerSideError_js_1 = require("
|
|
14
|
+
const NOT_SERIALIZABLE_js_1 = require("../../../../shared/NOT_SERIALIZABLE.js");
|
|
15
|
+
const pageContextInitIsPassedToClient_js_1 = require("../../../../shared/misc/pageContextInitIsPassedToClient.js");
|
|
16
|
+
const isServerSideError_js_1 = require("../../../../shared/misc/isServerSideError.js");
|
|
17
17
|
const propKeys_js_1 = require("./propKeys.js");
|
|
18
18
|
const passToClientBuiltInPageContext = [
|
|
19
19
|
'abortReason',
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.isStreamFromReactStreamingPackage = isStreamFromReactStreamingPackage;
|
|
5
5
|
exports.streamFromReactStreamingPackageToString = streamFromReactStreamingPackageToString;
|
|
6
6
|
exports.getStreamOfReactStreamingPackage = getStreamOfReactStreamingPackage;
|
|
7
|
-
const utils_js_1 = require("
|
|
7
|
+
const utils_js_1 = require("../../../utils.js");
|
|
8
8
|
const stream_js_1 = require("../stream.js");
|
|
9
9
|
function streamFromReactStreamingPackageToString(stream) {
|
|
10
10
|
if (stream.pipe) {
|
|
@@ -24,7 +24,7 @@ exports.streamReadableWebToString = streamReadableWebToString;
|
|
|
24
24
|
exports.streamPipeNodeToString = streamPipeNodeToString;
|
|
25
25
|
exports.isStreamWritableWeb = isStreamWritableWeb;
|
|
26
26
|
exports.isStreamWritableNode = isStreamWritableNode;
|
|
27
|
-
const utils_js_1 = require("
|
|
27
|
+
const utils_js_1 = require("../../utils.js");
|
|
28
28
|
const react_streaming_js_1 = require("./stream/react-streaming.js");
|
|
29
29
|
const import_1 = require("@brillout/import");
|
|
30
30
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
@@ -10,13 +10,14 @@ const findPageConfig_js_1 = require("../../../shared/page-configs/findPageConfig
|
|
|
10
10
|
const analyzePage_js_1 = require("./analyzePage.js");
|
|
11
11
|
const loadAndParseVirtualFilePageEntry_js_1 = require("../../../shared/page-configs/loadAndParseVirtualFilePageEntry.js");
|
|
12
12
|
const execHookServer_js_1 = require("./execHookServer.js");
|
|
13
|
-
const
|
|
13
|
+
const headersResponse_js_1 = require("./headersResponse.js");
|
|
14
|
+
const csp_js_1 = require("./csp.js");
|
|
14
15
|
async function loadPageConfigsLazyServerSide(pageContext) {
|
|
15
16
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
16
17
|
_pageConfig: (0, findPageConfig_js_1.findPageConfig)(pageContext._globalContext._pageConfigs, pageContext.pageId),
|
|
17
18
|
});
|
|
18
19
|
// Load the page's + files
|
|
19
|
-
(0, utils_js_1.
|
|
20
|
+
(0, utils_js_1.objectAssign)(pageContext, await loadPageUserFiles(pageContext));
|
|
20
21
|
// Resolve new computed pageContext properties
|
|
21
22
|
(0, utils_js_1.updateType)(pageContext, await resolvePageContext(pageContext));
|
|
22
23
|
// Execute +onCreatePageContext
|
|
@@ -55,12 +56,13 @@ async function resolvePageContext(pageContext) {
|
|
|
55
56
|
passToClient.push(...valS);
|
|
56
57
|
});
|
|
57
58
|
}
|
|
59
|
+
(0, utils_js_1.objectAssign)(pageContext, await (0, csp_js_1.resolvePageContextCspNone)(pageContext));
|
|
58
60
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
59
61
|
Page: pageContext.exports.Page,
|
|
60
62
|
_isHtmlOnly: isHtmlOnly,
|
|
61
63
|
_passToClient: passToClient,
|
|
62
|
-
headersResponse: resolveHeadersResponse(pageContext),
|
|
63
64
|
});
|
|
65
|
+
(0, utils_js_1.objectAssign)(pageContext, await (0, headersResponse_js_1.resolveHeadersResponseEarly)(pageContext));
|
|
64
66
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
65
67
|
__getPageAssets: async () => {
|
|
66
68
|
if ('_pageAssets' in pageContext) {
|
|
@@ -103,43 +105,20 @@ async function resolvePageContext(pageContext) {
|
|
|
103
105
|
return pageContext;
|
|
104
106
|
}
|
|
105
107
|
async function loadPageUserFiles(pageContext) {
|
|
106
|
-
const [{
|
|
107
|
-
|
|
108
|
+
const [{ pageContextAddendum }] = await Promise.all([
|
|
109
|
+
(async () => {
|
|
110
|
+
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageContext._pageFilesAll, pageContext.pageId);
|
|
111
|
+
const isDev = !pageContext._globalContext._isProduction;
|
|
112
|
+
const pageConfigLoaded = !pageContext._pageConfig
|
|
113
|
+
? null
|
|
114
|
+
: await (0, loadAndParseVirtualFilePageEntry_js_1.loadAndParseVirtualFilePageEntry)(pageContext._pageConfig, isDev);
|
|
115
|
+
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
116
|
+
const pageContextAddendum = (0, resolveVikeConfigPublic_js_1.resolvePageContextConfig)(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
|
|
117
|
+
return { pageContextAddendum };
|
|
118
|
+
})(),
|
|
108
119
|
(0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
|
|
109
120
|
sharedPageFilesAlreadyLoaded: true,
|
|
110
121
|
}),
|
|
111
122
|
]);
|
|
112
|
-
|
|
113
|
-
return pageContext;
|
|
114
|
-
}
|
|
115
|
-
async function loadPageUserFiles_v1Design(pageContext) {
|
|
116
|
-
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageContext._pageFilesAll, pageContext.pageId);
|
|
117
|
-
const isDev = !pageContext._globalContext._isProduction;
|
|
118
|
-
const pageConfigLoaded = !pageContext._pageConfig
|
|
119
|
-
? null
|
|
120
|
-
: await (0, loadAndParseVirtualFilePageEntry_js_1.loadAndParseVirtualFilePageEntry)(pageContext._pageConfig, isDev);
|
|
121
|
-
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
122
|
-
const configPublicPageLazy = (0, resolveVikeConfigPublic_js_1.resolveVikeConfigPublicPageLazyLoaded)(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
|
|
123
|
-
return {
|
|
124
|
-
configPublicPageLazy,
|
|
125
|
-
pageFilesLoaded: pageFilesServerSide,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
function resolveHeadersResponse(pageContext) {
|
|
129
|
-
const headersResponse = mergeHeaders(pageContext.config.headersResponse);
|
|
130
|
-
if (!headersResponse.get('Cache-Control')) {
|
|
131
|
-
const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs);
|
|
132
|
-
if (cacheControl)
|
|
133
|
-
headersResponse.set('Cache-Control', cacheControl);
|
|
134
|
-
}
|
|
135
|
-
return headersResponse;
|
|
136
|
-
}
|
|
137
|
-
function mergeHeaders(headersList = []) {
|
|
138
|
-
const headersMerged = new Headers();
|
|
139
|
-
headersList.forEach((headers) => {
|
|
140
|
-
new Headers(headers).forEach((value, key) => {
|
|
141
|
-
headersMerged.append(key, value);
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
return headersMerged;
|
|
123
|
+
return pageContextAddendum;
|
|
145
124
|
}
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.renderPageAfterRoute = renderPageAfterRoute;
|
|
7
7
|
exports.prerenderPage = prerenderPage;
|
|
8
8
|
const error_page_js_1 = require("../../../shared/error-page.js");
|
|
9
|
-
const renderHtml_js_1 = require("
|
|
9
|
+
const renderHtml_js_1 = require("./html/renderHtml.js");
|
|
10
10
|
const utils_js_1 = require("../utils.js");
|
|
11
|
-
const serializeContext_js_1 = require("
|
|
11
|
+
const serializeContext_js_1 = require("./html/serializeContext.js");
|
|
12
12
|
const createHttpResponse_js_1 = require("./createHttpResponse.js");
|
|
13
13
|
const loadPageConfigsLazyServerSide_js_1 = require("./loadPageConfigsLazyServerSide.js");
|
|
14
14
|
const execHookOnRenderHtml_js_1 = require("./execHookOnRenderHtml.js");
|
|
@@ -18,7 +18,7 @@ const isNewError_js_1 = require("./renderPage/isNewError.js");
|
|
|
18
18
|
const assertArguments_js_1 = require("./renderPage/assertArguments.js");
|
|
19
19
|
const index_js_2 = require("./renderPage/log404/index.js");
|
|
20
20
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
21
|
-
const serializeContext_js_1 = require("./html/serializeContext.js");
|
|
21
|
+
const serializeContext_js_1 = require("./renderPage/html/serializeContext.js");
|
|
22
22
|
const error_page_js_1 = require("../../shared/error-page.js");
|
|
23
23
|
const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
|
|
24
24
|
const loadPageConfigsLazyServerSide_js_1 = require("./renderPage/loadPageConfigsLazyServerSide.js");
|
|
@@ -15,7 +15,7 @@ function onLoad() {
|
|
|
15
15
|
// TO-DO/eventually: let's also use this.meta.viteVersion
|
|
16
16
|
// - https://github.com/vitejs/vite/pull/20088
|
|
17
17
|
// - https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24
|
|
18
|
-
(0, assertVersion_js_1.assertVersion)('Vite', vite_1.version, '6.0.0');
|
|
18
|
+
(0, assertVersion_js_1.assertVersion)('Vite', vite_1.version, ['6.0.0']);
|
|
19
19
|
// Ensure we don't bloat the server runtime with heavy dependencies such Vite and esbuild
|
|
20
20
|
(0, assertSetup_js_1.assertIsNotProductionRuntime)();
|
|
21
21
|
}
|
|
@@ -24,7 +24,7 @@ const getManifestFilePathRelative_js_1 = require("../../shared/getManifestFilePa
|
|
|
24
24
|
const globalObject = (0, utils_js_1.getGlobalObject)('build/handleAssetsManifest.ts', {
|
|
25
25
|
assetsJsonFilePath: undefined,
|
|
26
26
|
});
|
|
27
|
-
//
|
|
27
|
+
// yes => use workaround config.build.ssrEmitAssets
|
|
28
28
|
// false => use workaround extractAssets plugin
|
|
29
29
|
function handleAssetsManifest_isFixEnabled() {
|
|
30
30
|
// Allow user to toggle between the two workarounds? E.g. based on https://vike.dev/includeAssetsImportedByServer.
|
|
@@ -112,7 +112,7 @@ function setDefault(setting, value, configFromUser, configFromVike) {
|
|
|
112
112
|
/*
|
|
113
113
|
import { version } from 'vite'
|
|
114
114
|
function overrideViteDefaultSsrExternal(config: ResolvedConfig) {
|
|
115
|
-
if (!
|
|
115
|
+
if (!isVersionMatch(version, ['5.0.12'])) return
|
|
116
116
|
// @ts-ignore Not released yet: https://github.com/vitejs/vite/pull/10939/files#diff-5a3d42620df2c6b17e25f440ffdb67683dee7ef57317674d19f41d5f30502310L5
|
|
117
117
|
config.ssr.external ??= true
|
|
118
118
|
}
|