@sveltejs/kit 2.43.1 → 2.43.3

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.43.1",
3
+ "version": "2.43.3",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -1,3 +1,6 @@
1
+ /** @import { PromiseWithResolvers } from '../../utils/promise.js' */
2
+ import { with_resolvers } from '../../utils/promise.js';
3
+
1
4
  /**
2
5
  * @typedef {{
3
6
  * fn: () => Promise<any>,
@@ -10,24 +13,12 @@
10
13
  export function queue(concurrency) {
11
14
  /** @type {Task[]} */
12
15
  const tasks = [];
16
+ const { promise, resolve, reject } = /** @type {PromiseWithResolvers<void>} */ (with_resolvers());
13
17
 
14
18
  let current = 0;
15
-
16
- // TODO: Whenever Node >21 is minimum supported version, we can use `Promise.withResolvers` to avoid this ceremony
17
- /** @type {(value?: any) => void} */
18
- let fulfil;
19
-
20
- /** @type {(error: Error) => void} */
21
- let reject;
22
-
23
19
  let closed = false;
24
20
 
25
- const done = new Promise((f, r) => {
26
- fulfil = f;
27
- reject = r;
28
- });
29
-
30
- done.catch(() => {
21
+ promise.catch(() => {
31
22
  // this is necessary in case a catch handler is never added
32
23
  // to the done promise by the user
33
24
  });
@@ -51,7 +42,7 @@ export function queue(concurrency) {
51
42
  });
52
43
  } else if (current === 0) {
53
44
  closed = true;
54
- fulfil();
45
+ resolve();
55
46
  }
56
47
  }
57
48
  }
@@ -72,10 +63,10 @@ export function queue(concurrency) {
72
63
  done: () => {
73
64
  if (current === 0) {
74
65
  closed = true;
75
- fulfil();
66
+ resolve();
76
67
  }
77
68
 
78
- return done;
69
+ return promise;
79
70
  }
80
71
  };
81
72
  }
@@ -2,6 +2,8 @@
2
2
  /** @import { RequestStore } from 'types' */
3
3
  /** @import { AsyncLocalStorage } from 'node:async_hooks' */
4
4
 
5
+ import { IN_WEBCONTAINER } from '../../runtime/server/constants.js';
6
+
5
7
  /** @type {RequestStore | null} */
6
8
  let sync_store = null;
7
9
 
@@ -45,7 +47,17 @@ export function getRequestEvent() {
45
47
  export function get_request_store() {
46
48
  const result = try_get_request_store();
47
49
  if (!result) {
48
- throw new Error('Could not get the request store. This is an internal error.');
50
+ let message = 'Could not get the request store.';
51
+
52
+ if (als) {
53
+ message += ' This is an internal error.';
54
+ } else {
55
+ message +=
56
+ ' In environments without `AsyncLocalStorage`, the request store (used by e.g. remote functions) must be accessed synchronously, not after an `await`.' +
57
+ ' If it was accessed synchronously then this is an internal error.';
58
+ }
59
+
60
+ throw new Error(message);
49
61
  }
50
62
  return result;
51
63
  }
@@ -64,6 +76,10 @@ export function with_request_store(store, fn) {
64
76
  sync_store = store;
65
77
  return als ? als.run(store, fn) : fn();
66
78
  } finally {
67
- sync_store = null;
79
+ // Since AsyncLocalStorage is not working in webcontainers, we don't reset `sync_store`
80
+ // and handle only one request at a time in `src/runtime/server/index.js`.
81
+ if (!IN_WEBCONTAINER) {
82
+ sync_store = null;
83
+ }
68
84
  }
69
85
  }
@@ -1937,7 +1937,11 @@ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
1937
1937
  /** Preflight checks */
1938
1938
  preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
1939
1939
  /** Validate the form contents programmatically */
1940
- validate(options?: { includeUntouched?: boolean }): Promise<void>;
1940
+ validate(options?: {
1941
+ includeUntouched?: boolean;
1942
+ /** Perform validation as if the form was submitted by the given button. */
1943
+ submitter?: HTMLButtonElement | HTMLInputElement;
1944
+ }): Promise<void>;
1941
1945
  /** The result of the form submission */
1942
1946
  get result(): Output | undefined;
1943
1947
  /** The number of pending submissions */
