@sveltejs/kit 2.19.2 → 2.20.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.19.2",
3
+ "version": "2.20.1",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -0,0 +1,53 @@
1
+ /** @import { RequestEvent } from '@sveltejs/kit' */
2
+
3
+ /** @type {RequestEvent | null} */
4
+ let request_event = null;
5
+
6
+ /** @type {import('node:async_hooks').AsyncLocalStorage<RequestEvent | null>} */
7
+ let als;
8
+
9
+ import('node:async_hooks')
10
+ .then((hooks) => (als = new hooks.AsyncLocalStorage()))
11
+ .catch(() => {
12
+ // can't use AsyncLocalStorage, but can still call getRequestEvent synchronously.
13
+ // this isn't behind `supports` because it's basically just StackBlitz (i.e.
14
+ // in-browser usage) that doesn't support it AFAICT
15
+ });
16
+
17
+ /**
18
+ * Returns the current `RequestEvent`. Can be used inside `handle`, `load` and actions (and functions called by them).
19
+ *
20
+ * In environments without [`AsyncLocalStorage`](https://nodejs.org/api/async_context.html#class-asynclocalstorage), this must be called synchronously (i.e. not after an `await`).
21
+ * @since 2.20.0
22
+ */
23
+ export function getRequestEvent() {
24
+ const event = request_event ?? als?.getStore();
25
+
26
+ if (!event) {
27
+ let message =
28
+ 'Can only read the current request event inside functions invoked during `handle`, such as server `load` functions, actions, and server endpoints.';
29
+
30
+ if (!als) {
31
+ message +=
32
+ ' In environments without `AsyncLocalStorage`, the event must be read synchronously, not after an `await`.';
33
+ }
34
+
35
+ throw new Error(message);
36
+ }
37
+
38
+ return event;
39
+ }
40
+
41
+ /**
42
+ * @template T
43
+ * @param {RequestEvent | null} event
44
+ * @param {() => T} fn
45
+ */
46
+ export function with_event(event, fn) {
47
+ try {
48
+ request_event = event;
49
+ return als ? als.run(event, fn) : fn();
50
+ } finally {
51
+ request_event = null;
52
+ }
53
+ }
@@ -71,3 +71,5 @@ export function read(asset) {
71
71
 
72
72
  throw new Error(`Asset does not exist: ${file}`);
73
73
  }
74
+
75
+ export { getRequestEvent } from './event.js';
@@ -1,5 +1,6 @@
1
1
  import { ENDPOINT_METHODS, PAGE_METHODS } from '../../constants.js';
2
2
  import { negotiate } from '../../utils/http.js';
3
+ import { with_event } from '../app/server/event.js';
3
4
  import { Redirect } from '../control.js';
4
5
  import { method_not_allowed } from './utils.js';
5
6
 
@@ -40,8 +41,8 @@ export async function render_endpoint(event, mod, state) {
40
41
  }
41
42
 
