solid-js 2.0.0-beta.1 → 2.0.0-beta.2
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/dist/dev.cjs +131 -79
- package/dist/dev.js +125 -81
- package/dist/server.cjs +71 -75
- package/dist/server.js +64 -76
- package/dist/solid.cjs +129 -65
- package/dist/solid.js +122 -66
- package/package.json +2 -2
- package/types/client/hydration.d.ts +10 -4
- package/types/index.d.ts +1 -1
- package/types/server/index.d.ts +1 -1
- package/types/server/signals.d.ts +2 -2
package/dist/server.cjs
CHANGED
|
@@ -30,25 +30,12 @@ function getObserver() {
|
|
|
30
30
|
}
|
|
31
31
|
function createSignal(first, second, third) {
|
|
32
32
|
if (typeof first === "function") {
|
|
33
|
-
const
|
|
34
|
-
if (ssrSource === "initial" || ssrSource === "client") {
|
|
35
|
-
signals.createOwner();
|
|
36
|
-
let value = second;
|
|
37
|
-
return [() => value, v => {
|
|
38
|
-
return value = typeof v === "function" ? v(value) : v;
|
|
39
|
-
}];
|
|
40
|
-
}
|
|
41
|
-
const memoOpts = third?.deferStream || ssrSource ? {
|
|
33
|
+
const opts = third?.deferStream || third?.ssrSource ? {
|
|
42
34
|
deferStream: third?.deferStream,
|
|
43
|
-
ssrSource
|
|
35
|
+
ssrSource: third?.ssrSource
|
|
44
36
|
} : undefined;
|
|
45
|
-
const memo = createMemo(
|
|
46
|
-
|
|
47
|
-
return [() => value, v => {
|
|
48
|
-
return value = typeof v === "function" ? v(value) : v;
|
|
49
|
-
}];
|
|
50
|
-
}, undefined, memoOpts);
|
|
51
|
-
return [() => memo()[0](), v => memo()[1](v)];
|
|
37
|
+
const memo = createMemo(prev => first(prev), second, opts);
|
|
38
|
+
return [memo, () => undefined];
|
|
52
39
|
}
|
|
53
40
|
return [() => first, v => {
|
|
54
41
|
return first = typeof v === "function" ? v(first) : v;
|
|
@@ -185,42 +172,39 @@ function processResult(comp, result, owner, ctx, deferStream, ssrSource) {
|
|
|
185
172
|
const promise = iter.next().then(v => {
|
|
186
173
|
promise.s = 1;
|
|
187
174
|
promise.v = v.value;
|
|
188
|
-
if (comp.disposed) return;
|
|
175
|
+
if (comp.disposed) return v.value;
|
|
189
176
|
comp.value = v.value;
|
|
190
177
|
comp.error = undefined;
|
|
178
|
+
return v.value;
|
|
191
179
|
}, () => {});
|
|
192
180
|
if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, promise, deferStream);
|
|
193
|
-
|
|
194
|
-
comp.error = new signals.NotReadyError(promise);
|
|
195
|
-
}
|
|
181
|
+
comp.error = new signals.NotReadyError(promise);
|
|
196
182
|
} else {
|
|
197
183
|
const firstNext = iter.next();
|
|
198
184
|
const firstReady = firstNext.then(r => {
|
|
199
185
|
if (comp.disposed) return;
|
|
200
186
|
if (!r.done) {
|
|
201
187
|
comp.value = r.value;
|
|
202
|
-
comp.error = undefined;
|
|
203
188
|
}
|
|
189
|
+
comp.error = undefined;
|
|
190
|
+
return Promise.resolve();
|
|
204
191
|
}, () => {});
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
192
|
+
if (ctx?.async && ctx.serialize && id && !noHydrate) {
|
|
193
|
+
let tappedFirst = true;
|
|
194
|
+
const tapped = {
|
|
195
|
+
[Symbol.asyncIterator]: () => ({
|
|
196
|
+
next() {
|
|
197
|
+
if (tappedFirst) {
|
|
198
|
+
tappedFirst = false;
|
|
199
|
+
return firstNext.then(r => r);
|
|
200
|
+
}
|
|
201
|
+
return iter.next().then(r => r);
|
|
215
202
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
};
|
|
220
|
-
if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, tapped, deferStream);
|
|
221
|
-
if (uninitialized) {
|
|
222
|
-
comp.error = new signals.NotReadyError(firstReady);
|
|
203
|
+
})
|
|
204
|
+
};
|
|
205
|
+
ctx.serialize(id, tapped, deferStream);
|
|
223
206
|
}
|
|
207
|
+
comp.error = new signals.NotReadyError(firstReady);
|
|
224
208
|
}
|
|
225
209
|
return;
|
|
226
210
|
}
|
|
@@ -329,13 +313,14 @@ function createProjection(fn, initialValue = {}, options) {
|
|
|
329
313
|
promise.s = 1;
|
|
330
314
|
if (disposed) {
|
|
331
315
|
promise.v = state;
|
|
332
|
-
return;
|
|
316
|
+
return state;
|
|
333
317
|
}
|
|
334
318
|
if (r.value !== undefined && r.value !== state) {
|
|
335
319
|
Object.assign(state, r.value);
|
|
336
320
|
}
|
|
337
321
|
promise.v = state;
|
|
338
322
|
markReady();
|
|
323
|
+
return state;
|
|
339
324
|
}, () => {});
|
|
340
325
|
if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
|
|
341
326
|
const [pending, markReady] = createPendingProxy(state, promise);
|
|
@@ -351,50 +336,53 @@ function createProjection(fn, initialValue = {}, options) {
|
|
|
351
336
|
}
|
|
352
337
|
}
|
|
353
338
|
markReady(JSON.parse(JSON.stringify(state)));
|
|
339
|
+
return Promise.resolve();
|
|
354
340
|
}, () => {
|
|
355
341
|
markReady();
|
|
356
342
|
});
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
done
|
|
366
|
-
|
|
343
|
+
if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) {
|
|
344
|
+
let tappedFirst = true;
|
|
345
|
+
const tapped = {
|
|
346
|
+
[Symbol.asyncIterator]: () => ({
|
|
347
|
+
next() {
|
|
348
|
+
if (tappedFirst) {
|
|
349
|
+
tappedFirst = false;
|
|
350
|
+
return firstNext.then(r => {
|
|
351
|
+
if (r.done) return {
|
|
352
|
+
done: true,
|
|
353
|
+
value: undefined
|
|
354
|
+
};
|
|
355
|
+
return {
|
|
356
|
+
done: false,
|
|
357
|
+
value: JSON.parse(JSON.stringify(state))
|
|
358
|
+
};
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
return iter.next().then(r => {
|
|
362
|
+
if (disposed) return {
|
|
363
|
+
done: true,
|
|
364
|
+
value: undefined
|
|
367
365
|
};
|
|
366
|
+
const flushed = patches.splice(0);
|
|
367
|
+
if (!r.done) {
|
|
368
|
+
if (r.value !== undefined && r.value !== draft) {
|
|
369
|
+
Object.assign(state, r.value);
|
|
370
|
+
}
|
|
371
|
+
return {
|
|
372
|
+
done: false,
|
|
373
|
+
value: flushed
|
|
374
|
+
};
|
|
375
|
+
}
|
|
368
376
|
return {
|
|
369
|
-
done:
|
|
377
|
+
done: true,
|
|
370
378
|
value: undefined
|
|
371
379
|
};
|
|
372
380
|
});
|
|
373
381
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
};
|
|
379
|
-
const flushed = patches.splice(0);
|
|
380
|
-
if (!r.done) {
|
|
381
|
-
if (r.value !== undefined && r.value !== draft) {
|
|
382
|
-
Object.assign(state, r.value);
|
|
383
|
-
}
|
|
384
|
-
return {
|
|
385
|
-
done: false,
|
|
386
|
-
value: flushed
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
return {
|
|
390
|
-
done: true,
|
|
391
|
-
value: undefined
|
|
392
|
-
};
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
})
|
|
396
|
-
};
|
|
397
|
-
if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, tapped, options?.deferStream);
|
|
382
|
+
})
|
|
383
|
+
};
|
|
384
|
+
ctx.serialize(owner.id, tapped, options?.deferStream);
|
|
385
|
+
}
|
|
398
386
|
const [pending, markReady] = createPendingProxy(state, firstReady);
|
|
399
387
|
return pending;
|
|
400
388
|
}
|
|
@@ -806,6 +794,10 @@ Object.defineProperty(exports, "$PROXY", {
|
|
|
806
794
|
enumerable: true,
|
|
807
795
|
get: function () { return signals.$PROXY; }
|
|
808
796
|
});
|
|
797
|
+
Object.defineProperty(exports, "$REFRESH", {
|
|
798
|
+
enumerable: true,
|
|
799
|
+
get: function () { return signals.$REFRESH; }
|
|
800
|
+
});
|
|
809
801
|
Object.defineProperty(exports, "$TRACK", {
|
|
810
802
|
enumerable: true,
|
|
811
803
|
get: function () { return signals.$TRACK; }
|
|
@@ -858,6 +850,10 @@ Object.defineProperty(exports, "runWithOwner", {
|
|
|
858
850
|
enumerable: true,
|
|
859
851
|
get: function () { return signals.runWithOwner; }
|
|
860
852
|
});
|
|
853
|
+
Object.defineProperty(exports, "setOnUnhandledAsync", {
|
|
854
|
+
enumerable: true,
|
|
855
|
+
get: function () { return signals.setOnUnhandledAsync; }
|
|
856
|
+
});
|
|
861
857
|
Object.defineProperty(exports, "snapshot", {
|
|
862
858
|
enumerable: true,
|
|
863
859
|
get: function () { return signals.snapshot; }
|
package/dist/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getOwner, getContext, getNextChildId, createOwner, runWithOwner, onCleanup, NotReadyError, isWrappable, setContext, flatten, createRoot } from '@solidjs/signals';
|
|
2
|
-
export { $PROXY, $TRACK, NotReadyError, createOwner, createRoot, flatten, getNextChildId, getOwner, isEqual, isWrappable, merge, omit, onCleanup, runWithOwner, snapshot, storePath } from '@solidjs/signals';
|
|
2
|
+
export { $PROXY, $REFRESH, $TRACK, NotReadyError, createOwner, createRoot, flatten, getNextChildId, getOwner, isEqual, isWrappable, merge, omit, onCleanup, runWithOwner, setOnUnhandledAsync, snapshot, storePath } from '@solidjs/signals';
|
|
3
3
|
|
|
4
4
|
const NoHydrateContext = {
|
|
5
5
|
id: Symbol("NoHydrateContext"),
|
|
@@ -29,25 +29,12 @@ function getObserver() {
|
|
|
29
29
|
}
|
|
30
30
|
function createSignal(first, second, third) {
|
|
31
31
|
if (typeof first === "function") {
|
|
32
|
-
const
|
|
33
|
-
if (ssrSource === "initial" || ssrSource === "client") {
|
|
34
|
-
createOwner();
|
|
35
|
-
let value = second;
|
|
36
|
-
return [() => value, v => {
|
|
37
|
-
return value = typeof v === "function" ? v(value) : v;
|
|
38
|
-
}];
|
|
39
|
-
}
|
|
40
|
-
const memoOpts = third?.deferStream || ssrSource ? {
|
|
32
|
+
const opts = third?.deferStream || third?.ssrSource ? {
|
|
41
33
|
deferStream: third?.deferStream,
|
|
42
|
-
ssrSource
|
|
34
|
+
ssrSource: third?.ssrSource
|
|
43
35
|
} : undefined;
|
|
44
|
-
const memo = createMemo(
|
|
45
|
-
|
|
46
|
-
return [() => value, v => {
|
|
47
|
-
return value = typeof v === "function" ? v(value) : v;
|
|
48
|
-
}];
|
|
49
|
-
}, undefined, memoOpts);
|
|
50
|
-
return [() => memo()[0](), v => memo()[1](v)];
|
|
36
|
+
const memo = createMemo(prev => first(prev), second, opts);
|
|
37
|
+
return [memo, () => undefined];
|
|
51
38
|
}
|
|
52
39
|
return [() => first, v => {
|
|
53
40
|
return first = typeof v === "function" ? v(first) : v;
|
|
@@ -184,42 +171,39 @@ function processResult(comp, result, owner, ctx, deferStream, ssrSource) {
|
|
|
184
171
|
const promise = iter.next().then(v => {
|
|
185
172
|
promise.s = 1;
|
|
186
173
|
promise.v = v.value;
|
|
187
|
-
if (comp.disposed) return;
|
|
174
|
+
if (comp.disposed) return v.value;
|
|
188
175
|
comp.value = v.value;
|
|
189
176
|
comp.error = undefined;
|
|
177
|
+
return v.value;
|
|
190
178
|
}, () => {});
|
|
191
179
|
if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, promise, deferStream);
|
|
192
|
-
|
|
193
|
-
comp.error = new NotReadyError(promise);
|
|
194
|
-
}
|
|
180
|
+
comp.error = new NotReadyError(promise);
|
|
195
181
|
} else {
|
|
196
182
|
const firstNext = iter.next();
|
|
197
183
|
const firstReady = firstNext.then(r => {
|
|
198
184
|
if (comp.disposed) return;
|
|
199
185
|
if (!r.done) {
|
|
200
186
|
comp.value = r.value;
|
|
201
|
-
comp.error = undefined;
|
|
202
187
|
}
|
|
188
|
+
comp.error = undefined;
|
|
189
|
+
return Promise.resolve();
|
|
203
190
|
}, () => {});
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
191
|
+
if (ctx?.async && ctx.serialize && id && !noHydrate) {
|
|
192
|
+
let tappedFirst = true;
|
|
193
|
+
const tapped = {
|
|
194
|
+
[Symbol.asyncIterator]: () => ({
|
|
195
|
+
next() {
|
|
196
|
+
if (tappedFirst) {
|
|
197
|
+
tappedFirst = false;
|
|
198
|
+
return firstNext.then(r => r);
|
|
199
|
+
}
|
|
200
|
+
return iter.next().then(r => r);
|
|
214
201
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
};
|
|
219
|
-
if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, tapped, deferStream);
|
|
220
|
-
if (uninitialized) {
|
|
221
|
-
comp.error = new NotReadyError(firstReady);
|
|
202
|
+
})
|
|
203
|
+
};
|
|
204
|
+
ctx.serialize(id, tapped, deferStream);
|
|
222
205
|
}
|
|
206
|
+
comp.error = new NotReadyError(firstReady);
|
|
223
207
|
}
|
|
224
208
|
return;
|
|
225
209
|
}
|
|
@@ -328,13 +312,14 @@ function createProjection(fn, initialValue = {}, options) {
|
|
|
328
312
|
promise.s = 1;
|
|
329
313
|
if (disposed) {
|
|
330
314
|
promise.v = state;
|
|
331
|
-
return;
|
|
315
|
+
return state;
|
|
332
316
|
}
|
|
333
317
|
if (r.value !== undefined && r.value !== state) {
|
|
334
318
|
Object.assign(state, r.value);
|
|
335
319
|
}
|
|
336
320
|
promise.v = state;
|
|
337
321
|
markReady();
|
|
322
|
+
return state;
|
|
338
323
|
}, () => {});
|
|
339
324
|
if (ctx?.async && !getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
|
|
340
325
|
const [pending, markReady] = createPendingProxy(state, promise);
|
|
@@ -350,50 +335,53 @@ function createProjection(fn, initialValue = {}, options) {
|
|
|
350
335
|
}
|
|
351
336
|
}
|
|
352
337
|
markReady(JSON.parse(JSON.stringify(state)));
|
|
338
|
+
return Promise.resolve();
|
|
353
339
|
}, () => {
|
|
354
340
|
markReady();
|
|
355
341
|
});
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
done
|
|
365
|
-
|
|
342
|
+
if (ctx?.async && !getContext(NoHydrateContext) && owner.id) {
|
|
343
|
+
let tappedFirst = true;
|
|
344
|
+
const tapped = {
|
|
345
|
+
[Symbol.asyncIterator]: () => ({
|
|
346
|
+
next() {
|
|
347
|
+
if (tappedFirst) {
|
|
348
|
+
tappedFirst = false;
|
|
349
|
+
return firstNext.then(r => {
|
|
350
|
+
if (r.done) return {
|
|
351
|
+
done: true,
|
|
352
|
+
value: undefined
|
|
353
|
+
};
|
|
354
|
+
return {
|
|
355
|
+
done: false,
|
|
356
|
+
value: JSON.parse(JSON.stringify(state))
|
|
357
|
+
};
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
return iter.next().then(r => {
|
|
361
|
+
if (disposed) return {
|
|
362
|
+
done: true,
|
|
363
|
+
value: undefined
|
|
366
364
|
};
|
|
365
|
+
const flushed = patches.splice(0);
|
|
366
|
+
if (!r.done) {
|
|
367
|
+
if (r.value !== undefined && r.value !== draft) {
|
|
368
|
+
Object.assign(state, r.value);
|
|
369
|
+
}
|
|
370
|
+
return {
|
|
371
|
+
done: false,
|
|
372
|
+
value: flushed
|
|
373
|
+
};
|
|
374
|
+
}
|
|
367
375
|
return {
|
|
368
|
-
done:
|
|
376
|
+
done: true,
|
|
369
377
|
value: undefined
|
|
370
378
|
};
|
|
371
379
|
});
|
|
372
380
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
};
|
|
378
|
-
const flushed = patches.splice(0);
|
|
379
|
-
if (!r.done) {
|
|
380
|
-
if (r.value !== undefined && r.value !== draft) {
|
|
381
|
-
Object.assign(state, r.value);
|
|
382
|
-
}
|
|
383
|
-
return {
|
|
384
|
-
done: false,
|
|
385
|
-
value: flushed
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
return {
|
|
389
|
-
done: true,
|
|
390
|
-
value: undefined
|
|
391
|
-
};
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
})
|
|
395
|
-
};
|
|
396
|
-
if (ctx?.async && !getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, tapped, options?.deferStream);
|
|
381
|
+
})
|
|
382
|
+
};
|
|
383
|
+
ctx.serialize(owner.id, tapped, options?.deferStream);
|
|
384
|
+
}
|
|
397
385
|
const [pending, markReady] = createPendingProxy(state, firstReady);
|
|
398
386
|
return pending;
|
|
399
387
|
}
|
package/dist/solid.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var signals = require('@solidjs/signals');
|
|
4
4
|
|
|
5
|
+
const IS_DEV = false;
|
|
5
6
|
const $DEVCOMP = Symbol(0);
|
|
6
7
|
function createContext(defaultValue, options) {
|
|
7
8
|
const id = Symbol(options && options.name || "");
|
|
@@ -132,11 +133,41 @@ function subFetch(fn, prev) {
|
|
|
132
133
|
Promise = ogPromise;
|
|
133
134
|
}
|
|
134
135
|
}
|
|
135
|
-
function
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
function syncThenable(value) {
|
|
137
|
+
return {
|
|
138
|
+
then(fn) {
|
|
139
|
+
fn(value);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function normalizeIterator(it) {
|
|
144
|
+
let first = true;
|
|
145
|
+
let buffered = null;
|
|
146
|
+
return {
|
|
147
|
+
next() {
|
|
148
|
+
if (first) {
|
|
149
|
+
first = false;
|
|
150
|
+
const r = it.next();
|
|
151
|
+
return r && typeof r.then === "function" ? r : syncThenable(r);
|
|
152
|
+
}
|
|
153
|
+
if (buffered) {
|
|
154
|
+
const b = buffered;
|
|
155
|
+
buffered = null;
|
|
156
|
+
return b;
|
|
157
|
+
}
|
|
158
|
+
let latest = it.next();
|
|
159
|
+
if (latest && typeof latest.then === "function") return latest;
|
|
160
|
+
while (!latest.done) {
|
|
161
|
+
const peek = it.next();
|
|
162
|
+
if (peek && typeof peek.then === "function") {
|
|
163
|
+
buffered = peek;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
latest = peek;
|
|
167
|
+
}
|
|
168
|
+
return Promise.resolve(latest);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
140
171
|
}
|
|
141
172
|
function applyPatches(target, patches) {
|
|
142
173
|
for (const patch of patches) {
|
|
@@ -153,24 +184,6 @@ function applyPatches(target, patches) {
|
|
|
153
184
|
}
|
|
154
185
|
}
|
|
155
186
|
}
|
|
156
|
-
function scheduleIteratorConsumption(iter, apply) {
|
|
157
|
-
const consume = () => {
|
|
158
|
-
while (true) {
|
|
159
|
-
const n = iter.next();
|
|
160
|
-
if (n instanceof Promise) {
|
|
161
|
-
n.then(r => {
|
|
162
|
-
if (r.done) return;
|
|
163
|
-
apply(r.value);
|
|
164
|
-
consume();
|
|
165
|
-
});
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
if (n.done) break;
|
|
169
|
-
apply(n.value);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
consume();
|
|
173
|
-
}
|
|
174
187
|
function isAsyncIterable(v) {
|
|
175
188
|
return v != null && typeof v[Symbol.asyncIterator] === "function";
|
|
176
189
|
}
|
|
@@ -178,34 +191,85 @@ function hydrateSignalFromAsyncIterable(coreFn, compute, value, options) {
|
|
|
178
191
|
const parent = signals.getOwner();
|
|
179
192
|
const expectedId = signals.peekNextChildId(parent);
|
|
180
193
|
if (!sharedConfig.has(expectedId)) return null;
|
|
181
|
-
const
|
|
182
|
-
if (!isAsyncIterable(
|
|
183
|
-
const
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return result;
|
|
194
|
+
const loaded = sharedConfig.load(expectedId);
|
|
195
|
+
if (!isAsyncIterable(loaded)) return null;
|
|
196
|
+
const it = normalizeIterator(loaded[Symbol.asyncIterator]());
|
|
197
|
+
const iterable = {
|
|
198
|
+
[Symbol.asyncIterator]() {
|
|
199
|
+
return it;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
return coreFn(() => iterable, value, options);
|
|
191
203
|
}
|
|
192
204
|
function hydrateStoreFromAsyncIterable(coreFn, initialValue, options) {
|
|
193
205
|
const parent = signals.getOwner();
|
|
194
206
|
const expectedId = signals.peekNextChildId(parent);
|
|
195
207
|
if (!sharedConfig.has(expectedId)) return null;
|
|
196
|
-
const
|
|
197
|
-
if (!isAsyncIterable(
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
208
|
+
const loaded = sharedConfig.load(expectedId);
|
|
209
|
+
if (!isAsyncIterable(loaded)) return null;
|
|
210
|
+
const srcIt = loaded[Symbol.asyncIterator]();
|
|
211
|
+
let isFirst = true;
|
|
212
|
+
let buffered = null;
|
|
213
|
+
return coreFn(draft => {
|
|
214
|
+
const process = res => {
|
|
215
|
+
if (res.done) return {
|
|
216
|
+
done: true,
|
|
217
|
+
value: undefined
|
|
218
|
+
};
|
|
219
|
+
if (isFirst) {
|
|
220
|
+
isFirst = false;
|
|
221
|
+
if (Array.isArray(res.value)) {
|
|
222
|
+
for (let i = 0; i < res.value.length; i++) draft[i] = res.value[i];
|
|
223
|
+
draft.length = res.value.length;
|
|
224
|
+
} else {
|
|
225
|
+
Object.assign(draft, res.value);
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
applyPatches(draft, res.value);
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
done: false,
|
|
232
|
+
value: undefined
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
return {
|
|
236
|
+
[Symbol.asyncIterator]() {
|
|
237
|
+
return {
|
|
238
|
+
next() {
|
|
239
|
+
if (isFirst) {
|
|
240
|
+
const r = srcIt.next();
|
|
241
|
+
return r && typeof r.then === "function" ? r.then(process) : syncThenable(process(r));
|
|
242
|
+
}
|
|
243
|
+
if (buffered) {
|
|
244
|
+
const b = buffered;
|
|
245
|
+
buffered = null;
|
|
246
|
+
return b.then(process);
|
|
247
|
+
}
|
|
248
|
+
let r = srcIt.next();
|
|
249
|
+
if (r && typeof r.then === "function") {
|
|
250
|
+
return r.then(process);
|
|
251
|
+
}
|
|
252
|
+
let result = process(r);
|
|
253
|
+
while (!r.done) {
|
|
254
|
+
const peek = srcIt.next();
|
|
255
|
+
if (peek && typeof peek.then === "function") {
|
|
256
|
+
buffered = peek;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
r = peek;
|
|
260
|
+
if (!r.done) result = process(r);
|
|
261
|
+
}
|
|
262
|
+
return Promise.resolve(result);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
}, initialValue, options);
|
|
206
268
|
}
|
|
207
269
|
function hydratedCreateMemo(compute, value, options) {
|
|
208
|
-
if (!sharedConfig.hydrating)
|
|
270
|
+
if (!sharedConfig.hydrating) {
|
|
271
|
+
return signals.createMemo(compute, value, options);
|
|
272
|
+
}
|
|
209
273
|
markTopLevelSnapshotScope();
|
|
210
274
|
const ssrSource = options?.ssrSource;
|
|
211
275
|
if (ssrSource === "client") {
|
|
@@ -357,14 +421,16 @@ function hydratedCreateOptimisticStore(first, second, third) {
|
|
|
357
421
|
return signals.createOptimisticStore(wrapStoreFn(first, ssrSource), second, third);
|
|
358
422
|
}
|
|
359
423
|
function hydratedCreateProjection(fn, initialValue, options) {
|
|
360
|
-
if (!sharedConfig.hydrating)
|
|
424
|
+
if (!sharedConfig.hydrating) {
|
|
425
|
+
return signals.createProjection(fn, initialValue, options);
|
|
426
|
+
}
|
|
361
427
|
markTopLevelSnapshotScope();
|
|
362
428
|
const ssrSource = options?.ssrSource;
|
|
363
429
|
if (ssrSource === "client" || ssrSource === "initial") {
|
|
364
430
|
return signals.createProjection(draft => draft, initialValue, options);
|
|
365
431
|
}
|
|
366
|
-
const aiResult = hydrateStoreFromAsyncIterable(signals.
|
|
367
|
-
if (aiResult !== null) return aiResult
|
|
432
|
+
const aiResult = hydrateStoreFromAsyncIterable(signals.createProjection, initialValue, options);
|
|
433
|
+
if (aiResult !== null) return aiResult;
|
|
368
434
|
return signals.createProjection(wrapStoreFn(fn, ssrSource), initialValue, options);
|
|
369
435
|
}
|
|
370
436
|
function hydratedEffect(coreFn, compute, effectFn, value, options) {
|
|
@@ -637,15 +703,10 @@ function Show(props) {
|
|
|
637
703
|
if (c) {
|
|
638
704
|
const child = props.children;
|
|
639
705
|
const fn = typeof child === "function" && child.length > 0;
|
|
640
|
-
return fn ? signals.untrack(() => {
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
return conditionValue();
|
|
645
|
-
});
|
|
646
|
-
} finally {
|
|
647
|
-
}
|
|
648
|
-
}) : child;
|
|
706
|
+
return fn ? signals.untrack(() => child(() => {
|
|
707
|
+
if (!signals.untrack(condition)) throw narrowedError("Show");
|
|
708
|
+
return conditionValue();
|
|
709
|
+
}), IS_DEV) : child;
|
|
649
710
|
}
|
|
650
711
|
return props.fallback;
|
|
651
712
|
}, undefined, undefined);
|
|
@@ -673,15 +734,10 @@ function Switch(props) {
|
|
|
673
734
|
const [index, conditionValue, mp] = sel;
|
|
674
735
|
const child = mp.children;
|
|
675
736
|
const fn = typeof child === "function" && child.length > 0;
|
|
676
|
-
return fn ? signals.untrack(() => {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
return conditionValue();
|
|
681
|
-
});
|
|
682
|
-
} finally {
|
|
683
|
-
}
|
|
684
|
-
}) : child;
|
|
737
|
+
return fn ? signals.untrack(() => child(() => {
|
|
738
|
+
if (signals.untrack(switchFunc)()?.[0] !== index) throw narrowedError("Match");
|
|
739
|
+
return conditionValue();
|
|
740
|
+
}), IS_DEV) : child;
|
|
685
741
|
}, undefined, undefined);
|
|
686
742
|
}
|
|
687
743
|
function Match(props) {
|
|
@@ -702,6 +758,10 @@ Object.defineProperty(exports, "$PROXY", {
|
|
|
702
758
|
enumerable: true,
|
|
703
759
|
get: function () { return signals.$PROXY; }
|
|
704
760
|
});
|
|
761
|
+
Object.defineProperty(exports, "$REFRESH", {
|
|
762
|
+
enumerable: true,
|
|
763
|
+
get: function () { return signals.$REFRESH; }
|
|
764
|
+
});
|
|
705
765
|
Object.defineProperty(exports, "$TRACK", {
|
|
706
766
|
enumerable: true,
|
|
707
767
|
get: function () { return signals.$TRACK; }
|
|
@@ -814,6 +874,10 @@ Object.defineProperty(exports, "runWithOwner", {
|
|
|
814
874
|
enumerable: true,
|
|
815
875
|
get: function () { return signals.runWithOwner; }
|
|
816
876
|
});
|
|
877
|
+
Object.defineProperty(exports, "setOnUnhandledAsync", {
|
|
878
|
+
enumerable: true,
|
|
879
|
+
get: function () { return signals.setOnUnhandledAsync; }
|
|
880
|
+
});
|
|
817
881
|
Object.defineProperty(exports, "snapshot", {
|
|
818
882
|
enumerable: true,
|
|
819
883
|
get: function () { return signals.snapshot; }
|