svelte 5.39.12 → 5.40.0

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/elements.d.ts CHANGED
@@ -1658,6 +1658,7 @@ export interface SVGAttributes<T extends EventTarget> extends AriaAttributes, DO
1658
1658
  'font-variant'?: number | string | undefined | null;
1659
1659
  'font-weight'?: number | string | undefined | null;
1660
1660
  format?: number | string | undefined | null;
1661
+ fr?: number | string | undefined | null;
1661
1662
  from?: number | string | undefined | null;
1662
1663
  fx?: number | string | undefined | null;
1663
1664
  fy?: number | string | undefined | null;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "svelte",
3
3
  "description": "Cybernetically enhanced web apps",
4
4
  "license": "MIT",
5
- "version": "5.39.12",
5
+ "version": "5.40.0",
6
6
  "type": "module",
7
7
  "types": "./types/index.d.ts",
8
8
  "engines": {
@@ -242,7 +242,13 @@ function init_update_callbacks(context) {
242
242
  }
243
243
 
244
244
  export { flushSync } from './internal/client/reactivity/batch.js';
245
- export { getContext, getAllContexts, hasContext, setContext } from './internal/client/context.js';
245
+ export {
246
+ createContext,
247
+ getContext,
248
+ getAllContexts,
249
+ hasContext,
250
+ setContext
251
+ } from './internal/client/context.js';
246
252
  export { hydrate, mount, unmount } from './internal/client/render.js';
247
253
  export { tick, untrack, settled } from './internal/client/runtime.js';
248
254
  export { createRawSnippet } from './internal/client/dom/blocks/snippet.js';
@@ -39,6 +39,12 @@ export async function settled() {}
39
39
 
40
40
  export { getAbortSignal } from './internal/server/abort-signal.js';
41
41
 
42
- export { getAllContexts, getContext, hasContext, setContext } from './internal/server/context.js';
42
+ export {
43
+ createContext,
44
+ getAllContexts,
45
+ getContext,
46
+ hasContext,
47
+ setContext
48
+ } from './internal/server/context.js';
43
49
 
44
50
  export { createRawSnippet } from './internal/server/blocks/snippet.js';
@@ -69,6 +69,26 @@ export function set_dev_current_component_function(fn) {
69
69
  dev_current_component_function = fn;
70
70
  }
71
71
 
72
+ /**
73
+ * Returns a `[get, set]` pair of functions for working with context in a type-safe way.
74
+ * @template T
75
+ * @returns {[() => T, (context: T) => T]}
76
+ */
77
+ export function createContext() {
78
+ const key = {};
79
+
80
+ return [
81
+ () => {
82
+ if (!hasContext(key)) {
83
+ e.missing_context();
84
+ }
85
+
86
+ return getContext(key);
87
+ },
88
+ (context) => setContext(key, context)
89
+ ];
90
+ }
91
+
72
92
  /**
73
93
  * Retrieves the context that belongs to the closest parent component with the specified `key`.
74
94
  * Must be called during component initialisation.
@@ -1,4 +1,4 @@
1
- /** @import { Derived, Effect, Source, Value } from '#client' */
1
+ /** @import { Derived, Effect, Reaction, Source, Value } from '#client' */
2
2
  import {
3
3
  BLOCK_EFFECT,
4
4
  BRANCH_EFFECT,
@@ -14,7 +14,7 @@ import {
14
14
  DERIVED
15
15
  } from '#client/constants';
16
16
  import { async_mode_flag } from '../../flags/index.js';
17
- import { deferred, define_property, noop } from '../../shared/utils.js';
17
+ import { deferred, define_property } from '../../shared/utils.js';
18
18
  import {
19
19
  active_effect,
20
20
  is_dirty,
@@ -44,12 +44,12 @@ export let current_batch = null;
44
44
  export let previous_batch = null;
45
45
 
46
46
  /**
47
- * When time travelling, we re-evaluate deriveds based on the temporary
48
- * values of their dependencies rather than their actual values, and cache
49
- * the results in this map rather than on the deriveds themselves
50
- * @type {Map<Derived, any> | null}
47
+ * When time travelling (i.e. working in one batch, while other batches
48
+ * still have ongoing work), we ignore the real values of affected
49
+ * signals in favour of their values within the batch
50
+ * @type {Map<Value, any> | null}
51
51
  */
52
- export let batch_deriveds = null;
52
+ export let batch_values = null;
53
53
 
54
54
  /** @type {Set<() => void>} */
55
55
  export let effect_pending_updates = new Set();
@@ -152,7 +152,7 @@ export class Batch {
152
152
 
153
153
  previous_batch = null;
154
154
 
155
- var revert = Batch.apply(this);
155
+ this.apply();
156
156
 
157
157
  for (const root of root_effects) {
158
158
  this.#traverse_effect_tree(root);
@@ -161,6 +161,10 @@ export class Batch {
161
161
  // if we didn't start any new async work, and no async work
162
162
  // is outstanding from a previous flush, commit
163
163
  if (this.#pending === 0) {
164
+ // TODO we need this because we commit _then_ flush effects...
165
+ // maybe there's a way we can reverse the order?
166
+ var previous_batch_sources = batch_values;
167
+
164
168
  this.#commit();
165
169
 
166
170
  var render_effects = this.#render_effects;
@@ -175,6 +179,7 @@ export class Batch {
175
179
  previous_batch = this;
176
180
  current_batch = null;
177
181
 
182
+ batch_values = previous_batch_sources;
178
183
  flush_queued_effects(render_effects);
179
184
  flush_queued_effects(effects);
180
185
 
@@ -187,7 +192,7 @@ export class Batch {
187
192
  this.#defer_effects(this.#block_effects);
188
193
  }
189
194
 
190
- revert();
195
+ batch_values = null;
191
196
 
192
197
  for (const effect of this.#boundary_async_effects) {
193
198
  update_effect(effect);
@@ -274,6 +279,7 @@ export class Batch {
274
279
  }
275
280
 
276
281
  this.current.set(source, source.v);
282
+ batch_values?.set(source, source.v);
277
283
  }
278
284
 
279
285
  activate() {
@@ -282,6 +288,7 @@ export class Batch {
282
288
 
283
289
  deactivate() {
284
290
  current_batch = null;
291
+ batch_values = null;
285
292
  }
286
293
 
287
294
  flush() {
@@ -335,31 +342,46 @@ export class Batch {
335
342
  continue;
336
343
  }
337
344
 
345
+ /** @type {Source[]} */
346
+ const sources = [];
347
+
338
348
  for (const [source, value] of this.current) {
339
349
  if (batch.current.has(source)) {
340
- if (is_earlier) {
350
+ if (is_earlier && value !== batch.current.get(source)) {
341
351
  // bring the value up to date
342
352
  batch.current.set(source, value);
343
353
  } else {
344
- // later batch has more recent value,
354
+ // same value or later batch has more recent value,
345
355
  // no need to re-run these effects
346
356
  continue;
347
357
  }
348
358
  }
349
359
 
350
- mark_effects(source);
360
+ sources.push(source);
351
361
  }
352
362
 
353
- if (queued_root_effects.length > 0) {
354
- current_batch = batch;
355
- const revert = Batch.apply(batch);
363
+ if (sources.length === 0) {
364
+ continue;
365
+ }
356
366
 
357
- for (const root of queued_root_effects) {
358
- batch.#traverse_effect_tree(root);
367
+ // Re-run async/block effects that depend on distinct values changed in both batches
368
+ const others = [...batch.current.keys()].filter((s) => !this.current.has(s));
369
+ if (others.length > 0) {
370
+ for (const source of sources) {
371
+ mark_effects(source, others);
359
372
  }
360
373
 
361
- queued_root_effects = [];
362
- revert();
374
+ if (queued_root_effects.length > 0) {
375
+ current_batch = batch;
376
+ batch.apply();
377
+
378
+ for (const root of queued_root_effects) {
379
+ batch.#traverse_effect_tree(root);
380
+ }
381
+
382
+ queued_root_effects = [];
383
+ batch.deactivate();
384
+ }
363
385
  }
364
386
  }
365
387
 
@@ -423,49 +445,23 @@ export class Batch {
423
445
  queue_micro_task(task);
424
446
  }
425
447
 
426
- /**
427
- * @param {Batch} current_batch
428
- */
429
- static apply(current_batch) {
430
- if (!async_mode_flag || batches.size === 1) {
431
- return noop;
432
- }
448
+ apply() {
449
+ if (!async_mode_flag || batches.size === 1) return;
433
450
 
434
451
  // if there are multiple batches, we are 'time travelling' —
435
- // we need to undo the changes belonging to any batch
436
- // other than the current one
437
-
438
- /** @type {Map<Source, { v: unknown, wv: number }>} */
439
- var current_values = new Map();
440
- batch_deriveds = new Map();
441
-
442
- for (const [source, current] of current_batch.current) {
443
- current_values.set(source, { v: source.v, wv: source.wv });
444
- source.v = current;
445
- }
452
+ // we need to override values with the ones in this batch...
453
+ batch_values = new Map(this.current);
446
454
 
455
+ // ...and undo changes belonging to other batches
447
456
  for (const batch of batches) {
448
- if (batch === current_batch) continue;
457
+ if (batch === this) continue;
449
458
 
450
459
  for (const [source, previous] of batch.#previous) {
451
- if (!current_values.has(source)) {
452
- current_values.set(source, { v: source.v, wv: source.wv });
453
- source.v = previous;
460
+ if (!batch_values.has(source)) {
461
+ batch_values.set(source, previous);
454
462
  }
455
463
  }
456
464
  }
457
-
458
- return () => {
459
- for (const [source, { v, wv }] of current_values) {
460
- // reset the source to the current value (unless
461
- // it got a newer value as a result of effects running)
462
- if (source.wv <= wv) {
463
- source.v = v;
464
- }
465
- }
466
-
467
- batch_deriveds = null;
468
- };
469
465
  }
470
466
  }
471
467
 
@@ -640,17 +636,19 @@ function flush_queued_effects(effects) {
640
636
 
641
637
  /**
642
638
  * This is similar to `mark_reactions`, but it only marks async/block effects
643
- * so that these can re-run after another batch has been committed
639
+ * depending on `value` and at least one of the other `sources`, so that
640
+ * these effects can re-run after another batch has been committed
644
641
  * @param {Value} value
642
+ * @param {Source[]} sources
645
643
  */
646
- function mark_effects(value) {
644
+ function mark_effects(value, sources) {
647
645
  if (value.reactions !== null) {
648
646
  for (const reaction of value.reactions) {
649
647
  const flags = reaction.f;
650
648
 
651
649
  if ((flags & DERIVED) !== 0) {
652
- mark_effects(/** @type {Derived} */ (reaction));
653
- } else if ((flags & (ASYNC | BLOCK_EFFECT)) !== 0) {
650
+ mark_effects(/** @type {Derived} */ (reaction), sources);
651
+ } else if ((flags & (ASYNC | BLOCK_EFFECT)) !== 0 && depends_on(reaction, sources)) {
654
652
  set_signal_status(reaction, DIRTY);
655
653
  schedule_effect(/** @type {Effect} */ (reaction));
656
654
  }
@@ -658,6 +656,26 @@ function mark_effects(value) {
658
656
  }
659
657
  }
660
658
 
659
+ /**
660
+ * @param {Reaction} reaction
661
+ * @param {Source[]} sources
662
+ */
663
+ function depends_on(reaction, sources) {
664
+ if (reaction.deps !== null) {
665
+ for (const dep of reaction.deps) {
666
+ if (sources.includes(dep)) {
667
+ return true;
668
+ }
669
+
670
+ if ((dep.f & DERIVED) !== 0 && depends_on(/** @type {Derived} */ (dep), sources)) {
671
+ return true;
672
+ }
673
+ }
674
+ }
675
+
676
+ return false;
677
+ }
678
+
661
679
  /**
662
680
  * @param {Effect} signal
663
681
  * @returns {void}
@@ -33,7 +33,7 @@ import { async_mode_flag, tracing_mode_flag } from '../../flags/index.js';
33
33
  import { Boundary } from '../dom/blocks/boundary.js';
34
34
  import { component_context } from '../context.js';
35
35
  import { UNINITIALIZED } from '../../../constants.js';
36
- import { batch_deriveds, current_batch } from './batch.js';
36
+ import { batch_values, current_batch } from './batch.js';
37
37
  import { unset_context } from './async.js';
38
38
  import { deferred } from '../../shared/utils.js';
39
39
 
@@ -126,9 +126,11 @@ export function async_derived(fn, location) {
126
126
  try {
127
127
  // If this code is changed at some point, make sure to still access the then property
128
128
  // of fn() to read any signals it might access, so that we track them as dependencies.
129
- Promise.resolve(fn()).then(d.resolve, d.reject);
129
+ // We call `unset_context` to undo any `save` calls that happen inside `fn()`
130
+ Promise.resolve(fn()).then(d.resolve, d.reject).then(unset_context);
130
131
  } catch (error) {
131
132
  d.reject(error);
133
+ unset_context();
132
134
  }
133
135
 
134
136
  if (DEV) current_async_effect = null;
@@ -142,6 +144,7 @@ export function async_derived(fn, location) {
142
144
  batch.increment();
143
145
 
144
146
  deferreds.get(batch)?.reject(STALE_REACTION);
147
+ deferreds.delete(batch); // delete to ensure correct order in Map iteration below
145
148
  deferreds.set(batch, d);
146
149
  }
147
150
  }
@@ -169,6 +172,13 @@ export function async_derived(fn, location) {
169
172
 
170
173
  internal_set(signal, value);
171
174
 
175
+ // All prior async derived runs are now stale
176
+ for (const [b, d] of deferreds) {
177
+ deferreds.delete(b);
178
+ if (b === batch) break;
179
+ d.reject(STALE_REACTION);
180
+ }
181
+
172
182
  if (DEV && location !== undefined) {
173
183
  recent_async_deriveds.add(signal);
174
184
 
@@ -185,8 +195,6 @@ export function async_derived(fn, location) {
185
195
  boundary.update_pending_count(-1);
186
196
  if (!pending) batch.decrement();
187
197
  }
188
-
189
- unset_context();
190
198
  };
191
199
 
192
200
  d.promise.then(handler, (e) => handler(null, e || 'unknown'));
@@ -336,6 +344,8 @@ export function update_derived(derived) {
336
344
  var value = execute_derived(derived);
337
345
 
338
346
  if (!derived.equals(value)) {
347
+ // TODO can we avoid setting `derived.v` when `batch_values !== null`,
348
+ // without causing the value to be stale later?
339
349
  derived.v = value;
340
350
  derived.wv = increment_write_version();
341
351
  }
@@ -346,8 +356,8 @@ export function update_derived(derived) {
346
356
  return;
347
357
  }
348
358
 
349
- if (batch_deriveds !== null) {
350
- batch_deriveds.set(derived, derived.v);
359
+ if (batch_values !== null) {
360
+ batch_values.set(derived, derived.v);
351
361
  } else {
352
362
  var status =
353
363
  (skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN;
@@ -42,7 +42,7 @@ import {
42
42
  set_dev_stack
43
43
  } from './context.js';
44
44
  import * as w from './warnings.js';
45
- import { Batch, batch_deriveds, flushSync, schedule_effect } from './reactivity/batch.js';
45
+ import { Batch, batch_values, flushSync, schedule_effect } from './reactivity/batch.js';
46
46
  import { handle_error } from './error-handling.js';
47
47
  import { UNINITIALIZED } from '../../constants.js';
48
48
  import { captured_signals } from './legacy.js';
@@ -671,8 +671,8 @@ export function get(signal) {
671
671
  } else if (is_derived) {
672
672
  derived = /** @type {Derived} */ (signal);
673
673
 
674
- if (batch_deriveds?.has(derived)) {
675
- return batch_deriveds.get(derived);
674
+ if (batch_values?.has(derived)) {
675
+ return batch_values.get(derived);
676
676
  }
677
677
 
678
678
  if (is_dirty(derived)) {
@@ -680,6 +680,10 @@ export function get(signal) {
680
680
  }
681
681
  }
682
682
 
683
+ if (batch_values?.has(signal)) {
684
+ return batch_values.get(signal);
685
+ }
686
+
683
687
  if ((signal.f & ERROR_VALUE) !== 0) {
684
688
  throw signal.v;
685
689
  }
@@ -10,6 +10,15 @@ export function set_ssr_context(v) {
10
10
  ssr_context = v;
11
11
  }
12
12
 
13
+ /**
14
+ * @template T
15
+ * @returns {[() => T, (context: T) => T]}
16
+ */
17
+ export function createContext() {
18
+ const key = {};
19
+ return [() => getContext(key), (context) => setContext(key, context)];
20
+ }
21
+
13
22
  /**
14
23
  * @template T
15
24
  * @param {any} key
@@ -51,6 +51,22 @@ export function lifecycle_outside_component(name) {
51
51
  }
52
52
  }
53
53
 
54
+ /**
55
+ * Context was not set in a parent component
56
+ * @returns {never}
57
+ */
58
+ export function missing_context() {
59
+ if (DEV) {
60
+ const error = new Error(`missing_context\nContext was not set in a parent component\nhttps://svelte.dev/e/missing_context`);
61
+
62
+ error.name = 'Svelte error';
63
+
64
+ throw error;
65
+ } else {
66
+ throw new Error(`https://svelte.dev/e/missing_context`);
67
+ }
68
+ }
69
+
54
70
  /**
55
71
  * Attempted to render a snippet without a `{@render}` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change `{snippet}` to `{@render snippet()}`.
56
72
  * @returns {never}
package/src/version.js CHANGED
@@ -4,5 +4,5 @@
4
4
  * The current version, as set in package.json.
5
5
  * @type {string}
6
6
  */
7
- export const VERSION = '5.39.12';
7
+ export const VERSION = '5.40.0';
8
8
  export const PUBLIC_VERSION = '5';
package/types/index.d.ts CHANGED
@@ -448,6 +448,10 @@ declare module 'svelte' {
448
448
  }): Snippet<Params>;
449
449
  /** Anything except a function */
450
450
  type NotFunction<T> = T extends Function ? never : T;
451
+ /**
452
+ * Returns a `[get, set]` pair of functions for working with context in a type-safe way.
453
+ * */
454
+ export function createContext<T>(): [() => T, (context: T) => T];
451
455
  /**
452
456
  * Retrieves the context that belongs to the closest parent component with the specified `key`.
453
457
  * Must be called during component initialisation.
@@ -22,6 +22,7 @@
22
22
  "flushSync",
23
23
  "createRawSnippet",
24
24
  "NotFunction",
25
+ "createContext",
25
26
  "getContext",
26
27
  "setContext",
27
28
  "hasContext",
@@ -260,6 +261,6 @@
260
261
  null,
261
262
  null
262
263
  ],
263
- "mappings": "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",
264
+ "mappings": "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",
264
265
  "ignoreList": []
265
266
  }