vike 0.4.193-commit-c1d490a → 0.4.194
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/plugin/plugins/importUserCode/index.js +1 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +2 -2
- package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +4 -9
- package/dist/cjs/node/plugin/shared/loggerNotProd/log.js +1 -13
- package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -24
- package/dist/cjs/node/plugin/shared/loggerVite.js +0 -3
- package/dist/cjs/node/runtime/renderPage/assertArguments.js +3 -3
- package/dist/cjs/node/runtime/renderPage/{createHttpResponseObject.js → createHttpResponse.js} +16 -9
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -5
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +4 -3
- package/dist/cjs/node/runtime/renderPage/isConfigInvalid.js +4 -2
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -12
- package/dist/cjs/node/runtime/renderPage.js +59 -64
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/parseUrl-extras.js +6 -1
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +2 -2
- package/dist/esm/node/plugin/shared/addSsrMiddleware.js +4 -9
- package/dist/esm/node/plugin/shared/loggerNotProd/log.d.ts +0 -7
- package/dist/esm/node/plugin/shared/loggerNotProd/log.js +0 -12
- package/dist/esm/node/plugin/shared/loggerNotProd.d.ts +1 -7
- package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -24
- package/dist/esm/node/plugin/shared/loggerVite.js +1 -4
- package/dist/esm/node/runtime/renderPage/assertArguments.js +3 -3
- package/dist/esm/node/runtime/renderPage/{createHttpResponseObject.d.ts → createHttpResponse.d.ts} +9 -5
- package/dist/esm/node/runtime/renderPage/{createHttpResponseObject.js → createHttpResponse.js} +15 -8
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -5
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +4 -3
- package/dist/esm/node/runtime/renderPage/isConfigInvalid.d.ts +6 -2
- package/dist/esm/node/runtime/renderPage/isConfigInvalid.js +6 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -11
- package/dist/esm/node/runtime/renderPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage.js +59 -64
- package/dist/esm/shared/route/abort.d.ts +3 -3
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/parseUrl-extras.d.ts +2 -0
- package/dist/esm/utils/parseUrl-extras.js +5 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addUrlOrigin = exports.removeUrlOrigin = exports.modifyUrlPathname = exports.removeBaseServer = exports.normalizeUrlPathname = exports.isBaseAssets = exports.prependBase = void 0;
|
|
3
|
+
exports.getUrlPretty = exports.addUrlOrigin = exports.removeUrlOrigin = exports.modifyUrlPathname = exports.removeBaseServer = exports.normalizeUrlPathname = exports.isBaseAssets = exports.prependBase = void 0;
|
|
4
4
|
const parseUrl_js_1 = require("./parseUrl.js");
|
|
5
5
|
const assert_js_1 = require("./assert.js");
|
|
6
6
|
const slice_js_1 = require("./slice.js");
|
|
@@ -103,3 +103,8 @@ function addUrlOrigin(url, origin) {
|
|
|
103
103
|
return urlModified;
|
|
104
104
|
}
|
|
105
105
|
exports.addUrlOrigin = addUrlOrigin;
|
|
106
|
+
function getUrlPretty(url) {
|
|
107
|
+
const { urlModified } = removeUrlOrigin(url);
|
|
108
|
+
return urlModified;
|
|
109
|
+
}
|
|
110
|
+
exports.getUrlPretty = getUrlPretty;
|
|
@@ -8,7 +8,7 @@ import { isVirtualFileIdPageConfigValuesAll } from '../../../shared/virtual-file
|
|
|
8
8
|
import { isVirtualFileIdImportUserCode } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
|
|
9
9
|
import { vikeConfigDependencies, reloadVikeConfig, isVikeConfigFile } from './v1-design/getVikeConfig.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
11
|
-
import { logConfigInfo
|
|
11
|
+
import { logConfigInfo } from '../../shared/loggerNotProd.js';
|
|
12
12
|
import { getModuleFilePathAbsolute } from '../../shared/getFilePath.js';
|
|
13
13
|
function importUserCode() {
|
|
14
14
|
let config;
|
|
@@ -93,17 +93,13 @@ function handleHotUpdate(ctx, config) {
|
|
|
93
93
|
`${msg} — ${pc.cyan('no HMR')}, see https://vike.dev/on-demand-compiler`,
|
|
94
94
|
'info',
|
|
95
95
|
null,
|
|
96
|
-
true
|
|
97
|
-
clear,
|
|
98
|
-
config
|
|
96
|
+
true
|
|
99
97
|
)
|
|
100
98
|
return
|
|
101
99
|
}
|
|
102
100
|
//*/
|
|
103
|
-
// HMR can resolve errors => we clear previously shown errors.
|
|
104
101
|
// It can hide an error it shouldn't hide (because the error isn't shown again), but it's ok since users can reload the page and the error will be shown again (Vite transpilation errors are shown again upon a page reload).
|
|
105
102
|
if (!isVikeConfig && isViteModule) {
|
|
106
|
-
clearLogs({ clearErrors: true });
|
|
107
103
|
return;
|
|
108
104
|
}
|
|
109
105
|
if (isVikeConfig) {
|
|
@@ -35,7 +35,7 @@ function reloadVikeConfig(userRootDir, outDirRoot) {
|
|
|
35
35
|
handleReloadSideEffects();
|
|
36
36
|
}
|
|
37
37
|
async function handleReloadSideEffects() {
|
|
38
|
-
wasConfigInvalid = isConfigInvalid;
|
|
38
|
+
wasConfigInvalid = !!isConfigInvalid;
|
|
39
39
|
const vikeConfigPromisePrevious = vikeConfigPromise;
|
|
40
40
|
try {
|
|
41
41
|
await vikeConfigPromise;
|
|
@@ -210,7 +210,7 @@ async function loadVikeConfig_withErrorHandling(userRootDir, outDirRoot, isDev,
|
|
|
210
210
|
else {
|
|
211
211
|
assert(ret === undefined);
|
|
212
212
|
assert(err);
|
|
213
|
-
isConfigInvalid_set(
|
|
213
|
+
isConfigInvalid_set({ err });
|
|
214
214
|
if (!isDev) {
|
|
215
215
|
assert(getViteDevServer() === null);
|
|
216
216
|
throw err;
|
|
@@ -43,14 +43,9 @@ function addSsrMiddleware(middlewares, config, isPreview) {
|
|
|
43
43
|
if (value)
|
|
44
44
|
res.setHeader(name, value);
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const { statusCode, headers } = pageContext.httpResponse;
|
|
51
|
-
headers.forEach(([name, value]) => res.setHeader(name, value));
|
|
52
|
-
res.statusCode = statusCode;
|
|
53
|
-
pageContext.httpResponse.pipe(res);
|
|
54
|
-
}
|
|
46
|
+
const { httpResponse } = pageContext;
|
|
47
|
+
httpResponse.headers.forEach(([name, value]) => res.setHeader(name, value));
|
|
48
|
+
res.statusCode = httpResponse.statusCode;
|
|
49
|
+
httpResponse.pipe(res);
|
|
55
50
|
});
|
|
56
51
|
}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
export { logWithViteTag };
|
|
2
2
|
export { logWithVikeTag };
|
|
3
3
|
export { logDirectly };
|
|
4
|
-
export { isFirstLog };
|
|
5
|
-
export { clearScreen };
|
|
6
|
-
export { screenHasErrors };
|
|
7
4
|
export { applyViteSourceMapToStackTrace };
|
|
8
5
|
import type { LogCategory, LogType } from '../loggerNotProd.js';
|
|
9
|
-
import type { ResolvedConfig } from 'vite';
|
|
10
|
-
declare let isFirstLog: boolean;
|
|
11
|
-
declare let screenHasErrors: boolean;
|
|
12
6
|
declare function logWithVikeTag(msg: string, logType: LogType, category: LogCategory | null, showVikeVersion?: boolean): void;
|
|
13
7
|
declare function logWithViteTag(msg: string, logType: LogType, category: LogCategory | null): void;
|
|
14
8
|
declare function logDirectly(thing: unknown, logType: LogType): void;
|
|
15
|
-
declare function clearScreen(viteConfig: ResolvedConfig): void;
|
|
16
9
|
declare function applyViteSourceMapToStackTrace(thing: unknown): void;
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
export { logWithViteTag };
|
|
2
2
|
export { logWithVikeTag };
|
|
3
3
|
export { logDirectly };
|
|
4
|
-
export { isFirstLog };
|
|
5
|
-
export { clearScreen };
|
|
6
|
-
export { screenHasErrors };
|
|
7
4
|
export { applyViteSourceMapToStackTrace };
|
|
8
5
|
import { assert, projectInfo, stripAnsi, hasProp, assertIsNotProductionRuntime } from '../../utils.js';
|
|
9
6
|
import pc from '@brillout/picocolors';
|
|
10
7
|
import { isErrorDebug } from '../../../shared/isErrorDebug.js';
|
|
11
8
|
import { getViteDevServer } from '../../../runtime/globalContext.js';
|
|
12
9
|
assertIsNotProductionRuntime();
|
|
13
|
-
let isFirstLog = true;
|
|
14
|
-
let screenHasErrors = false;
|
|
15
10
|
function logWithVikeTag(msg, logType, category, showVikeVersion = false) {
|
|
16
11
|
const projectTag = getProjectTag(showVikeVersion);
|
|
17
12
|
msg = prependTags(msg, projectTag, category, logType);
|
|
@@ -36,7 +31,6 @@ function logWithViteTag(msg, logType, category) {
|
|
|
36
31
|
// - Production => logs aren't managed by loggerNotProd.ts => logDirectly() is never called (not even loaded as asserted by assertIsVitePluginCode())
|
|
37
32
|
function logDirectly(thing, logType) {
|
|
38
33
|
applyViteSourceMapToStackTrace(thing);
|
|
39
|
-
isFirstLog = false;
|
|
40
34
|
if (logType === 'info') {
|
|
41
35
|
console.log(thing);
|
|
42
36
|
return;
|
|
@@ -46,7 +40,6 @@ function logDirectly(thing, logType) {
|
|
|
46
40
|
return;
|
|
47
41
|
}
|
|
48
42
|
if (logType === 'error') {
|
|
49
|
-
screenHasErrors = true;
|
|
50
43
|
console.error(thing);
|
|
51
44
|
return;
|
|
52
45
|
}
|
|
@@ -57,11 +50,6 @@ function logDirectly(thing, logType) {
|
|
|
57
50
|
}
|
|
58
51
|
assert(false);
|
|
59
52
|
}
|
|
60
|
-
function clearScreen(viteConfig) {
|
|
61
|
-
// We use Vite's logger in order to respect the user's `clearScreen: false` setting
|
|
62
|
-
viteConfig.logger.clearScreen('error');
|
|
63
|
-
screenHasErrors = false;
|
|
64
|
-
}
|
|
65
53
|
function applyViteSourceMapToStackTrace(thing) {
|
|
66
54
|
if (isErrorDebug())
|
|
67
55
|
return;
|
|
@@ -4,7 +4,6 @@ export { logConfigInfo };
|
|
|
4
4
|
export { logConfigError };
|
|
5
5
|
export { logConfigErrorRecover };
|
|
6
6
|
export { logErrorDebugNote };
|
|
7
|
-
export { clearLogs };
|
|
8
7
|
export type { LogInfo };
|
|
9
8
|
export type { LogInfoArgs };
|
|
10
9
|
export type { LogError };
|
|
@@ -17,18 +16,13 @@ type LogInfo = (...args: LogInfoArgs) => void;
|
|
|
17
16
|
type LogInfoArgs = Parameters<typeof logRuntimeInfo>;
|
|
18
17
|
type LogError = (...args: LogErrorArgs) => void;
|
|
19
18
|
type LogErrorArgs = Parameters<typeof logRuntimeError>;
|
|
20
|
-
declare function logRuntimeInfo(msg: string, httpRequestId: number, logType: LogType
|
|
19
|
+
declare function logRuntimeInfo(msg: string, httpRequestId: number, logType: LogType): void;
|
|
21
20
|
declare function logViteAny(msg: string, logType: LogType, httpRequestId: number | null, prependViteTag: boolean): void;
|
|
22
21
|
declare function logConfigInfo(msg: string, logType: LogType): void;
|
|
23
22
|
declare function logConfigErrorRecover(): void;
|
|
24
23
|
declare function logRuntimeError(err: unknown, httpRequestId: number | null): void;
|
|
25
24
|
declare function logViteError(err: unknown, httpRequestId: number | undefined): void;
|
|
26
25
|
declare function logConfigError(err: unknown): void;
|
|
27
|
-
declare function clearLogs(conditions?: {
|
|
28
|
-
clearErrors?: boolean;
|
|
29
|
-
clearIfFirstLog?: boolean;
|
|
30
|
-
clearAlsoIfConfigIsInvalid?: boolean;
|
|
31
|
-
}): void;
|
|
32
26
|
/** Note shown to user when vike does something risky:
|
|
33
27
|
* - When vike dedupes (i.e. swallows) an error with getHttpRequestAsyncStore().shouldErrorBeSwallowed(err)
|
|
34
28
|
* - When vike modifies the error with getPrettyErrorWithCodeSnippet(err)
|
|
@@ -10,7 +10,6 @@ export { logConfigInfo };
|
|
|
10
10
|
export { logConfigError };
|
|
11
11
|
export { logConfigErrorRecover };
|
|
12
12
|
export { logErrorDebugNote };
|
|
13
|
-
export { clearLogs };
|
|
14
13
|
import { isAbortError } from '../../../shared/route/abort.js';
|
|
15
14
|
import { getViteConfig } from '../../runtime/globalContext.js';
|
|
16
15
|
import { overwriteRuntimeProductionLogger } from '../../runtime/renderPage/loggerRuntime.js';
|
|
@@ -19,18 +18,15 @@ import { getHttpRequestAsyncStore } from './getHttpRequestAsyncStore.js';
|
|
|
19
18
|
import { isErrorDebug } from '../../shared/isErrorDebug.js';
|
|
20
19
|
import { isErrorWithCodeSnippet, getPrettyErrorWithCodeSnippet } from './loggerNotProd/errorWithCodeSnippet.js';
|
|
21
20
|
import { getConfigExecutionErrorIntroMsg, getConfigBuildErrorFormatted } from '../plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js';
|
|
22
|
-
import { logWithVikeTag, logWithViteTag, logDirectly,
|
|
21
|
+
import { logWithVikeTag, logWithViteTag, logDirectly, applyViteSourceMapToStackTrace } from './loggerNotProd/log.js';
|
|
23
22
|
import pc from '@brillout/picocolors';
|
|
24
23
|
import { setAlreadyLogged } from '../../runtime/renderPage/isNewError.js';
|
|
25
|
-
import { isConfigInvalid } from '../../runtime/renderPage/isConfigInvalid.js';
|
|
26
24
|
import { onRuntimeError } from '../../runtime/renderPage/loggerProd.js';
|
|
27
25
|
import { isUserHookError } from '../../../shared/hooks/executeHook.js';
|
|
28
26
|
assertIsNotProductionRuntime();
|
|
29
27
|
overwriteRuntimeProductionLogger(logRuntimeError, logRuntimeInfo);
|
|
30
28
|
overwriteAssertProductionLogger(assertLogger);
|
|
31
|
-
function logRuntimeInfo(msg, httpRequestId, logType
|
|
32
|
-
if (clearErrors)
|
|
33
|
-
clearLogs({ clearErrors: true });
|
|
29
|
+
function logRuntimeInfo(msg, httpRequestId, logType) {
|
|
34
30
|
const category = getCategory(httpRequestId);
|
|
35
31
|
assert(category);
|
|
36
32
|
logWithVikeTag(msg, logType, category);
|
|
@@ -50,7 +46,6 @@ function logConfigInfo(msg, logType) {
|
|
|
50
46
|
}
|
|
51
47
|
function logConfigErrorRecover() {
|
|
52
48
|
const msg = pc.bold(pc.green('Configuration successfully loaded'));
|
|
53
|
-
clearLogs({ clearAlsoIfConfigIsInvalid: true });
|
|
54
49
|
const category = getConfigCategory();
|
|
55
50
|
logWithVikeTag(msg, 'error-recover', category);
|
|
56
51
|
}
|
|
@@ -110,7 +105,6 @@ function logErr(err, httpRequestId = null, errorComesFromVite) {
|
|
|
110
105
|
onRuntimeError(err);
|
|
111
106
|
}
|
|
112
107
|
function logConfigError(err) {
|
|
113
|
-
clearLogs({ clearAlsoIfConfigIsInvalid: true });
|
|
114
108
|
warnIfErrorIsNotObject(err);
|
|
115
109
|
const category = getConfigCategory();
|
|
116
110
|
{
|
|
@@ -173,22 +167,6 @@ function assertLogger(thing, logType) {
|
|
|
173
167
|
const { assertMsg, showVikeVersion } = res;
|
|
174
168
|
logWithVikeTag(assertMsg, logType, category, showVikeVersion);
|
|
175
169
|
}
|
|
176
|
-
function clearLogs(conditions = {}) {
|
|
177
|
-
if (!conditions.clearAlsoIfConfigIsInvalid && isConfigInvalid) {
|
|
178
|
-
// Avoid hiding the config error: the config error is printed only once
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
if (conditions.clearErrors && !screenHasErrors) {
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
if (conditions.clearIfFirstLog && !isFirstLog) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
const viteConfig = getViteConfig();
|
|
188
|
-
if (viteConfig) {
|
|
189
|
-
clearScreen(viteConfig);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
170
|
/** Note shown to user when vike does something risky:
|
|
193
171
|
* - When vike dedupes (i.e. swallows) an error with getHttpRequestAsyncStore().shouldErrorBeSwallowed(err)
|
|
194
172
|
* - When vike modifies the error with getPrettyErrorWithCodeSnippet(err)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { improveViteLogs };
|
|
2
2
|
import { assert, removeEmptyLines, trimWithAnsi, trimWithAnsiTrailOnly } from '../utils.js';
|
|
3
|
-
import { logViteError, logViteAny
|
|
3
|
+
import { logViteError, logViteAny } from './loggerNotProd.js';
|
|
4
4
|
import { getHttpRequestAsyncStore } from './getHttpRequestAsyncStore.js';
|
|
5
5
|
import { removeSuperfluousViteLog } from './loggerVite/removeSuperfluousViteLog.js';
|
|
6
6
|
import { isErrorDebug } from '../../shared/isErrorDebug.js';
|
|
@@ -36,9 +36,6 @@ function intercept(logType, config) {
|
|
|
36
36
|
assert(!isErrorDebug());
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
-
// Only allow Vite to clear for its first log. All other clearing is controlled by vike.
|
|
40
|
-
if (options.clear)
|
|
41
|
-
clearLogs({ clearIfFirstLog: true });
|
|
42
39
|
// Vite's default logger preprends the "[vite]" tag if and only if options.timestamp is true
|
|
43
40
|
const prependViteTag = options.timestamp || !!store?.httpRequestId;
|
|
44
41
|
logViteAny(msg, logType, store?.httpRequestId ?? null, prependViteTag);
|
|
@@ -2,14 +2,14 @@ export { assertArguments };
|
|
|
2
2
|
import { assert, assertUsage, assertWarning, hasProp, isObject } from '../utils.js';
|
|
3
3
|
import pc from '@brillout/picocolors';
|
|
4
4
|
function assertArguments(...args) {
|
|
5
|
-
const prefix =
|
|
5
|
+
const prefix = `${pc.code('renderPage(pageContextInit)')} (https://vike.dev/renderPage)`;
|
|
6
6
|
const pageContextInit = args[0];
|
|
7
7
|
assertUsage(pageContextInit !== undefined && pageContextInit !== null, prefix + ` argument ${pc.cyan('pageContextInit')} is missing`, { showStackTrace: true });
|
|
8
8
|
const len = args.length;
|
|
9
|
-
assertUsage(len === 1, `${prefix}
|
|
9
|
+
assertUsage(len === 1, `${prefix} called with ${len} arguments but renderPage() accepts only one argument.'`, {
|
|
10
10
|
showStackTrace: true
|
|
11
11
|
});
|
|
12
|
-
assertUsage(isObject(pageContextInit), `${prefix}
|
|
12
|
+
assertUsage(isObject(pageContextInit), `${prefix} called with ${pc.code(`typeof pageContextInit === ${JSON.stringify(typeof pageContextInit)}`)} but ${pc.code('pageContextInit')} should be an object.`, { showStackTrace: true });
|
|
13
13
|
// TODO/v1-release: remove
|
|
14
14
|
if ('url' in pageContextInit) {
|
|
15
15
|
assertWarning(false, '`pageContextInit.url` has been renamed to `pageContextInit.urlOriginal`: replace `renderPage({ url })` with `renderPage({ urlOriginal })`. (See https://vike.dev/migration/0.4.23 for more information.)', { showStackTrace: true, onlyOnce: true });
|
package/dist/esm/node/runtime/renderPage/{createHttpResponseObject.d.ts → createHttpResponse.d.ts}
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createHttpResponse };
|
|
2
2
|
export { createHttpResponsePageContextJson };
|
|
3
|
-
export {
|
|
3
|
+
export { createHttpResponseError };
|
|
4
|
+
export { createHttpResponseRedirect };
|
|
5
|
+
export { createHttpResponseFavicon404 };
|
|
4
6
|
export type { HttpResponse };
|
|
5
7
|
import type { GetPageAssets } from './getPageAssets.js';
|
|
6
8
|
import type { HtmlRender } from '../html/renderHtml.js';
|
|
@@ -16,13 +18,15 @@ type HttpResponse = {
|
|
|
16
18
|
/** **Deprecated**: use `headers` instead, see https://vike.dev/migration/0.4.134 */
|
|
17
19
|
contentType: 'application/json' | 'text/html;charset=utf-8';
|
|
18
20
|
} & HttpResponseBody;
|
|
19
|
-
declare function
|
|
21
|
+
declare function createHttpResponse(htmlRender: HtmlRender, renderHook: null | RenderHook, pageContext: {
|
|
20
22
|
_pageId: null | string;
|
|
21
23
|
is404: null | boolean;
|
|
22
24
|
errorWhileRendering: null | Error;
|
|
23
25
|
__getPageAssets: GetPageAssets;
|
|
24
26
|
_pageConfigs: PageConfigRuntime[];
|
|
25
27
|
abortStatusCode?: AbortStatusCode;
|
|
26
|
-
}): Promise<HttpResponse
|
|
28
|
+
}): Promise<HttpResponse>;
|
|
29
|
+
declare function createHttpResponseFavicon404(): HttpResponse;
|
|
30
|
+
declare function createHttpResponseError(): HttpResponse;
|
|
27
31
|
declare function createHttpResponsePageContextJson(pageContextSerialized: string): Promise<HttpResponse>;
|
|
28
|
-
declare function
|
|
32
|
+
declare function createHttpResponseRedirect({ url, statusCode }: UrlRedirect, urlLogical: string): HttpResponse;
|
package/dist/esm/node/runtime/renderPage/{createHttpResponseObject.js → createHttpResponse.js}
RENAMED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createHttpResponse };
|
|
2
2
|
export { createHttpResponsePageContextJson };
|
|
3
|
-
export {
|
|
3
|
+
export { createHttpResponseError };
|
|
4
|
+
export { createHttpResponseRedirect };
|
|
5
|
+
export { createHttpResponseFavicon404 };
|
|
4
6
|
import { assert, assertWarning } from '../utils.js';
|
|
5
7
|
import { isErrorPage } from '../../../shared/error-page.js';
|
|
6
8
|
import { getHttpResponseBody, getHttpResponseBodyStreamHandlers } from './getHttpResponseBody.js';
|
|
7
9
|
import { getEarlyHints } from './getEarlyHints.js';
|
|
8
10
|
import { getCacheControl } from './createHttpResponseObject/getCacheControl.js';
|
|
9
11
|
import { assertNoInfiniteHttpRedirect } from './createHttpResponseObject/assertNoInfiniteHttpRedirect.js';
|
|
10
|
-
async function
|
|
11
|
-
if (htmlRender === null) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
12
|
+
async function createHttpResponse(htmlRender, renderHook, pageContext) {
|
|
14
13
|
let statusCode = pageContext.abortStatusCode;
|
|
15
14
|
if (!statusCode) {
|
|
16
15
|
const isError = !pageContext._pageId || isErrorPage(pageContext._pageId, pageContext._pageConfigs);
|
|
@@ -35,11 +34,19 @@ async function createHttpResponseObject(htmlRender, renderHook, pageContext) {
|
|
|
35
34
|
}
|
|
36
35
|
return getHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
|
|
37
36
|
}
|
|
37
|
+
function createHttpResponseFavicon404() {
|
|
38
|
+
const httpResponse = getHttpResponse(404, 'text/html;charset=utf-8', [], "<p>No favicon.ico found.</p><script>console.log('This HTTP response was generated by Vike.')</script>");
|
|
39
|
+
return httpResponse;
|
|
40
|
+
}
|
|
41
|
+
function createHttpResponseError() {
|
|
42
|
+
const httpResponse = getHttpResponse(500, 'text/html;charset=utf-8', [], "<p>An error occurred.</p><script>console.log('This HTTP response was generated by Vike. This response is used instead of rendering the error page (https://vike.dev/error-page), either because there isn't error page or because an error occurred while rendering the error page.')</script>");
|
|
43
|
+
return httpResponse;
|
|
44
|
+
}
|
|
38
45
|
async function createHttpResponsePageContextJson(pageContextSerialized) {
|
|
39
46
|
const httpResponse = getHttpResponse(200, 'application/json', [], pageContextSerialized, [], null);
|
|
40
47
|
return httpResponse;
|
|
41
48
|
}
|
|
42
|
-
function
|
|
49
|
+
function createHttpResponseRedirect({ url, statusCode },
|
|
43
50
|
// The URL we assume the redirect to be logically based on
|
|
44
51
|
urlLogical) {
|
|
45
52
|
assertNoInfiniteHttpRedirect(url, urlLogical);
|
|
@@ -50,7 +57,7 @@ urlLogical) {
|
|
|
50
57
|
return getHttpResponse(statusCode, 'text/html;charset=utf-8', headers,
|
|
51
58
|
// For bots / programmatic crawlig: show what's going on.
|
|
52
59
|
// For users: showing a blank page is probably better than a flickering text.
|
|
53
|
-
`<p style="display: none">Redirecting to ${url}</p>`);
|
|
60
|
+
`<p style="display: none">Redirecting to ${url}</p><script>console.log('This HTTP response was generated by Vike.')</script>`);
|
|
54
61
|
}
|
|
55
62
|
function getHttpResponse(statusCode, contentType, headers, htmlRender, earlyHints = [], renderHook = null) {
|
|
56
63
|
headers.push(['Content-Type', contentType]);
|
|
@@ -17,9 +17,6 @@ async function executeOnRenderHtmlHook(pageContext) {
|
|
|
17
17
|
const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturnValue, renderHook);
|
|
18
18
|
Object.assign(pageContext, pageContextProvidedByRenderHook);
|
|
19
19
|
objectAssign(pageContext, { _pageContextPromise: pageContextPromise });
|
|
20
|
-
if (documentHtml === null || documentHtml === undefined) {
|
|
21
|
-
return { htmlRender: null, renderHook };
|
|
22
|
-
}
|
|
23
20
|
const onErrorWhileStreaming = (err) => {
|
|
24
21
|
// Should the stream inject the following?
|
|
25
22
|
// ```
|
|
@@ -75,7 +72,7 @@ function getRenderHook(pageContext) {
|
|
|
75
72
|
return hookFound;
|
|
76
73
|
}
|
|
77
74
|
function processHookReturnValue(hookReturnValue, renderHook) {
|
|
78
|
-
let documentHtml
|
|
75
|
+
let documentHtml;
|
|
79
76
|
let pageContextPromise = null;
|
|
80
77
|
let pageContextProvidedByRenderHook = null;
|
|
81
78
|
let injectFilter = null;
|
|
@@ -102,7 +99,8 @@ function processHookReturnValue(hookReturnValue, renderHook) {
|
|
|
102
99
|
assertUsage(isCallable(hookReturnValue.injectFilter), 'injectFilter should be a function');
|
|
103
100
|
injectFilter = hookReturnValue.injectFilter;
|
|
104
101
|
}
|
|
105
|
-
|
|
102
|
+
assertUsage(hookReturnValue.documentHtml, `${errPrefix} returned an object that is missing the ${pc.code('documentHtml')} property.`);
|
|
103
|
+
{
|
|
106
104
|
let val = hookReturnValue.documentHtml;
|
|
107
105
|
const errBegin = `${errPrefix} returned ${pc.cyan('{ documentHtml }')}, but ${pc.cyan('documentHtml')}`;
|
|
108
106
|
if (typeof val === 'string') {
|
|
@@ -2,7 +2,7 @@ export { handleErrorWithoutErrorPage };
|
|
|
2
2
|
import { stringify } from '@brillout/json-serializer/stringify';
|
|
3
3
|
import { getGlobalContext } from '../globalContext.js';
|
|
4
4
|
import { assert, assertWarning, objectAssign } from '../utils.js';
|
|
5
|
-
import {
|
|
5
|
+
import { createHttpResponse, createHttpResponseError } from './createHttpResponse.js';
|
|
6
6
|
import pc from '@brillout/picocolors';
|
|
7
7
|
// When the user hasn't defined _error.page.js
|
|
8
8
|
async function handleErrorWithoutErrorPage(pageContext) {
|
|
@@ -13,13 +13,14 @@ async function handleErrorWithoutErrorPage(pageContext) {
|
|
|
13
13
|
warnMissingErrorPage(isV1);
|
|
14
14
|
}
|
|
15
15
|
if (!pageContext.isClientSideNavigation) {
|
|
16
|
-
|
|
16
|
+
const httpResponse = createHttpResponseError();
|
|
17
|
+
objectAssign(pageContext, { httpResponse });
|
|
17
18
|
return pageContext;
|
|
18
19
|
}
|
|
19
20
|
else {
|
|
20
21
|
const __getPageAssets = async () => [];
|
|
21
22
|
objectAssign(pageContext, { __getPageAssets });
|
|
22
|
-
const httpResponse = await
|
|
23
|
+
const httpResponse = await createHttpResponse(stringify({ serverSideError: true }), null, pageContext);
|
|
23
24
|
objectAssign(pageContext, { httpResponse });
|
|
24
25
|
return pageContext;
|
|
25
26
|
}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { isConfigInvalid };
|
|
2
|
+
export { isConfigInvalid_set };
|
|
3
|
+
declare let isConfigInvalid: false | {
|
|
4
|
+
err: unknown;
|
|
5
|
+
};
|
|
6
|
+
declare const isConfigInvalid_set: (val: typeof isConfigInvalid) => void;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { isConfigInvalid };
|
|
2
|
+
export { isConfigInvalid_set };
|
|
3
|
+
import { assert } from '../utils.js';
|
|
4
|
+
let isConfigInvalid;
|
|
5
|
+
const isConfigInvalid_set = (val) => {
|
|
6
|
+
assert(val === false || val.err);
|
|
3
7
|
isConfigInvalid = val;
|
|
4
8
|
};
|
|
@@ -8,13 +8,13 @@ export type { PageContextAfterRender };
|
|
|
8
8
|
export type { PageContextInitEnhanced };
|
|
9
9
|
import { type PageFile } from '../../../shared/getPageFiles.js';
|
|
10
10
|
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
11
|
-
import { HttpResponse } from './
|
|
11
|
+
import { HttpResponse } from './createHttpResponse.js';
|
|
12
12
|
import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
|
|
13
13
|
import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
14
14
|
import { type PageRoutes } from '../../../shared/route/loadPageRoutes.js';
|
|
15
15
|
import type { Hook } from '../../../shared/hooks/getHook.js';
|
|
16
16
|
type PageContextAfterRender = {
|
|
17
|
-
httpResponse:
|
|
17
|
+
httpResponse: HttpResponse;
|
|
18
18
|
errorWhileRendering: null | Error;
|
|
19
19
|
};
|
|
20
20
|
declare function renderPageAlreadyRouted<PageContext extends {
|
|
@@ -10,7 +10,7 @@ import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAs
|
|
|
10
10
|
import { serializePageContextClientSide } from '../html/serializePageContextClientSide.js';
|
|
11
11
|
import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
|
|
12
12
|
import { getGlobalContext } from '../globalContext.js';
|
|
13
|
-
import {
|
|
13
|
+
import { createHttpResponse, createHttpResponsePageContextJson } from './createHttpResponse.js';
|
|
14
14
|
import { loadUserFilesServerSide } from './loadUserFilesServerSide.js';
|
|
15
15
|
import { executeOnRenderHtmlHook } from './executeOnRenderHtmlHook.js';
|
|
16
16
|
import { executeOnBeforeRenderAndDataHooks } from './executeOnBeforeRenderAndDataHooks.js';
|
|
@@ -56,16 +56,10 @@ async function renderPageAlreadyRouted(pageContext) {
|
|
|
56
56
|
return pageContext;
|
|
57
57
|
}
|
|
58
58
|
const renderHookResult = await executeOnRenderHtmlHook(pageContext);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
else {
|
|
64
|
-
const { htmlRender, renderHook } = renderHookResult;
|
|
65
|
-
const httpResponse = await createHttpResponseObject(htmlRender, renderHook, pageContext);
|
|
66
|
-
objectAssign(pageContext, { httpResponse });
|
|
67
|
-
return pageContext;
|
|
68
|
-
}
|
|
59
|
+
const { htmlRender, renderHook } = renderHookResult;
|
|
60
|
+
const httpResponse = await createHttpResponse(htmlRender, renderHook, pageContext);
|
|
61
|
+
objectAssign(pageContext, { httpResponse });
|
|
62
|
+
return pageContext;
|
|
69
63
|
}
|
|
70
64
|
async function prerenderPage(pageContext) {
|
|
71
65
|
objectAssign(pageContext, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { renderPage };
|
|
2
2
|
export { renderPage_addWrapper };
|
|
3
|
-
import { HttpResponse } from './renderPage/
|
|
3
|
+
import { HttpResponse } from './renderPage/createHttpResponse.js';
|
|
4
4
|
import type { PageContextServer } from '../../types/index.js';
|
|
5
5
|
declare let renderPage_wrapper: <PageContext>(_httpRequestId: number, ret: () => Promise<PageContext>) => Promise<{
|
|
6
6
|
pageContextReturn: Awaited<PageContext>;
|
|
@@ -12,5 +12,5 @@ declare function renderPage<PageContextUserAdded extends {}, PageContextInit ext
|
|
|
12
12
|
/** The URL of the HTTP request */
|
|
13
13
|
urlOriginal: string;
|
|
14
14
|
}>(pageContextInit: PageContextInit): Promise<PageContextInit & {
|
|
15
|
-
httpResponse: HttpResponse
|
|
15
|
+
httpResponse: HttpResponse;
|
|
16
16
|
} & Partial<PageContextServer & PageContextUserAdded>>;
|