@sveltejs/kit 1.25.0 → 1.25.1
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/package.json +2 -2
- package/src/exports/vite/dev/index.js +13 -9
- package/src/runtime/server/page/respond_with_error.js +5 -0
- package/src/runtime/server/respond.js +8 -0
- package/src/runtime/server/utils.js +1 -9
- package/src/runtime/shared-server.js +3 -3
- package/src/types/internal.d.ts +1 -1
- package/src/utils/routing.js +10 -0
- package/src/version.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltejs/kit",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.1",
|
|
4
4
|
"description": "The fastest way to build Svelte apps",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"set-cookie-parser": "^2.6.0",
|
|
24
24
|
"sirv": "^2.0.2",
|
|
25
25
|
"tiny-glob": "^0.2.9",
|
|
26
|
-
"undici": "~5.
|
|
26
|
+
"undici": "~5.25.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@playwright/test": "1.30.0",
|
|
@@ -54,11 +54,14 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
54
54
|
/** @param {string} url */
|
|
55
55
|
async function loud_ssr_load_module(url) {
|
|
56
56
|
try {
|
|
57
|
-
return await vite.ssrLoadModule(url);
|
|
57
|
+
return await vite.ssrLoadModule(url, { fixStacktrace: true });
|
|
58
58
|
} catch (/** @type {any} */ err) {
|
|
59
59
|
const msg = buildErrorMessage(err, [colors.red(`Internal server error: ${err.message}`)]);
|
|
60
60
|
|
|
61
|
-
vite.config.logger.
|
|
61
|
+
if (!vite.config.logger.hasErrorLogged(err)) {
|
|
62
|
+
vite.config.logger.error(msg, { error: err });
|
|
63
|
+
}
|
|
64
|
+
|
|
62
65
|
vite.ws.send({
|
|
63
66
|
type: 'error',
|
|
64
67
|
err: {
|
|
@@ -233,7 +236,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
233
236
|
for (const key in manifest_data.matchers) {
|
|
234
237
|
const file = manifest_data.matchers[key];
|
|
235
238
|
const url = path.resolve(cwd, file);
|
|
236
|
-
const module = await vite.ssrLoadModule(url);
|
|
239
|
+
const module = await vite.ssrLoadModule(url, { fixStacktrace: true });
|
|
237
240
|
|
|
238
241
|
if (module.match) {
|
|
239
242
|
matchers[key] = module.match;
|
|
@@ -248,9 +251,10 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
248
251
|
};
|
|
249
252
|
}
|
|
250
253
|
|
|
251
|
-
/** @param {
|
|
252
|
-
function fix_stack_trace(
|
|
253
|
-
|
|
254
|
+
/** @param {Error} error */
|
|
255
|
+
function fix_stack_trace(error) {
|
|
256
|
+
vite.ssrFixStacktrace(error);
|
|
257
|
+
return error.stack;
|
|
254
258
|
}
|
|
255
259
|
|
|
256
260
|
await update_manifest();
|
|
@@ -393,7 +397,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
393
397
|
} catch (e) {
|
|
394
398
|
const error = coalesce_to_error(e);
|
|
395
399
|
res.statusCode = 500;
|
|
396
|
-
res.end(fix_stack_trace(
|
|
400
|
+
res.end(fix_stack_trace(error));
|
|
397
401
|
}
|
|
398
402
|
});
|
|
399
403
|
|
|
@@ -454,7 +458,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
454
458
|
|
|
455
459
|
// we have to import `Server` before calling `set_assets`
|
|
456
460
|
const { Server } = /** @type {import('types').ServerModule} */ (
|
|
457
|
-
await vite.ssrLoadModule(`${runtime_base}/server/index.js
|
|
461
|
+
await vite.ssrLoadModule(`${runtime_base}/server/index.js`, { fixStacktrace: true })
|
|
458
462
|
);
|
|
459
463
|
|
|
460
464
|
const { set_fix_stack_trace } = await vite.ssrLoadModule(
|
|
@@ -523,7 +527,7 @@ export async function dev(vite, vite_config, svelte_config) {
|
|
|
523
527
|
} catch (e) {
|
|
524
528
|
const error = coalesce_to_error(e);
|
|
525
529
|
res.statusCode = 500;
|
|
526
|
-
res.end(fix_stack_trace(
|
|
530
|
+
res.end(fix_stack_trace(error));
|
|
527
531
|
}
|
|
528
532
|
});
|
|
529
533
|
};
|
|
@@ -28,6 +28,11 @@ export async function respond_with_error({
|
|
|
28
28
|
error,
|
|
29
29
|
resolve_opts
|
|
30
30
|
}) {
|
|
31
|
+
// reroute to the fallback page to prevent an infinite chain of requests.
|
|
32
|
+
if (event.request.headers.get('x-sveltekit-error')) {
|
|
33
|
+
return static_error_page(options, status, /** @type {Error} */ (error).message);
|
|
34
|
+
}
|
|
35
|
+
|
|
31
36
|
/** @type {import('./types').Fetched[]} */
|
|
32
37
|
const fetched = [];
|
|
33
38
|
|
|
@@ -457,6 +457,14 @@ export async function respond(request, options, manifest, state) {
|
|
|
457
457
|
return response;
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
+
if (state.error && event.isSubRequest) {
|
|
461
|
+
return await fetch(request, {
|
|
462
|
+
headers: {
|
|
463
|
+
'x-sveltekit-error': 'true'
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
|
|
460
468
|
if (state.error) {
|
|
461
469
|
return text('Internal Server Error', {
|
|
462
470
|
status: 500
|
|
@@ -99,15 +99,7 @@ export async function handle_error_and_jsonify(event, options, error) {
|
|
|
99
99
|
return error.body;
|
|
100
100
|
} else {
|
|
101
101
|
if (__SVELTEKIT_DEV__ && typeof error == 'object') {
|
|
102
|
-
|
|
103
|
-
get: (target, property) => {
|
|
104
|
-
if (property === 'stack') {
|
|
105
|
-
return fix_stack_trace(target.stack);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return Reflect.get(target, property, target);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
102
|
+
fix_stack_trace(error);
|
|
111
103
|
}
|
|
112
104
|
|
|
113
105
|
return (
|
|
@@ -4,8 +4,8 @@ export let private_env = {};
|
|
|
4
4
|
/** @type {Record<string, string>} */
|
|
5
5
|
export let public_env = {};
|
|
6
6
|
|
|
7
|
-
/** @param {
|
|
8
|
-
export let fix_stack_trace = (
|
|
7
|
+
/** @param {any} error */
|
|
8
|
+
export let fix_stack_trace = (error) => error?.stack;
|
|
9
9
|
|
|
10
10
|
/** @type {(environment: Record<string, string>) => void} */
|
|
11
11
|
export function set_private_env(environment) {
|
|
@@ -17,7 +17,7 @@ export function set_public_env(environment) {
|
|
|
17
17
|
public_env = environment;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
/** @param {(
|
|
20
|
+
/** @param {(error: Error) => string} value */
|
|
21
21
|
export function set_fix_stack_trace(value) {
|
|
22
22
|
fix_stack_trace = value;
|
|
23
23
|
}
|
package/src/types/internal.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface ServerInternalModule {
|
|
|
32
32
|
set_private_env(environment: Record<string, string>): void;
|
|
33
33
|
set_public_env(environment: Record<string, string>): void;
|
|
34
34
|
set_version(version: string): void;
|
|
35
|
-
set_fix_stack_trace(fix_stack_trace: (
|
|
35
|
+
set_fix_stack_trace(fix_stack_trace: (error: unknown) => string): void;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export interface Asset {
|
package/src/utils/routing.js
CHANGED
|
@@ -136,6 +136,7 @@ export function exec(match, params, matchers) {
|
|
|
136
136
|
const result = {};
|
|
137
137
|
|
|
138
138
|
const values = match.slice(1);
|
|
139
|
+
const values_needing_match = values.filter((value) => value !== undefined);
|
|
139
140
|
|
|
140
141
|
let buffered = 0;
|
|
141
142
|
|
|
@@ -170,6 +171,15 @@ export function exec(match, params, matchers) {
|
|
|
170
171
|
if (next_param && !next_param.rest && next_param.optional && next_value && param.chained) {
|
|
171
172
|
buffered = 0;
|
|
172
173
|
}
|
|
174
|
+
|
|
175
|
+
// There are no more params and no more values, but all non-empty values have been matched
|
|
176
|
+
if (
|
|
177
|
+
!next_param &&
|
|
178
|
+
!next_value &&
|
|
179
|
+
Object.keys(result).length === values_needing_match.length
|
|
180
|
+
) {
|
|
181
|
+
buffered = 0;
|
|
182
|
+
}
|
|
173
183
|
continue;
|
|
174
184
|
}
|
|
175
185
|
|
package/src/version.js
CHANGED