svelte 5.39.6 → 5.39.8
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/compiler/index.js +1 -1
- package/package.json +2 -2
- package/src/compiler/phases/2-analyze/visitors/BindDirective.js +8 -4
- package/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +4 -1
- package/src/compiler/phases/3-transform/client/visitors/TitleElement.js +12 -1
- package/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js +48 -15
- package/src/compiler/phases/3-transform/server/visitors/shared/component.js +6 -1
- package/src/compiler/phases/scope.js +6 -0
- package/src/compiler/warnings.js +2 -2
- package/src/internal/client/dom/blocks/await.js +2 -2
- package/src/internal/client/dom/elements/attributes.js +2 -2
- package/src/internal/client/dom/task.js +1 -35
- package/src/internal/client/reactivity/async.js +0 -1
- package/src/internal/client/reactivity/batch.js +140 -103
- package/src/internal/client/reactivity/deriveds.js +24 -22
- package/src/version.js +1 -1
- package/types/index.d.ts +9 -7
- package/types/index.d.ts.map +1 -1
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
import { equals, safe_equals } from './equality.js';
|
|
27
27
|
import * as e from '../errors.js';
|
|
28
28
|
import * as w from '../warnings.js';
|
|
29
|
-
import { async_effect, destroy_effect } from './effects.js';
|
|
29
|
+
import { async_effect, destroy_effect, teardown } from './effects.js';
|
|
30
30
|
import { inspect_effects, internal_set, set_inspect_effects, source } from './sources.js';
|
|
31
31
|
import { get_stack } from '../dev/tracing.js';
|
|
32
32
|
import { async_mode_flag, tracing_mode_flag } from '../../flags/index.js';
|
|
@@ -35,6 +35,7 @@ import { component_context } from '../context.js';
|
|
|
35
35
|
import { UNINITIALIZED } from '../../../constants.js';
|
|
36
36
|
import { batch_deriveds, current_batch } from './batch.js';
|
|
37
37
|
import { unset_context } from './async.js';
|
|
38
|
+
import { deferred } from '../../shared/utils.js';
|
|
38
39
|
|
|
39
40
|
/** @type {Effect | null} */
|
|
40
41
|
export let current_async_effect = null;
|
|
@@ -109,37 +110,40 @@ export function async_derived(fn, location) {
|
|
|
109
110
|
var promise = /** @type {Promise<V>} */ (/** @type {unknown} */ (undefined));
|
|
110
111
|
var signal = source(/** @type {V} */ (UNINITIALIZED));
|
|
111
112
|
|
|
112
|
-
/** @type {Promise<V> | null} */
|
|
113
|
-
var prev = null;
|
|
114
|
-
|
|
115
113
|
// only suspend in async deriveds created on initialisation
|
|
116
114
|
var should_suspend = !active_reaction;
|
|
117
115
|
|
|
116
|
+
/** @type {Map<Batch, ReturnType<typeof deferred<V>>>} */
|
|
117
|
+
var deferreds = new Map();
|
|
118
|
+
|
|
118
119
|
async_effect(() => {
|
|
119
120
|
if (DEV) current_async_effect = active_effect;
|
|
120
121
|
|
|
122
|
+
/** @type {ReturnType<typeof deferred<V>>} */
|
|
123
|
+
var d = deferred();
|
|
124
|
+
promise = d.promise;
|
|
125
|
+
|
|
121
126
|
try {
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
if (prev) Promise.resolve(p).catch(() => {}); // avoid unhandled rejection
|
|
127
|
+
// If this code is changed at some point, make sure to still access the then property
|
|
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);
|
|
126
130
|
} catch (error) {
|
|
127
|
-
|
|
131
|
+
d.reject(error);
|
|
128
132
|
}
|
|
129
133
|
|
|
130
134
|
if (DEV) current_async_effect = null;
|
|
131
135
|
|
|
132
|
-
var r = () => p;
|
|
133
|
-
promise = prev?.then(r, r) ?? Promise.resolve(p);
|
|
134
|
-
|
|
135
|
-
prev = promise;
|
|
136
|
-
|
|
137
136
|
var batch = /** @type {Batch} */ (current_batch);
|
|
138
137
|
var pending = boundary.is_pending();
|
|
139
138
|
|
|
140
139
|
if (should_suspend) {
|
|
141
140
|
boundary.update_pending_count(1);
|
|
142
|
-
if (!pending)
|
|
141
|
+
if (!pending) {
|
|
142
|
+
batch.increment();
|
|
143
|
+
|
|
144
|
+
deferreds.get(batch)?.reject(STALE_REACTION);
|
|
145
|
+
deferreds.set(batch, d);
|
|
146
|
+
}
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
/**
|
|
@@ -147,8 +151,6 @@ export function async_derived(fn, location) {
|
|
|
147
151
|
* @param {unknown} error
|
|
148
152
|
*/
|
|
149
153
|
const handler = (value, error = undefined) => {
|
|
150
|
-
prev = null;
|
|
151
|
-
|
|
152
154
|
current_async_effect = null;
|
|
153
155
|
|
|
154
156
|
if (!pending) batch.activate();
|
|
@@ -187,12 +189,12 @@ export function async_derived(fn, location) {
|
|
|
187
189
|
unset_context();
|
|
188
190
|
};
|
|
189
191
|
|
|
190
|
-
promise.then(handler, (e) => handler(null, e || 'unknown'));
|
|
192
|
+
d.promise.then(handler, (e) => handler(null, e || 'unknown'));
|
|
193
|
+
});
|
|
191
194
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
};
|
|
195
|
+
teardown(() => {
|
|
196
|
+
for (const d of deferreds.values()) {
|
|
197
|
+
d.reject(STALE_REACTION);
|
|
196
198
|
}
|
|
197
199
|
});
|
|
198
200
|
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -3171,13 +3171,15 @@ declare namespace $state {
|
|
|
3171
3171
|
? NonReactive<T>
|
|
3172
3172
|
: T extends { toJSON(): infer R }
|
|
3173
3173
|
? R
|
|
3174
|
-
: T extends
|
|
3175
|
-
?
|
|
3176
|
-
: T extends
|
|
3177
|
-
?
|
|
3178
|
-
|
|
3179
|
-
:
|
|
3180
|
-
|
|
3174
|
+
: T extends readonly unknown[]
|
|
3175
|
+
? { [K in keyof T]: Snapshot<T[K]> }
|
|
3176
|
+
: T extends Array<infer U>
|
|
3177
|
+
? Array<Snapshot<U>>
|
|
3178
|
+
: T extends object
|
|
3179
|
+
? T extends { [key: string]: any }
|
|
3180
|
+
? { [K in keyof T]: Snapshot<T[K]> }
|
|
3181
|
+
: never
|
|
3182
|
+
: never;
|
|
3181
3183
|
|
|
3182
3184
|
/**
|
|
3183
3185
|
* Declares state that is _not_ made deeply reactive — instead of mutating it,
|
package/types/index.d.ts.map
CHANGED
|
@@ -260,6 +260,6 @@
|
|
|
260
260
|
null,
|
|
261
261
|
null
|
|
262
262
|
],
|
|
263
|
-
"mappings": ";;;;;;;kBAUiBA,2BAA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkC/BC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwEhBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBbC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCbC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;aAwBrBC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCfC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BdC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;kBAuBRC,OAAOA;;;;;;;;;;;;;;;;kBAgBPC,eAAeA;;;;;;;;;;;;;;;;aAgBpBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCzPRC,cAAcA;;;;;;;;;;;;iBAsBdC,OAAOA;;;;;;;;iBAwBPC,SAASA;;;;;;;;;;;;;;;;;;;;;;iBA0CTC,qBAAqBA;;;;;;;;;;iBA2CrBC,YAAYA;;;;;;;;;;iBAuBZC,WAAWA;;;;;
|
|
263
|
+
"mappings": "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",
|
|
264
264
|
"ignoreList": []
|
|
265
265
|
}
|