@@ -136,7 +136,7 @@ export function enhance(form_element, submit = () => {}) {
136
136
  ? /** @type {HTMLButtonElement | HTMLInputElement} */ (event.submitter).formEnctype
137
137
  : clone(form_element).enctype;
138
138
 
139
- const form_data = new FormData(form_element);
139
+ const form_data = new FormData(form_element, event.submitter);
140
140
 
141
141
  if (DEV && enctype !== 'multipart/form-data') {
142
142
  for (const value of form_data.values()) {
@@ -148,11 +148,6 @@ export function enhance(form_element, submit = () => {}) {
148
148
  }
149
149
  }
150
150
 
151
- const submitter_name = event.submitter?.getAttribute('name');
152
- if (submitter_name) {
153
- form_data.append(submitter_name, event.submitter?.getAttribute('value') ?? '');
154
- }
155
-
156
151
  const controller = new AbortController();
157
152
 
158
153
  let cancelled = false;
@@ -189,7 +189,10 @@ let target;
189
189
  /** @type {import('./types.js').SvelteKitApp} */
190
190
  export let app;
191
191
 
192
- /** @type {Record<string, any>} */
192
+ /**
193
+ * Data that was serialized during SSR. This is cleared when the user first navigates
194
+ * @type {Record<string, any>}
195
+ */
193
196
  export let remote_responses = {};
194
197
 
195
198
  /** @type {Array<((url: URL) => boolean)>} */
@@ -240,7 +243,7 @@ let current = {
240
243
 
241
244
  /** this being true means we SSR'd */
242
245
  let hydrated = false;
243
- export let started = false;
246
+ let started = false;
244
247
  let autoscroll = true;
245
248
  let updating = false;
246
249
  let is_navigating = false;
@@ -1488,6 +1491,8 @@ async function navigate({
1488
1491
  block = noop,
1489
1492
  event
1490
1493
  }) {
1494
+ remote_responses = {};
1495
+
1491
1496
  const prev_token = token;
1492
1497
  token = nav_token;
1493
1498
 
@@ -2096,6 +2101,8 @@ export function refreshAll({ includeLoadFunctions = true } = {}) {
2096
2101
  throw new Error('Cannot call refreshAll() on the server');
2097
2102
  }
2098
2103
 
2104
+ remote_responses = {};
2105
+
2099
2106
  force_invalidation = true;
2100
2107
  return _invalidate(includeLoadFunctions, false);
2101
2108
  }
@@ -2536,12 +2543,7 @@ function _start_router() {
2536
2543
  event.preventDefault();
2537
2544
  event.stopPropagation();
2538
2545
 
2539
- const data = new FormData(event_form);
2540
-
2541
- const submitter_name = submitter?.getAttribute('name');
2542
- if (submitter_name) {
2543
- data.append(submitter_name, submitter?.getAttribute('value') ?? '');
2544
- }
2546
+ const data = new FormData(event_form, submitter);
2545
2547
 
2546
2548
  // @ts-expect-error `URLSearchParams(fd)` is kosher, but typescript doesn't know that
2547
2549
  url.search = new URLSearchParams(data).toString();
@@ -6,14 +6,7 @@ import { app_dir, base } from '$app/paths/internal/client';
6
6
  import * as devalue from 'devalue';
7
7
  import { DEV } from 'esm-env';
8
8
  import { HttpError } from '@sveltejs/kit/internal';
9
- import {
10
- app,
11
- remote_responses,
12
- started,
13
- _goto,
14
- set_nearest_error_page,
15
- invalidateAll
16
- } from '../client.js';
9
+ import { app, remote_responses, _goto, set_nearest_error_page, invalidateAll } from '../client.js';
17
10
  import { tick } from 'svelte';
18
11
  import { refresh_queries, release_overrides } from './shared.svelte.js';
19
12
  import { createAttachmentKey } from 'svelte/attachments';
@@ -42,7 +35,7 @@ export function form(id) {
42
35
  let issues = $state.raw({});
43
36
 
44
37
  /** @type {any} */
45
- let result = $state.raw(started ? undefined : remote_responses[action_id]);
38
+ let result = $state.raw(remote_responses[action_id]);
46
39
 
47
40
  /** @type {number} */
48
41
  let pending_count = $state(0);
@@ -237,7 +230,7 @@ export function form(id) {
237
230
 
238
231
  event.preventDefault();
239
232
 
240
- const form_data = new FormData(form);
233
+ const form_data = new FormData(form, event.submitter);
241
234
 
242
235
  if (DEV) {
243
236
  validate_form_data(form_data, clone(form).enctype);
@@ -347,7 +340,7 @@ export function form(id) {
347
340
  event.stopPropagation();
348
341
  event.preventDefault();
349
342
 
350
- const form_data = new FormData(form);
343
+ const form_data = new FormData(form, target);
351
344
 
352
345
  if (DEV) {
353
346
  const enctype = target.hasAttribute('formenctype')
@@ -357,10 +350,6 @@ export function form(id) {
357
350
  validate_form_data(form_data, enctype);
358
351
  }
359
352
 
360
- if (target.name) {
361
- form_data.append(target.name, target?.getAttribute('value') ?? '');
362
- }
363
-
364
353
  await handle_submit(form, form_data, callback);
365
354
  };
366
355
  };
@@ -429,12 +418,12 @@ export function form(id) {
429
418
  },
430
419
  validate: {
431
420
  /** @type {RemoteForm<any, any>['validate']} */
432
- value: async ({ includeUntouched = false } = {}) => {
421
+ value: async ({ includeUntouched = false, submitter } = {}) => {
433
422
  if (!element) return;
434
423
 
435
424
  const id = ++validate_id;
436
425
 
437
- const form_data = new FormData(element);
426
+ const form_data = new FormData(element, submitter);
438
427
 
439
428
  /** @type {readonly StandardSchemaV1.Issue[]} */
440
429
  let array = [];
@@ -3,7 +3,7 @@ import { app_dir, base } from '$app/paths/internal/client';
3
3
  import { version } from '__sveltekit/environment';
4
4
  import * as devalue from 'devalue';
5
5
  import { DEV } from 'esm-env';
6
- import { app, remote_responses, started } from '../client.js';
6
+ import { app, remote_responses } from '../client.js';
7
7
  import { create_remote_function, remote_request } from './shared.svelte.js';
8
8
 
9
9
  // Initialize Cache API for prerender functions
@@ -117,11 +117,8 @@ class Prerender {
117
117
  export function prerender(id) {
118
118
  return create_remote_function(id, (cache_key, payload) => {
119
119
  return new Prerender(async () => {
120
- if (!started) {
121
- const result = remote_responses[cache_key];
122
- if (result) {
123
- return result;
124
- }
120
+ if (Object.hasOwn(remote_responses, cache_key)) {
121
+ return remote_responses[cache_key];
125
122
  }
126
123
 
127
124
  const url = `${base}/${app_dir}/remote/${id}${payload ? `/${payload}` : ''}`;
@@ -1,7 +1,7 @@
1
1
  /** @import { RemoteQueryFunction } from '@sveltejs/kit' */
2
2
  /** @import { RemoteFunctionResponse } from 'types' */
3
3
  import { app_dir, base } from '$app/paths/internal/client';
4
- import { app, goto, remote_responses, started } from '../client.js';
4
+ import { app, goto, remote_responses } from '../client.js';
5
5
  import { tick } from 'svelte';
6
6
  import { create_remote_function, remote_request } from './shared.svelte.js';
7
7
  import * as devalue from 'devalue';
@@ -14,11 +14,8 @@ import { HttpError, Redirect } from '@sveltejs/kit/internal';
14
14
  export function query(id) {
15
15
  return create_remote_function(id, (cache_key, payload) => {
16
16
  return new Query(cache_key, async () => {
17
- if (!started) {
18
- const result = remote_responses[cache_key];
19
- if (result) {
20
- return result;
21
- }
17
+ if (Object.hasOwn(remote_responses, cache_key)) {
18
+ return remote_responses[cache_key];
22
19
  }
23
20
 
24
21
  const url = `${base}/${app_dir}/remote/${id}${payload ? `?payload=${payload}` : ''}`;
@@ -38,11 +35,8 @@ export function query_batch(id) {
38
35
 
39
36
  return create_remote_function(id, (cache_key, payload) => {
40
37
  return new Query(cache_key, () => {
41
- if (!started) {
42
- const result = remote_responses[cache_key];
43
- if (result) {
44
- return result;
45
- }
38
+ if (Object.hasOwn(remote_responses, cache_key)) {
39
+ return remote_responses[cache_key];
46
40
  }
47
41
 
48
42
  // Collect all the calls to the same query in the same macrotask,
@@ -277,6 +271,7 @@ export class Query {
277
271
  * @returns {Promise<void>}
278
272
  */
279
273
  refresh() {
274
+ delete remote_responses[this._key];
280
275
  return (this.#promise = this.#run());
281
276
  }
282
277
 
@@ -1 +1,4 @@
1
1
  export const NULL_BODY_STATUS = [101, 103, 204, 205, 304];
2
+
3
+ // eslint-disable-next-line n/prefer-global/process
4
+ export const IN_WEBCONTAINER = !!globalThis.process?.versions?.webcontainer;
@@ -1,3 +1,6 @@
1
+ /** @import { PromiseWithResolvers } from '../../utils/promise.js' */
2
+ import { with_resolvers } from '../../utils/promise.js';
3
+ import { IN_WEBCONTAINER } from './constants.js';
1
4
  import { respond } from './respond.js';
2
5
  import { set_private_env, set_public_env } from '../shared-server.js';
3
6
  import { options, get_hooks } from '__SERVER__/internal.js';
@@ -23,6 +26,26 @@ export class Server {
23
26
  this.#options = options;
24
27
  this.#manifest = manifest;
25
28
 
29
+ // Since AsyncLocalStorage is not working in webcontainers, we don't reset `sync_store`
30
+ // in `src/exports/internal/event.js` and handle only one request at a time.
31
+ if (IN_WEBCONTAINER) {
32
+ const respond = this.respond.bind(this);
33
+
34
+ /** @type {Promise<void> | null} */
35
+ let current = null;
36
+
37
+ /** @type {typeof respond} */
38
+ this.respond = async (...args) => {
39
+ const { promise, resolve } = /** @type {PromiseWithResolvers<void>} */ (with_resolvers());
40
+
41
+ const previous = current;
42
+ current = promise;
43
+
44
+ await previous;
45
+ return respond(...args).finally(resolve);
46
+ };
47
+ }
48
+
26
49
  set_manifest(manifest);
27
50
  }
28
51
 
@@ -205,7 +205,16 @@ export async function render_response({
205
205
  // portable as possible, but reset afterwards
206
206
  if (paths.relative) paths.override({ base, assets });
207
207
 
208
- const rendered = options.root.render(props, render_opts);
208
+ const maybe_promise = options.root.render(props, render_opts);
209
+ // We have to invoke .then eagerly here in order to kick off rendering: it's only starting on access,
210
+ // and `await maybe_promise` would eagerly access the .then property but call its function only after a tick, which is too late
211
+ // for the paths.reset() below and for any eager getRequestEvent() calls during rendering without AsyncLocalStorage available.
212
+ const rendered =
213
+ options.async && 'then' in maybe_promise
214
+ ? /** @type {ReturnType<typeof options.root.render> & Promise<any>} */ (
215
+ maybe_promise
216
+ ).then((r) => r)
217
+ : maybe_promise;
209
218
 
210
219
  // TODO 3.0 remove options.async
211
220
  if (options.async) {
@@ -0,0 +1,29 @@
1
+ /** @see https://github.com/microsoft/TypeScript/blob/904e7dd97dc8da1352c8e05d70829dff17c73214/src/lib/es2024.promise.d.ts */
2
+
3
+ /**
4
+ * @template T
5
+ * @typedef {{
6
+ * promise: Promise<T>;
7
+ * resolve: (value: T | PromiseLike<T>) => void;
8
+ * reject: (reason?: any) => void;
9
+ * }} PromiseWithResolvers<T>
10
+ */
11
+
12
+ /**
13
+ * TODO: Whenever Node >21 is minimum supported version, we can use `Promise.withResolvers` to avoid this ceremony
14
+ *
15
+ * @template T
16
+ * @returns {PromiseWithResolvers<T>}
17
+ */
18
+ export function with_resolvers() {
19
+ let resolve;
20
+ let reject;
21
+
22
+ const promise = new Promise((res, rej) => {
23
+ resolve = res;
24
+ reject = rej;
25
+ });
26
+
27
+ // @ts-expect-error `resolve` and `reject` are assigned!
28
+ return { promise, resolve, reject };
29
+ }
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.43.1';
4
+ export const VERSION = '2.43.3';
package/types/index.d.ts CHANGED
@@ -1913,7 +1913,11 @@ declare module '@sveltejs/kit' {
1913
1913
  /** Preflight checks */
1914
1914
  preflight(schema: StandardSchemaV1<Input, any>): RemoteForm<Input, Output>;
1915
1915
  /** Validate the form contents programmatically */
1916
- validate(options?: { includeUntouched?: boolean }): Promise<void>;
1916
+ validate(options?: {
1917
+ includeUntouched?: boolean;
1918
+ /** Perform validation as if the form was submitted by the given button. */
1919
+ submitter?: HTMLButtonElement | HTMLInputElement;
1920
+ }): Promise<void>;
1917
1921
  /** The result of the form submission */
1918
1922
  get result(): Output | undefined;
1919
1923
  /** The number of pending submissions */
@@ -201,6 +201,6 @@
201
201
  null,
202
202
  null
203
203
  ],
204
- "mappings": "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",
204
+ "mappings": "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",
205
205
  "ignoreList": []
206
206
  }