solid-js 2.0.0-experimental.13 → 2.0.0-experimental.15
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 +506 -78
- package/dist/dev.js +509 -64
- package/dist/server.cjs +827 -0
- package/dist/server.js +732 -0
- package/dist/solid.cjs +492 -77
- package/dist/solid.js +495 -63
- package/package.json +4 -4
- package/types/client/component.d.ts +1 -2
- package/types/client/flow.d.ts +1 -5
- package/types/client/hydration.d.ts +36 -0
- package/types/index.d.ts +3 -4
- package/types/server/component.d.ts +66 -0
- package/types/server/core.d.ts +43 -0
- package/types/server/flow.d.ts +60 -0
- package/types/server/hydration.d.ts +21 -0
- package/types/server/index.d.ts +12 -1
- package/types/server/shared.d.ts +45 -0
- package/types/server/signals.d.ts +60 -0
- package/types/utilities.d.ts +0 -36
package/dist/server.cjs
CHANGED
|
@@ -1,2 +1,829 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var signals = require('@solidjs/signals');
|
|
4
|
+
|
|
5
|
+
const sharedConfig = {
|
|
6
|
+
getNextContextId() {
|
|
7
|
+
const o = signals.getOwner();
|
|
8
|
+
if (!o) throw new Error(`getNextContextId cannot be used under non-hydrating context`);
|
|
9
|
+
return signals.getNextChildId(o);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
let Observer = null;
|
|
14
|
+
function runWithObserver(comp, fn) {
|
|
15
|
+
const prev = Observer;
|
|
16
|
+
Observer = comp;
|
|
17
|
+
try {
|
|
18
|
+
return fn();
|
|
19
|
+
} finally {
|
|
20
|
+
Observer = prev;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function getObserver() {
|
|
24
|
+
return Observer;
|
|
25
|
+
}
|
|
26
|
+
function createSignal(first, second, third) {
|
|
27
|
+
if (typeof first === "function") {
|
|
28
|
+
const ssrSource = third?.ssrSource;
|
|
29
|
+
if (ssrSource === "initial" || ssrSource === "client") {
|
|
30
|
+
signals.createOwner();
|
|
31
|
+
let value = second;
|
|
32
|
+
return [() => value, v => {
|
|
33
|
+
return value = typeof v === "function" ? v(value) : v;
|
|
34
|
+
}];
|
|
35
|
+
}
|
|
36
|
+
const memoOpts = third?.deferStream || ssrSource ? {
|
|
37
|
+
deferStream: third?.deferStream,
|
|
38
|
+
ssrSource
|
|
39
|
+
} : undefined;
|
|
40
|
+
const memo = createMemo(p => {
|
|
41
|
+
let value = first(p ? p[0]() : second);
|
|
42
|
+
return [() => value, v => {
|
|
43
|
+
return value = typeof v === "function" ? v(value) : v;
|
|
44
|
+
}];
|
|
45
|
+
}, undefined, memoOpts);
|
|
46
|
+
return [() => memo()[0](), v => memo()[1](v)];
|
|
47
|
+
}
|
|
48
|
+
return [() => first, v => {
|
|
49
|
+
return first = typeof v === "function" ? v(first) : v;
|
|
50
|
+
}];
|
|
51
|
+
}
|
|
52
|
+
function createMemo(compute, value, options) {
|
|
53
|
+
const ctx = sharedConfig.context;
|
|
54
|
+
const owner = signals.createOwner();
|
|
55
|
+
const comp = {
|
|
56
|
+
owner,
|
|
57
|
+
value: value,
|
|
58
|
+
compute: compute,
|
|
59
|
+
error: undefined,
|
|
60
|
+
computed: false,
|
|
61
|
+
disposed: false
|
|
62
|
+
};
|
|
63
|
+
signals.runWithOwner(owner, () => signals.onCleanup(() => {
|
|
64
|
+
comp.disposed = true;
|
|
65
|
+
}));
|
|
66
|
+
function update() {
|
|
67
|
+
if (comp.disposed) return;
|
|
68
|
+
try {
|
|
69
|
+
comp.error = undefined;
|
|
70
|
+
const result = signals.runWithOwner(owner, () => runWithObserver(comp, () => comp.compute(comp.value)));
|
|
71
|
+
comp.computed = true;
|
|
72
|
+
processResult(comp, result, owner, ctx, options?.deferStream, options?.ssrSource);
|
|
73
|
+
} catch (err) {
|
|
74
|
+
if (err instanceof signals.NotReadyError) {
|
|
75
|
+
err.source?.then(() => update());
|
|
76
|
+
}
|
|
77
|
+
comp.error = err;
|
|
78
|
+
comp.computed = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const ssrSource = options?.ssrSource;
|
|
82
|
+
if (ssrSource === "initial" || ssrSource === "client") {
|
|
83
|
+
comp.computed = true;
|
|
84
|
+
} else if (!options?.lazy) {
|
|
85
|
+
update();
|
|
86
|
+
}
|
|
87
|
+
return () => {
|
|
88
|
+
if (!comp.computed) {
|
|
89
|
+
update();
|
|
90
|
+
}
|
|
91
|
+
if (comp.error) {
|
|
92
|
+
throw comp.error;
|
|
93
|
+
}
|
|
94
|
+
return comp.value;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function createDeepProxy(target, patches, basePath = []) {
|
|
98
|
+
const childProxies = new Map();
|
|
99
|
+
const handler = {
|
|
100
|
+
get(obj, key, receiver) {
|
|
101
|
+
if (Array.isArray(obj)) {
|
|
102
|
+
if (key === "shift") {
|
|
103
|
+
return function () {
|
|
104
|
+
if (obj.length === 0) return undefined;
|
|
105
|
+
const removed = obj[0];
|
|
106
|
+
Array.prototype.shift.call(obj);
|
|
107
|
+
childProxies.clear();
|
|
108
|
+
patches.push([[...basePath, 0]]);
|
|
109
|
+
return removed;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (key === "unshift") {
|
|
113
|
+
return function (...items) {
|
|
114
|
+
const result = Array.prototype.unshift.apply(obj, items);
|
|
115
|
+
childProxies.clear();
|
|
116
|
+
for (let i = 0; i < items.length; i++) {
|
|
117
|
+
patches.push([[...basePath, i], items[i], 1]);
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (key === "splice") {
|
|
123
|
+
return function (start, deleteCount, ...items) {
|
|
124
|
+
const len = obj.length;
|
|
125
|
+
const s = start < 0 ? Math.max(len + start, 0) : Math.min(start, len);
|
|
126
|
+
const d = deleteCount === undefined ? len - s : Math.min(Math.max(deleteCount, 0), len - s);
|
|
127
|
+
const removed = Array.prototype.splice.apply(obj, [s, d, ...items]);
|
|
128
|
+
childProxies.clear();
|
|
129
|
+
for (let i = 0; i < d; i++) patches.push([[...basePath, s]]);
|
|
130
|
+
for (let i = 0; i < items.length; i++) patches.push([[...basePath, s + i], items[i], 1]);
|
|
131
|
+
return removed;
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const value = Reflect.get(obj, key, receiver);
|
|
136
|
+
if (value !== null && typeof value === "object" && typeof key !== "symbol") {
|
|
137
|
+
if (!childProxies.has(key)) {
|
|
138
|
+
childProxies.set(key, createDeepProxy(value, patches, [...basePath, key]));
|
|
139
|
+
}
|
|
140
|
+
return childProxies.get(key);
|
|
141
|
+
}
|
|
142
|
+
return value;
|
|
143
|
+
},
|
|
144
|
+
set(obj, key, value) {
|
|
145
|
+
childProxies.delete(key);
|
|
146
|
+
patches.push([[...basePath, key], value]);
|
|
147
|
+
return Reflect.set(obj, key, value);
|
|
148
|
+
},
|
|
149
|
+
deleteProperty(obj, key) {
|
|
150
|
+
childProxies.delete(key);
|
|
151
|
+
patches.push([[...basePath, key]]);
|
|
152
|
+
return Reflect.deleteProperty(obj, key);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
return new Proxy(target, handler);
|
|
156
|
+
}
|
|
157
|
+
function processResult(comp, result, owner, ctx, deferStream, ssrSource) {
|
|
158
|
+
if (comp.disposed) return;
|
|
159
|
+
const id = owner.id;
|
|
160
|
+
const uninitialized = comp.value === undefined;
|
|
161
|
+
if (result instanceof Promise) {
|
|
162
|
+
result.then(v => {
|
|
163
|
+
result.s = 1;
|
|
164
|
+
result.v = v;
|
|
165
|
+
if (comp.disposed) return;
|
|
166
|
+
comp.value = v;
|
|
167
|
+
comp.error = undefined;
|
|
168
|
+
}, () => {});
|
|
169
|
+
if (ctx?.async && ctx.serialize && id) ctx.serialize(id, result, deferStream);
|
|
170
|
+
if (uninitialized) {
|
|
171
|
+
comp.error = new signals.NotReadyError(result);
|
|
172
|
+
}
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const iterator = result?.[Symbol.asyncIterator];
|
|
176
|
+
if (typeof iterator === "function") {
|
|
177
|
+
const iter = iterator.call(result);
|
|
178
|
+
if (ssrSource === "hybrid") {
|
|
179
|
+
const promise = iter.next().then(v => {
|
|
180
|
+
promise.s = 1;
|
|
181
|
+
promise.v = v.value;
|
|
182
|
+
if (comp.disposed) return;
|
|
183
|
+
comp.value = v.value;
|
|
184
|
+
comp.error = undefined;
|
|
185
|
+
}, () => {});
|
|
186
|
+
if (ctx?.async && ctx.serialize && id) ctx.serialize(id, promise, deferStream);
|
|
187
|
+
if (uninitialized) {
|
|
188
|
+
comp.error = new signals.NotReadyError(promise);
|
|
189
|
+
}
|
|
190
|
+
} else {
|
|
191
|
+
const firstNext = iter.next();
|
|
192
|
+
const firstReady = firstNext.then(r => {
|
|
193
|
+
if (comp.disposed) return;
|
|
194
|
+
if (!r.done) {
|
|
195
|
+
comp.value = r.value;
|
|
196
|
+
comp.error = undefined;
|
|
197
|
+
}
|
|
198
|
+
}, () => {});
|
|
199
|
+
let servedFirst = false;
|
|
200
|
+
const tapped = {
|
|
201
|
+
[Symbol.asyncIterator]: () => ({
|
|
202
|
+
next() {
|
|
203
|
+
if (!servedFirst) {
|
|
204
|
+
servedFirst = true;
|
|
205
|
+
return firstNext.then(r => {
|
|
206
|
+
if (!r.done && !comp.disposed) comp.value = r.value;
|
|
207
|
+
return r;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return iter.next().then(r => r);
|
|
211
|
+
}
|
|
212
|
+
})
|
|
213
|
+
};
|
|
214
|
+
if (ctx?.async && ctx.serialize && id) ctx.serialize(id, tapped, deferStream);
|
|
215
|
+
if (uninitialized) {
|
|
216
|
+
comp.error = new signals.NotReadyError(firstReady);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
comp.value = result;
|
|
222
|
+
}
|
|
223
|
+
function createEffect(compute, effect, value, options) {
|
|
224
|
+
const o = signals.getOwner();
|
|
225
|
+
if (o?.id != null) signals.getNextChildId(o);
|
|
226
|
+
}
|
|
227
|
+
function createRenderEffect(compute, effectFn, value, options) {
|
|
228
|
+
const owner = signals.createOwner();
|
|
229
|
+
try {
|
|
230
|
+
const result = signals.runWithOwner(owner, () => runWithObserver({
|
|
231
|
+
owner,
|
|
232
|
+
value: value,
|
|
233
|
+
compute: compute,
|
|
234
|
+
error: undefined,
|
|
235
|
+
computed: true,
|
|
236
|
+
disposed: false
|
|
237
|
+
}, () => compute(value)));
|
|
238
|
+
effectFn(result, value);
|
|
239
|
+
} catch (err) {
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
function createTrackedEffect(compute, options) {
|
|
243
|
+
const o = signals.getOwner();
|
|
244
|
+
if (o?.id != null) signals.getNextChildId(o);
|
|
245
|
+
}
|
|
246
|
+
function createReaction(effectFn, options) {
|
|
247
|
+
return tracking => {
|
|
248
|
+
tracking();
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
function createOptimistic(first, second, third) {
|
|
252
|
+
return createSignal(first, second, third);
|
|
253
|
+
}
|
|
254
|
+
function setProperty(state, property, value) {
|
|
255
|
+
if (state[property] === value) return;
|
|
256
|
+
if (value === undefined) {
|
|
257
|
+
delete state[property];
|
|
258
|
+
} else state[property] = value;
|
|
259
|
+
}
|
|
260
|
+
function createStore(first, second) {
|
|
261
|
+
if (typeof first === "function") {
|
|
262
|
+
const store = createProjection(first, second ?? {});
|
|
263
|
+
return [store, fn => fn(store)];
|
|
264
|
+
}
|
|
265
|
+
const state = first;
|
|
266
|
+
return [state, fn => fn(state)];
|
|
267
|
+
}
|
|
268
|
+
const createOptimisticStore = createStore;
|
|
269
|
+
function createPendingProxy(state, source) {
|
|
270
|
+
let pending = true;
|
|
271
|
+
let readTarget = state;
|
|
272
|
+
const proxy = new Proxy(state, {
|
|
273
|
+
get(obj, key, receiver) {
|
|
274
|
+
if (pending && typeof key !== "symbol") {
|
|
275
|
+
throw new signals.NotReadyError(source);
|
|
276
|
+
}
|
|
277
|
+
return Reflect.get(readTarget, key);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
return [proxy, frozen => {
|
|
281
|
+
if (frozen) readTarget = frozen;
|
|
282
|
+
pending = false;
|
|
283
|
+
}];
|
|
284
|
+
}
|
|
285
|
+
function createProjection(fn, initialValue = {}, options) {
|
|
286
|
+
const ctx = sharedConfig.context;
|
|
287
|
+
const owner = signals.createOwner();
|
|
288
|
+
const [state] = createStore(initialValue);
|
|
289
|
+
if (options?.ssrSource === "initial" || options?.ssrSource === "client") {
|
|
290
|
+
return state;
|
|
291
|
+
}
|
|
292
|
+
let disposed = false;
|
|
293
|
+
signals.runWithOwner(owner, () => signals.onCleanup(() => {
|
|
294
|
+
disposed = true;
|
|
295
|
+
}));
|
|
296
|
+
const ssrSource = options?.ssrSource;
|
|
297
|
+
const useProxy = ssrSource !== "hybrid";
|
|
298
|
+
const patches = [];
|
|
299
|
+
const draft = useProxy ? createDeepProxy(state, patches) : state;
|
|
300
|
+
const result = signals.runWithOwner(owner, () => fn(draft));
|
|
301
|
+
const iteratorFn = result?.[Symbol.asyncIterator];
|
|
302
|
+
if (typeof iteratorFn === "function") {
|
|
303
|
+
const iter = iteratorFn.call(result);
|
|
304
|
+
if (ssrSource === "hybrid") {
|
|
305
|
+
const promise = iter.next().then(r => {
|
|
306
|
+
promise.s = 1;
|
|
307
|
+
if (disposed) {
|
|
308
|
+
promise.v = state;
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
if (r.value !== undefined && r.value !== state) {
|
|
312
|
+
Object.assign(state, r.value);
|
|
313
|
+
}
|
|
314
|
+
promise.v = state;
|
|
315
|
+
markReady();
|
|
316
|
+
}, () => {});
|
|
317
|
+
if (ctx?.async && !ctx.noHydrate && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
|
|
318
|
+
const [pending, markReady] = createPendingProxy(state, promise);
|
|
319
|
+
return pending;
|
|
320
|
+
} else {
|
|
321
|
+
const firstNext = iter.next();
|
|
322
|
+
const firstReady = firstNext.then(r => {
|
|
323
|
+
if (disposed) return;
|
|
324
|
+
patches.length = 0;
|
|
325
|
+
if (!r.done) {
|
|
326
|
+
if (r.value !== undefined && r.value !== draft) {
|
|
327
|
+
Object.assign(state, r.value);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
markReady(JSON.parse(JSON.stringify(state)));
|
|
331
|
+
}, () => {
|
|
332
|
+
markReady();
|
|
333
|
+
});
|
|
334
|
+
let servedFirst = false;
|
|
335
|
+
const tapped = {
|
|
336
|
+
[Symbol.asyncIterator]: () => ({
|
|
337
|
+
next() {
|
|
338
|
+
if (!servedFirst) {
|
|
339
|
+
servedFirst = true;
|
|
340
|
+
return firstNext.then(r => {
|
|
341
|
+
if (!r.done && !disposed) return {
|
|
342
|
+
done: false,
|
|
343
|
+
value: state
|
|
344
|
+
};
|
|
345
|
+
return {
|
|
346
|
+
done: r.done,
|
|
347
|
+
value: undefined
|
|
348
|
+
};
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
return iter.next().then(r => {
|
|
352
|
+
if (disposed) return {
|
|
353
|
+
done: true,
|
|
354
|
+
value: undefined
|
|
355
|
+
};
|
|
356
|
+
const flushed = patches.splice(0);
|
|
357
|
+
if (!r.done) {
|
|
358
|
+
if (r.value !== undefined && r.value !== draft) {
|
|
359
|
+
Object.assign(state, r.value);
|
|
360
|
+
}
|
|
361
|
+
return {
|
|
362
|
+
done: false,
|
|
363
|
+
value: flushed
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
done: true,
|
|
368
|
+
value: undefined
|
|
369
|
+
};
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
})
|
|
373
|
+
};
|
|
374
|
+
if (ctx?.async && !ctx.noHydrate && owner.id) ctx.serialize(owner.id, tapped, options?.deferStream);
|
|
375
|
+
const [pending, markReady] = createPendingProxy(state, firstReady);
|
|
376
|
+
return pending;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (result instanceof Promise) {
|
|
380
|
+
const promise = result.then(v => {
|
|
381
|
+
promise.s = 1;
|
|
382
|
+
if (disposed) {
|
|
383
|
+
promise.v = state;
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
if (v !== undefined && v !== state) {
|
|
387
|
+
Object.assign(state, v);
|
|
388
|
+
}
|
|
389
|
+
promise.v = state;
|
|
390
|
+
markReady();
|
|
391
|
+
}, () => {});
|
|
392
|
+
if (ctx?.async && !ctx.noHydrate && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
|
|
393
|
+
const [pending, markReady] = createPendingProxy(state, promise);
|
|
394
|
+
return pending;
|
|
395
|
+
}
|
|
396
|
+
if (result !== undefined && result !== state && result !== draft) {
|
|
397
|
+
Object.assign(state, result);
|
|
398
|
+
}
|
|
399
|
+
return state;
|
|
400
|
+
}
|
|
401
|
+
function reconcile(value) {
|
|
402
|
+
return state => {
|
|
403
|
+
if (!signals.isWrappable(state) || !signals.isWrappable(value)) return value;
|
|
404
|
+
const targetKeys = Object.keys(value);
|
|
405
|
+
const previousKeys = Object.keys(state);
|
|
406
|
+
for (let i = 0, len = targetKeys.length; i < len; i++) {
|
|
407
|
+
const key = targetKeys[i];
|
|
408
|
+
setProperty(state, key, value[key]);
|
|
409
|
+
}
|
|
410
|
+
for (let i = 0, len = previousKeys.length; i < len; i++) {
|
|
411
|
+
if (value[previousKeys[i]] === undefined) setProperty(state, previousKeys[i], undefined);
|
|
412
|
+
}
|
|
413
|
+
return state;
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function deep(store) {
|
|
417
|
+
return store;
|
|
418
|
+
}
|
|
419
|
+
function mapArray(list, mapFn, options = {}) {
|
|
420
|
+
const root = signals.getOwner();
|
|
421
|
+
const id = signals.getNextChildId(root);
|
|
422
|
+
return () => {
|
|
423
|
+
const items = list();
|
|
424
|
+
let s = [];
|
|
425
|
+
if (items && items.length) {
|
|
426
|
+
for (let i = 0, len = items.length; i < len; i++) {
|
|
427
|
+
const o = signals.createOwner({
|
|
428
|
+
id: id + i
|
|
429
|
+
});
|
|
430
|
+
s.push(signals.runWithOwner(o, () => mapFn(() => items[i], () => i)));
|
|
431
|
+
}
|
|
432
|
+
} else if (options.fallback) s = [options.fallback()];
|
|
433
|
+
return s;
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
function repeat(count, mapFn, options = {}) {
|
|
437
|
+
const len = count();
|
|
438
|
+
const offset = options.from?.() || 0;
|
|
439
|
+
let s = [];
|
|
440
|
+
if (len) {
|
|
441
|
+
for (let i = 0; i < len; i++) s.push(mapFn(i + offset));
|
|
442
|
+
} else if (options.fallback) s = [options.fallback()];
|
|
443
|
+
return () => s;
|
|
444
|
+
}
|
|
445
|
+
const ErrorContext = {
|
|
446
|
+
id: Symbol("ErrorContext"),
|
|
447
|
+
defaultValue: null
|
|
448
|
+
};
|
|
449
|
+
function createErrorBoundary(fn, fallback) {
|
|
450
|
+
const ctx = sharedConfig.context;
|
|
451
|
+
const owner = signals.createOwner();
|
|
452
|
+
return signals.runWithOwner(owner, () => {
|
|
453
|
+
let result;
|
|
454
|
+
signals.setContext(ErrorContext, err => {
|
|
455
|
+
if (ctx && !ctx.noHydrate && owner.id) ctx.serialize(owner.id, err);
|
|
456
|
+
result = fallback(err, () => {});
|
|
457
|
+
});
|
|
458
|
+
try {
|
|
459
|
+
result = fn();
|
|
460
|
+
} catch (err) {
|
|
461
|
+
if (ctx && !ctx.noHydrate && owner.id) ctx.serialize(owner.id, err);
|
|
462
|
+
result = fallback(err, () => {});
|
|
463
|
+
}
|
|
464
|
+
return () => result;
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
function createLoadBoundary(fn, fallback) {
|
|
468
|
+
try {
|
|
469
|
+
const result = fn();
|
|
470
|
+
return () => result;
|
|
471
|
+
} catch (err) {
|
|
472
|
+
if (err instanceof signals.NotReadyError) {
|
|
473
|
+
return () => fallback();
|
|
474
|
+
}
|
|
475
|
+
throw err;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
function untrack(fn) {
|
|
479
|
+
return fn();
|
|
480
|
+
}
|
|
481
|
+
function flush() {}
|
|
482
|
+
function resolve(fn) {
|
|
483
|
+
throw new Error("resolve is not implemented on the server");
|
|
484
|
+
}
|
|
485
|
+
function isPending(fn, fallback) {
|
|
486
|
+
try {
|
|
487
|
+
fn();
|
|
488
|
+
return false;
|
|
489
|
+
} catch (err) {
|
|
490
|
+
if (err instanceof signals.NotReadyError && arguments.length > 1) {
|
|
491
|
+
return fallback;
|
|
492
|
+
}
|
|
493
|
+
throw err;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
function pending(fn) {
|
|
497
|
+
return fn();
|
|
498
|
+
}
|
|
499
|
+
function isRefreshing() {
|
|
500
|
+
return false;
|
|
501
|
+
}
|
|
502
|
+
function refresh(fn) {
|
|
503
|
+
return fn();
|
|
504
|
+
}
|
|
505
|
+
function action(fn) {
|
|
506
|
+
return fn;
|
|
507
|
+
}
|
|
508
|
+
function onSettled(callback) {
|
|
509
|
+
const o = signals.getOwner();
|
|
510
|
+
if (o?.id != null) signals.getNextChildId(o);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
const $DEVCOMP = Symbol("solid-dev-component");
|
|
514
|
+
function createContext(defaultValue, options) {
|
|
515
|
+
const id = Symbol(options && options.name || "");
|
|
516
|
+
function provider(props) {
|
|
517
|
+
return signals.createRoot(() => {
|
|
518
|
+
signals.setContext(provider, props.value);
|
|
519
|
+
return children(() => props.children);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
provider.id = id;
|
|
523
|
+
provider.defaultValue = defaultValue;
|
|
524
|
+
return provider;
|
|
525
|
+
}
|
|
526
|
+
function useContext(context) {
|
|
527
|
+
return signals.getContext(context);
|
|
528
|
+
}
|
|
529
|
+
function children(fn) {
|
|
530
|
+
const childrenMemo = createMemo(fn);
|
|
531
|
+
const memo = createMemo(() => signals.flatten(childrenMemo()));
|
|
532
|
+
memo.toArray = () => {
|
|
533
|
+
const c = memo();
|
|
534
|
+
return Array.isArray(c) ? c : c != null ? [c] : [];
|
|
535
|
+
};
|
|
536
|
+
return memo;
|
|
537
|
+
}
|
|
538
|
+
function ssrRunInScope(fn) {
|
|
539
|
+
if (Array.isArray(fn)) {
|
|
540
|
+
const o = signals.createOwner();
|
|
541
|
+
return fn.map(f => signals.runWithOwner.bind(null, o, f));
|
|
542
|
+
}
|
|
543
|
+
return signals.runWithOwner.bind(null, signals.createOwner(), fn);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
function enableHydration() {}
|
|
547
|
+
function createComponent(Comp, props) {
|
|
548
|
+
return Comp(props || {});
|
|
549
|
+
}
|
|
550
|
+
function lazy(fn, moduleUrl) {
|
|
551
|
+
let p;
|
|
552
|
+
let load = () => {
|
|
553
|
+
if (!p) {
|
|
554
|
+
p = fn();
|
|
555
|
+
p.then(mod => {
|
|
556
|
+
p.v = mod.default;
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
return p;
|
|
560
|
+
};
|
|
561
|
+
const wrap = props => {
|
|
562
|
+
if (!moduleUrl) {
|
|
563
|
+
throw new Error("lazy() used in SSR without a moduleUrl. " + "All lazy() components require a moduleUrl for correct hydration. " + "This is typically injected by the bundler plugin.");
|
|
564
|
+
}
|
|
565
|
+
if (!sharedConfig.context?.resolveAssets) {
|
|
566
|
+
throw new Error(`lazy() called with moduleUrl "${moduleUrl}" but no asset manifest is set. ` + "Pass a manifest option to renderToStream/renderToString.");
|
|
567
|
+
}
|
|
568
|
+
load();
|
|
569
|
+
const ctx = sharedConfig.context;
|
|
570
|
+
if (!ctx?.registerAsset || !ctx.resolveAssets) return;
|
|
571
|
+
const assets = ctx.resolveAssets(moduleUrl);
|
|
572
|
+
if (assets) {
|
|
573
|
+
for (let i = 0; i < assets.css.length; i++) ctx.registerAsset("style", assets.css[i]);
|
|
574
|
+
for (let i = 0; i < assets.js.length; i++) ctx.registerAsset("module", assets.js[i]);
|
|
575
|
+
ctx.registerModule?.(moduleUrl, assets.js[0]);
|
|
576
|
+
}
|
|
577
|
+
if (ctx?.async) {
|
|
578
|
+
ctx.block(p.then(() => {
|
|
579
|
+
p.s = "success";
|
|
580
|
+
}));
|
|
581
|
+
}
|
|
582
|
+
return createMemo(() => {
|
|
583
|
+
if (!p.v) throw new signals.NotReadyError(p);
|
|
584
|
+
return p.v(props);
|
|
585
|
+
});
|
|
586
|
+
};
|
|
587
|
+
wrap.preload = load;
|
|
588
|
+
return wrap;
|
|
589
|
+
}
|
|
590
|
+
function createUniqueId() {
|
|
591
|
+
return sharedConfig.getNextContextId();
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
function For(props) {
|
|
595
|
+
const options = "fallback" in props ? {
|
|
596
|
+
keyed: props.keyed,
|
|
597
|
+
fallback: () => props.fallback
|
|
598
|
+
} : {
|
|
599
|
+
keyed: props.keyed
|
|
600
|
+
};
|
|
601
|
+
return createMemo(mapArray(() => props.each, props.children, options));
|
|
602
|
+
}
|
|
603
|
+
function Repeat(props) {
|
|
604
|
+
const options = "fallback" in props ? {
|
|
605
|
+
fallback: () => props.fallback
|
|
606
|
+
} : {};
|
|
607
|
+
options.from = () => props.from;
|
|
608
|
+
return repeat(() => props.count, index => typeof props.children === "function" ? props.children(index) : props.children, options);
|
|
609
|
+
}
|
|
610
|
+
function Show(props) {
|
|
611
|
+
const when = props.when;
|
|
612
|
+
if (when) {
|
|
613
|
+
const child = props.children;
|
|
614
|
+
if (typeof child === "function" && child.length > 0) {
|
|
615
|
+
return child(() => when);
|
|
616
|
+
}
|
|
617
|
+
return child;
|
|
618
|
+
}
|
|
619
|
+
return props.fallback;
|
|
620
|
+
}
|
|
621
|
+
function Switch(props) {
|
|
622
|
+
const chs = children(() => props.children);
|
|
623
|
+
const o = signals.getOwner();
|
|
624
|
+
if (o) signals.getNextChildId(o);
|
|
625
|
+
return createMemo(() => {
|
|
626
|
+
let conds = chs();
|
|
627
|
+
if (!Array.isArray(conds)) conds = [conds];
|
|
628
|
+
for (let i = 0; i < conds.length; i++) {
|
|
629
|
+
const w = conds[i].when;
|
|
630
|
+
if (w) {
|
|
631
|
+
const c = conds[i].children;
|
|
632
|
+
return typeof c === "function" && c.length > 0 ? c(() => w) : c;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
return props.fallback;
|
|
636
|
+
});
|
|
637
|
+
}
|
|
638
|
+
function Match(props) {
|
|
639
|
+
return props;
|
|
640
|
+
}
|
|
641
|
+
function Errored(props) {
|
|
642
|
+
return createErrorBoundary(() => props.children, (err, reset) => {
|
|
643
|
+
const f = props.fallback;
|
|
644
|
+
return typeof f === "function" && f.length ? f(err, reset) : f;
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
function ssrHandleError(err) {
|
|
649
|
+
if (err instanceof signals.NotReadyError) {
|
|
650
|
+
return err.source;
|
|
651
|
+
}
|
|
652
|
+
const handler = signals.getContext(ErrorContext);
|
|
653
|
+
if (handler) {
|
|
654
|
+
handler(err);
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
throw err;
|
|
658
|
+
}
|
|
659
|
+
function Loading(props) {
|
|
660
|
+
const ctx = sharedConfig.context;
|
|
661
|
+
if (!ctx) {
|
|
662
|
+
return createLoadBoundary(() => props.children, () => props.fallback);
|
|
663
|
+
}
|
|
664
|
+
const o = signals.createOwner();
|
|
665
|
+
const id = o.id;
|
|
666
|
+
o.id = id + "00";
|
|
667
|
+
let runPromise;
|
|
668
|
+
let serializeBuffer = [];
|
|
669
|
+
const origSerialize = ctx.serialize;
|
|
670
|
+
function runInitially() {
|
|
671
|
+
o.dispose(false);
|
|
672
|
+
serializeBuffer = [];
|
|
673
|
+
ctx.serialize = (id, p, deferStream) => {
|
|
674
|
+
serializeBuffer.push([id, p, deferStream]);
|
|
675
|
+
};
|
|
676
|
+
const prevBoundary = ctx._currentBoundaryId;
|
|
677
|
+
ctx._currentBoundaryId = id;
|
|
678
|
+
const result = signals.runWithOwner(o, () => {
|
|
679
|
+
try {
|
|
680
|
+
return ctx.resolve(props.children);
|
|
681
|
+
} catch (err) {
|
|
682
|
+
runPromise = ssrHandleError(err);
|
|
683
|
+
}
|
|
684
|
+
});
|
|
685
|
+
ctx._currentBoundaryId = prevBoundary;
|
|
686
|
+
ctx.serialize = origSerialize;
|
|
687
|
+
return result;
|
|
688
|
+
}
|
|
689
|
+
let ret = runInitially();
|
|
690
|
+
if (!(runPromise || ret?.p?.length)) {
|
|
691
|
+
for (const args of serializeBuffer) origSerialize(args[0], args[1], args[2]);
|
|
692
|
+
serializeBuffer = [];
|
|
693
|
+
const modules = ctx.getBoundaryModules?.(id);
|
|
694
|
+
if (modules) ctx.serialize(id + "_assets", modules);
|
|
695
|
+
return ret;
|
|
696
|
+
}
|
|
697
|
+
const fallbackOwner = signals.createOwner({
|
|
698
|
+
id
|
|
699
|
+
});
|
|
700
|
+
signals.getNextChildId(fallbackOwner);
|
|
701
|
+
if (ctx.async) {
|
|
702
|
+
const done = ctx.registerFragment(id);
|
|
703
|
+
(async () => {
|
|
704
|
+
try {
|
|
705
|
+
while (runPromise) {
|
|
706
|
+
o.dispose(false);
|
|
707
|
+
await runPromise;
|
|
708
|
+
runPromise = undefined;
|
|
709
|
+
ret = runInitially();
|
|
710
|
+
}
|
|
711
|
+
for (const args of serializeBuffer) origSerialize(args[0], args[1], args[2]);
|
|
712
|
+
serializeBuffer = [];
|
|
713
|
+
while (ret.p.length) {
|
|
714
|
+
await Promise.all(ret.p);
|
|
715
|
+
ret = signals.runWithOwner(o, () => ctx.ssr(ret.t, ...ret.h));
|
|
716
|
+
}
|
|
717
|
+
done(ret.t[0]);
|
|
718
|
+
} catch (err) {
|
|
719
|
+
done(undefined, err);
|
|
720
|
+
}
|
|
721
|
+
})();
|
|
722
|
+
return signals.runWithOwner(fallbackOwner, () => ctx.ssr([`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`], ctx.escape(props.fallback)));
|
|
723
|
+
}
|
|
724
|
+
for (const args of serializeBuffer) origSerialize(args[0], args[1], args[2]);
|
|
725
|
+
serializeBuffer = [];
|
|
726
|
+
const modules = ctx.getBoundaryModules?.(id);
|
|
727
|
+
if (modules) ctx.serialize(id + "_assets", modules);
|
|
728
|
+
ctx.serialize(id, "$$f");
|
|
729
|
+
return signals.runWithOwner(fallbackOwner, () => props.fallback);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
const DEV = undefined;
|
|
733
|
+
|
|
734
|
+
Object.defineProperty(exports, "$PROXY", {
|
|
735
|
+
enumerable: true,
|
|
736
|
+
get: function () { return signals.$PROXY; }
|
|
737
|
+
});
|
|
738
|
+
Object.defineProperty(exports, "$TRACK", {
|
|
739
|
+
enumerable: true,
|
|
740
|
+
get: function () { return signals.$TRACK; }
|
|
741
|
+
});
|
|
742
|
+
Object.defineProperty(exports, "NotReadyError", {
|
|
743
|
+
enumerable: true,
|
|
744
|
+
get: function () { return signals.NotReadyError; }
|
|
745
|
+
});
|
|
746
|
+
Object.defineProperty(exports, "createRoot", {
|
|
747
|
+
enumerable: true,
|
|
748
|
+
get: function () { return signals.createRoot; }
|
|
749
|
+
});
|
|
750
|
+
Object.defineProperty(exports, "flatten", {
|
|
751
|
+
enumerable: true,
|
|
752
|
+
get: function () { return signals.flatten; }
|
|
753
|
+
});
|
|
754
|
+
Object.defineProperty(exports, "getOwner", {
|
|
755
|
+
enumerable: true,
|
|
756
|
+
get: function () { return signals.getOwner; }
|
|
757
|
+
});
|
|
758
|
+
Object.defineProperty(exports, "isEqual", {
|
|
759
|
+
enumerable: true,
|
|
760
|
+
get: function () { return signals.isEqual; }
|
|
761
|
+
});
|
|
762
|
+
Object.defineProperty(exports, "isWrappable", {
|
|
763
|
+
enumerable: true,
|
|
764
|
+
get: function () { return signals.isWrappable; }
|
|
765
|
+
});
|
|
766
|
+
Object.defineProperty(exports, "merge", {
|
|
767
|
+
enumerable: true,
|
|
768
|
+
get: function () { return signals.merge; }
|
|
769
|
+
});
|
|
770
|
+
Object.defineProperty(exports, "omit", {
|
|
771
|
+
enumerable: true,
|
|
772
|
+
get: function () { return signals.omit; }
|
|
773
|
+
});
|
|
774
|
+
Object.defineProperty(exports, "onCleanup", {
|
|
775
|
+
enumerable: true,
|
|
776
|
+
get: function () { return signals.onCleanup; }
|
|
777
|
+
});
|
|
778
|
+
Object.defineProperty(exports, "runWithOwner", {
|
|
779
|
+
enumerable: true,
|
|
780
|
+
get: function () { return signals.runWithOwner; }
|
|
781
|
+
});
|
|
782
|
+
Object.defineProperty(exports, "snapshot", {
|
|
783
|
+
enumerable: true,
|
|
784
|
+
get: function () { return signals.snapshot; }
|
|
785
|
+
});
|
|
786
|
+
exports.$DEVCOMP = $DEVCOMP;
|
|
787
|
+
exports.DEV = DEV;
|
|
788
|
+
exports.Errored = Errored;
|
|
789
|
+
exports.For = For;
|
|
790
|
+
exports.Loading = Loading;
|
|
791
|
+
exports.Match = Match;
|
|
792
|
+
exports.Repeat = Repeat;
|
|
793
|
+
exports.Show = Show;
|
|
794
|
+
exports.Switch = Switch;
|
|
795
|
+
exports.action = action;
|
|
796
|
+
exports.children = children;
|
|
797
|
+
exports.createComponent = createComponent;
|
|
798
|
+
exports.createContext = createContext;
|
|
799
|
+
exports.createDeepProxy = createDeepProxy;
|
|
800
|
+
exports.createEffect = createEffect;
|
|
801
|
+
exports.createMemo = createMemo;
|
|
802
|
+
exports.createOptimistic = createOptimistic;
|
|
803
|
+
exports.createOptimisticStore = createOptimisticStore;
|
|
804
|
+
exports.createProjection = createProjection;
|
|
805
|
+
exports.createReaction = createReaction;
|
|
806
|
+
exports.createRenderEffect = createRenderEffect;
|
|
807
|
+
exports.createSignal = createSignal;
|
|
808
|
+
exports.createStore = createStore;
|
|
809
|
+
exports.createTrackedEffect = createTrackedEffect;
|
|
810
|
+
exports.createUniqueId = createUniqueId;
|
|
811
|
+
exports.deep = deep;
|
|
812
|
+
exports.enableHydration = enableHydration;
|
|
813
|
+
exports.flush = flush;
|
|
814
|
+
exports.getObserver = getObserver;
|
|
815
|
+
exports.isPending = isPending;
|
|
816
|
+
exports.isRefreshing = isRefreshing;
|
|
817
|
+
exports.lazy = lazy;
|
|
818
|
+
exports.mapArray = mapArray;
|
|
819
|
+
exports.onSettled = onSettled;
|
|
820
|
+
exports.pending = pending;
|
|
821
|
+
exports.reconcile = reconcile;
|
|
822
|
+
exports.refresh = refresh;
|
|
823
|
+
exports.repeat = repeat;
|
|
824
|
+
exports.resolve = resolve;
|
|
825
|
+
exports.sharedConfig = sharedConfig;
|
|
826
|
+
exports.ssrHandleError = ssrHandleError;
|
|
827
|
+
exports.ssrRunInScope = ssrRunInScope;
|
|
828
|
+
exports.untrack = untrack;
|
|
829
|
+
exports.useContext = useContext;
|