42
43
  try {
43
- let response = await handler(
44
- /** @type {import('@sveltejs/kit').RequestEvent<Record<string, any>>} */ (event)
44
+ let response = await with_event(event, () =>
45
+ handler(/** @type {import('@sveltejs/kit').RequestEvent<Record<string, any>>} */ (event))
45
46
  );
46
47
 
47
48
  if (!(response instanceof Response)) {
@@ -5,6 +5,7 @@ import { get_status, normalize_error } from '../../../utils/error.js';
5
5
  import { is_form_content_type, negotiate } from '../../../utils/http.js';
6
6
  import { HttpError, Redirect, ActionFailure, SvelteKitError } from '../../control.js';
7
7
  import { handle_error_and_jsonify } from '../utils.js';
8
+ import { with_event } from '../../app/server/event.js';
8
9
 
9
10
  /** @param {import('@sveltejs/kit').RequestEvent} event */
10
11
  export function is_action_json_request(event) {
@@ -246,7 +247,7 @@ async function call_action(event, actions) {
246
247
  );
247
248
  }
248
249
 
249
- return action(event);
250
+ return with_event(event, () => action(event));
250
251
  }
251
252
 
252
253
  /** @param {any} data */
@@ -2,6 +2,7 @@ import { DEV } from 'esm-env';
2
2
  import { disable_search, make_trackable } from '../../../utils/url.js';
3
3
  import { validate_depends } from '../../shared.js';
4
4
  import { b64_encode } from '../../utils.js';
5
+ import { with_event } from '../../app/server/event.js';
5
6
 
6
7
  /**
7
8
  * Calls the user's server `load` function.
@@ -16,7 +17,6 @@ import { b64_encode } from '../../utils.js';
16
17
  export async function load_server_data({ event, state, node, parent }) {
17
18
  if (!node?.server) return null;
18
19
 
19
- let done = false;
20
20
  let is_tracking = true;
21
21
 
22
22
  const uses = {
@@ -28,6 +28,13 @@ export async function load_server_data({ event, state, node, parent }) {
28
28
  search_params: new Set()
29
29
  };
30
30
 
31
+ const load = node.server.load;
32
+ const slash = node.server.trailingSlash;
33
+
34
+ if (!load) {
35
+ return { type: 'data', data: null, uses, slash };
36
+ }
37
+
31
38
  const url = make_trackable(
32
39
  event.url,
33
40
  () => {
@@ -58,92 +65,96 @@ export async function load_server_data({ event, state, node, parent }) {
58
65
  disable_search(url);
59
66
  }
60
67
 
61
- const result = await node.server.load?.call(null, {
62
- ...event,
63
- fetch: (info, init) => {
64
- const url = new URL(info instanceof Request ? info.url : info, event.url);
68
+ let done = false;
65
69
 
66
- if (DEV && done && !uses.dependencies.has(url.href)) {
67
- console.warn(
68
- `${node.server_id}: Calling \`event.fetch(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated`
69
- );
70
- }
70
+ const result = await with_event(event, () =>
71
+ load.call(null, {
72
+ ...event,
73
+ fetch: (info, init) => {
74
+ const url = new URL(info instanceof Request ? info.url : info, event.url);
71
75
 
72
- // Note: server fetches are not added to uses.depends due to security concerns
73
- return event.fetch(info, init);
74
- },
75
- /** @param {string[]} deps */
76
- depends: (...deps) => {
77
- for (const dep of deps) {
78
- const { href } = new URL(dep, event.url);
76
+ if (DEV && done && !uses.dependencies.has(url.href)) {
77
+ console.warn(
78
+ `${node.server_id}: Calling \`event.fetch(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated`
79
+ );
80
+ }
79
81
 
80
- if (DEV) {
81
- validate_depends(node.server_id || 'missing route ID', dep);
82
+ // Note: server fetches are not added to uses.depends due to security concerns
83
+ return event.fetch(info, init);
84
+ },
85
+ /** @param {string[]} deps */
86
+ depends: (...deps) => {
87
+ for (const dep of deps) {
88
+ const { href } = new URL(dep, event.url);
89
+
90
+ if (DEV) {
91
+ validate_depends(node.server_id || 'missing route ID', dep);
92
+
93
+ if (done && !uses.dependencies.has(href)) {
94
+ console.warn(
95
+ `${node.server_id}: Calling \`depends(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated`
96
+ );
97
+ }
98
+ }
82
99
 
83
- if (done && !uses.dependencies.has(href)) {
100
+ uses.dependencies.add(href);
101
+ }
102
+ },
103
+ params: new Proxy(event.params, {
104
+ get: (target, key) => {
105
+ if (DEV && done && typeof key === 'string' && !uses.params.has(key)) {
84
106
  console.warn(
85
- `${node.server_id}: Calling \`depends(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the dependency is invalidated`
107
+ `${node.server_id}: Accessing \`params.${String(
108
+ key
109
+ )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the param changes`
86
110
  );
87
111
  }
88
- }
89
112
 
90
- uses.dependencies.add(href);
91
- }
92
- },
93
- params: new Proxy(event.params, {
94
- get: (target, key) => {
95
- if (DEV && done && typeof key === 'string' && !uses.params.has(key)) {
113
+ if (is_tracking) {
114
+ uses.params.add(key);
115
+ }
116
+ return target[/** @type {string} */ (key)];
117
+ }
118
+ }),
119
+ parent: async () => {
120
+ if (DEV && done && !uses.parent) {
96
121
  console.warn(
97
- `${node.server_id}: Accessing \`params.${String(
98
- key
99
- )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the param changes`
122
+ `${node.server_id}: Calling \`parent(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when parent data changes`
100
123
  );
101
124
  }
102
125
 
103
126
  if (is_tracking) {
104
- uses.params.add(key);
127
+ uses.parent = true;
105
128
  }
106
- return target[/** @type {string} */ (key)];
107
- }
108
- }),
109
- parent: async () => {
110
- if (DEV && done && !uses.parent) {
111
- console.warn(
112
- `${node.server_id}: Calling \`parent(...)\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when parent data changes`
113
- );
114
- }
129
+ return parent();
130
+ },
131
+ route: new Proxy(event.route, {
132
+ get: (target, key) => {
133
+ if (DEV && done && typeof key === 'string' && !uses.route) {
134
+ console.warn(
135
+ `${node.server_id}: Accessing \`route.${String(
136
+ key
137
+ )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the route changes`
138
+ );
139
+ }
115
140
 
116
- if (is_tracking) {
117
- uses.parent = true;
118
- }
119
- return parent();
120
- },
121
- route: new Proxy(event.route, {
122
- get: (target, key) => {
123
- if (DEV && done && typeof key === 'string' && !uses.route) {
124
- console.warn(
125
- `${node.server_id}: Accessing \`route.${String(
126
- key
127
- )}\` in a promise handler after \`load(...)\` has returned will not cause the function to re-run when the route changes`
128
- );
141
+ if (is_tracking) {
142
+ uses.route = true;
143
+ }
144
+ return target[/** @type {'id'} */ (key)];
129
145
  }
130
-
131
- if (is_tracking) {
132
- uses.route = true;
146
+ }),
147
+ url,
148
+ untrack(fn) {
149
+ is_tracking = false;
150
+ try {
151
+ return fn();
152
+ } finally {
153
+ is_tracking = true;
133
154
  }
134
- return target[/** @type {'id'} */ (key)];
135
155
  }
136
- }),
137
- url,
138
- untrack(fn) {
139
- is_tracking = false;
140
- try {
141
- return fn();
142
- } finally {
143
- is_tracking = true;
144
- }
145
- }
146
- });
156
+ })
157
+ );
147
158
 
148
159
  if (__SVELTEKIT_DEV__) {
149
160
  validate_load_response(result, node.server_id);
@@ -155,7 +166,7 @@ export async function load_server_data({ event, state, node, parent }) {
155
166
  type: 'data',
156
167
  data: result ?? null,
157
168
  uses,
158
- slash: node.server.trailingSlash
169
+ slash
159
170
  };
160
171
  }
161
172
 
@@ -33,6 +33,7 @@ import {
33
33
  strip_data_suffix,
34
34
  strip_resolution_suffix
35
35
  } from '../pathname.js';
36
+ import { with_event } from '../app/server/event.js';
36
37
 
37
38
  /* global __SVELTEKIT_ADAPTER_NAME__ */
38
39
  /* global __SVELTEKIT_DEV__ */
@@ -350,26 +351,32 @@ export async function respond(request, options, manifest, state) {
350
351
 
351
352
  if (state.prerendering && !state.prerendering.fallback) disable_search(url);
352
353
 
353
- const response = await options.hooks.handle({
354
- event,
355
- resolve: (event, opts) =>
356
- resolve(event, page_nodes, opts).then((response) => {
357
- // add headers/cookies here, rather than inside `resolve`, so that we
358
- // can do it once for all responses instead of once per `return`
359
- for (const key in headers) {
360
- const value = headers[key];
361
- response.headers.set(key, /** @type {string} */ (value));
362
- }
363
-
364
- add_cookies_to_headers(response.headers, Object.values(new_cookies));
365
-
366
- if (state.prerendering && event.route.id !== null) {
367
- response.headers.set('x-sveltekit-routeid', encodeURI(event.route.id));
368
- }
369
-
370
- return response;
371
- })
372
- });
354
+ const response = await with_event(event, () =>
355
+ options.hooks.handle({
356
+ event,
357
+ resolve: (event, opts) =>
358
+ // counter-intuitively, we need to clear the event, so that it's not
359
+ // e.g. accessible when loading modules needed to handle the request
360
+ with_event(null, () =>
361
+ resolve(event, page_nodes, opts).then((response) => {
362
+ // add headers/cookies here, rather than inside `resolve`, so that we
363
+ // can do it once for all responses instead of once per `return`
364
+ for (const key in headers) {
365
+ const value = headers[key];
366
+ response.headers.set(key, /** @type {string} */ (value));
367
+ }
368
+
369
+ add_cookies_to_headers(response.headers, Object.values(new_cookies));
370
+
371
+ if (state.prerendering && event.route.id !== null) {
372
+ response.headers.set('x-sveltekit-routeid', encodeURI(event.route.id));
373
+ }
374
+
375
+ return response;
376
+ })
377
+ )
378
+ })
379
+ );
373
380
 
374
381
  // respond with 304 if etag matches
375
382
  if (response.status === 200 && response.headers.has('etag')) {
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '2.19.2';
4
+ export const VERSION = '2.20.1';
package/types/index.d.ts CHANGED
@@ -2402,6 +2402,7 @@ declare module '$app/paths' {
2402
2402
  }
2403
2403
 
2404
2404
  declare module '$app/server' {
2405
+ import type { RequestEvent } from '@sveltejs/kit';
2405
2406
  /**
2406
2407
  * Read the contents of an imported asset from the filesystem
2407
2408
  * @example
@@ -2415,6 +2416,13 @@ declare module '$app/server' {
2415
2416
  * @since 2.4.0
2416
2417
  */
2417
2418
  export function read(asset: string): Response;
2419
+ /**
2420
+ * Returns the current `RequestEvent`. Can be used inside `handle`, `load` and actions (and functions called by them).
2421
+ *
2422
+ * In environments without [`AsyncLocalStorage`](https://nodejs.org/api/async_context.html#class-asynclocalstorage), this must be called synchronously (i.e. not after an `await`).
2423
+ * @since 2.20.0
2424
+ */
2425
+ export function getRequestEvent(): RequestEvent<Partial<Record<string, string>>, string | null>;
2418
2426
 
2419
2427
  export {};
2420
2428
  }
@@ -120,6 +120,7 @@
120
120
  "assets",
121
121
  "resolveRoute",
122
122
  "read",
123
+ "getRequestEvent",
123
124
  "page",
124
125
  "navigating",
125
126
  "updated",
@@ -141,6 +142,7 @@
141
142
  "../src/runtime/client/client.js",
142
143
  "../src/runtime/app/paths/types.d.ts",
143
144
  "../src/runtime/app/server/index.js",
145
+ "../src/runtime/app/server/event.js",
144
146
  "../src/runtime/app/state/index.js",
145
147
  "../src/runtime/app/stores.js"
146
148
  ],
@@ -161,8 +163,9 @@
161
163
  null,
162
164
  null,
163
165
  null,
166
+ null,
164
167
  null
165
168
  ],
166
- "mappings": "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",
169
+ "mappings": "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",
167
170
  "ignoreList": []
168
171
  }