solid-js 1.8.3 → 1.8.5
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 +2 -2
- package/dist/dev.js +299 -534
- package/dist/server.js +75 -170
- package/dist/solid.cjs +2 -2
- package/dist/solid.js +257 -461
- package/h/dist/h.js +8 -34
- package/h/jsx-runtime/dist/jsx.js +1 -1
- package/h/jsx-runtime/types/index.d.ts +8 -11
- package/h/types/hyperscript.d.ts +11 -11
- package/html/dist/html.js +94 -216
- package/html/types/lit.d.ts +33 -45
- package/package.json +7 -3
- package/store/dist/dev.js +42 -114
- package/store/dist/server.js +8 -19
- package/store/dist/store.js +39 -105
- package/store/types/index.d.ts +7 -21
- package/store/types/modifiers.d.ts +3 -6
- package/store/types/mutable.d.ts +2 -5
- package/store/types/server.d.ts +4 -12
- package/store/types/store.d.ts +61 -218
- package/types/index.d.ts +9 -72
- package/types/reactive/array.d.ts +4 -12
- package/types/reactive/observable.d.ts +17 -25
- package/types/reactive/scheduler.d.ts +6 -9
- package/types/reactive/signal.d.ts +140 -228
- package/types/render/Suspense.d.ts +5 -5
- package/types/render/component.d.ts +31 -62
- package/types/render/flow.d.ts +31 -43
- package/types/render/hydration.d.ts +13 -13
- package/types/server/index.d.ts +2 -57
- package/types/server/reactive.d.ts +42 -73
- package/types/server/rendering.d.ts +95 -166
- package/universal/dist/dev.js +12 -28
- package/universal/dist/universal.js +12 -28
- package/universal/types/index.d.ts +1 -3
- package/universal/types/universal.d.ts +1 -0
- package/web/dist/dev.cjs +3 -0
- package/web/dist/dev.js +82 -617
- package/web/dist/server.cjs +17 -5
- package/web/dist/server.js +105 -178
- package/web/dist/storage.cjs +12 -0
- package/web/dist/storage.js +10 -0
- package/web/dist/web.cjs +3 -0
- package/web/dist/web.js +81 -611
- package/web/types/client.d.ts +7 -2
- package/web/types/core.d.ts +1 -10
- package/web/types/index.d.ts +10 -27
- package/web/types/server-mock.d.ts +32 -47
- package/web/types/server.d.ts +10 -1
- package/web/types/storage.d.ts +2 -0
package/store/dist/store.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $PROXY, $TRACK, getListener, batch, createSignal } from
|
|
1
|
+
import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';
|
|
2
2
|
|
|
3
3
|
const $RAW = Symbol("store-raw"),
|
|
4
4
|
$NODE = Symbol("store-node"),
|
|
@@ -8,7 +8,7 @@ function wrap$1(value) {
|
|
|
8
8
|
let p = value[$PROXY];
|
|
9
9
|
if (!p) {
|
|
10
10
|
Object.defineProperty(value, $PROXY, {
|
|
11
|
-
value:
|
|
11
|
+
value: p = new Proxy(value, proxyTraps$1)
|
|
12
12
|
});
|
|
13
13
|
if (!Array.isArray(value)) {
|
|
14
14
|
const keys = Object.keys(value),
|
|
@@ -28,29 +28,20 @@ function wrap$1(value) {
|
|
|
28
28
|
}
|
|
29
29
|
function isWrappable(obj) {
|
|
30
30
|
let proto;
|
|
31
|
-
return (
|
|
32
|
-
obj != null &&
|
|
33
|
-
typeof obj === "object" &&
|
|
34
|
-
(obj[$PROXY] ||
|
|
35
|
-
!(proto = Object.getPrototypeOf(obj)) ||
|
|
36
|
-
proto === Object.prototype ||
|
|
37
|
-
Array.isArray(obj))
|
|
38
|
-
);
|
|
31
|
+
return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
|
|
39
32
|
}
|
|
40
33
|
function unwrap(item, set = new Set()) {
|
|
41
34
|
let result, unwrapped, v, prop;
|
|
42
|
-
if (
|
|
35
|
+
if (result = item != null && item[$RAW]) return result;
|
|
43
36
|
if (!isWrappable(item) || set.has(item)) return item;
|
|
44
37
|
if (Array.isArray(item)) {
|
|
45
|
-
if (Object.isFrozen(item)) item = item.slice(0);
|
|
46
|
-
else set.add(item);
|
|
38
|
+
if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);
|
|
47
39
|
for (let i = 0, l = item.length; i < l; i++) {
|
|
48
40
|
v = item[i];
|
|
49
41
|
if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;
|
|
50
42
|
}
|
|
51
43
|
} else {
|
|
52
|
-
if (Object.isFrozen(item)) item = Object.assign({}, item);
|
|
53
|
-
else set.add(item);
|
|
44
|
+
if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);
|
|
54
45
|
const keys = Object.keys(item),
|
|
55
46
|
desc = Object.getOwnPropertyDescriptors(item);
|
|
56
47
|
for (let i = 0, l = keys.length; i < l; i++) {
|
|
@@ -64,10 +55,9 @@ function unwrap(item, set = new Set()) {
|
|
|
64
55
|
}
|
|
65
56
|
function getNodes(target, symbol) {
|
|
66
57
|
let nodes = target[symbol];
|
|
67
|
-
if (!nodes)
|
|
68
|
-
Object.
|
|
69
|
-
|
|
70
|
-
});
|
|
58
|
+
if (!nodes) Object.defineProperty(target, symbol, {
|
|
59
|
+
value: nodes = Object.create(null)
|
|
60
|
+
});
|
|
71
61
|
return nodes;
|
|
72
62
|
}
|
|
73
63
|
function getNode(nodes, property, value) {
|
|
@@ -77,12 +67,11 @@ function getNode(nodes, property, value) {
|
|
|
77
67
|
internal: true
|
|
78
68
|
});
|
|
79
69
|
s.$ = set;
|
|
80
|
-
return
|
|
70
|
+
return nodes[property] = s;
|
|
81
71
|
}
|
|
82
72
|
function proxyDescriptor$1(target, property) {
|
|
83
73
|
const desc = Reflect.getOwnPropertyDescriptor(target, property);
|
|
84
|
-
if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)
|
|
85
|
-
return desc;
|
|
74
|
+
if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;
|
|
86
75
|
delete desc.value;
|
|
87
76
|
delete desc.writable;
|
|
88
77
|
desc.get = () => target[$PROXY][property];
|
|
@@ -109,25 +98,12 @@ const proxyTraps$1 = {
|
|
|
109
98
|
if (property === $NODE || property === $HAS || property === "__proto__") return value;
|
|
110
99
|
if (!tracked) {
|
|
111
100
|
const desc = Object.getOwnPropertyDescriptor(target, property);
|
|
112
|
-
if (
|
|
113
|
-
getListener() &&
|
|
114
|
-
(typeof value !== "function" || target.hasOwnProperty(property)) &&
|
|
115
|
-
!(desc && desc.get)
|
|
116
|
-
)
|
|
117
|
-
value = getNode(nodes, property, value)();
|
|
101
|
+
if (getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();
|
|
118
102
|
}
|
|
119
103
|
return isWrappable(value) ? wrap$1(value) : value;
|
|
120
104
|
},
|
|
121
105
|
has(target, property) {
|
|
122
|
-
if (
|
|
123
|
-
property === $RAW ||
|
|
124
|
-
property === $PROXY ||
|
|
125
|
-
property === $TRACK ||
|
|
126
|
-
property === $NODE ||
|
|
127
|
-
property === $HAS ||
|
|
128
|
-
property === "__proto__"
|
|
129
|
-
)
|
|
130
|
-
return true;
|
|
106
|
+
if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
|
|
131
107
|
getListener() && getNode(getNodes(target, $HAS), property)();
|
|
132
108
|
return property in target;
|
|
133
109
|
},
|
|
@@ -153,7 +129,7 @@ function setProperty(state, property, value, deleting = false) {
|
|
|
153
129
|
}
|
|
154
130
|
let nodes = getNodes(state, $NODE),
|
|
155
131
|
node;
|
|
156
|
-
if (
|
|
132
|
+
if (node = getNode(nodes, property, prev)) node.$(() => value);
|
|
157
133
|
if (Array.isArray(state) && state.length !== len) {
|
|
158
134
|
for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
|
|
159
135
|
(node = getNode(nodes, "length", len)) && node.$(state.length);
|
|
@@ -199,7 +175,11 @@ function updatePath(current, path, traversed = []) {
|
|
|
199
175
|
}
|
|
200
176
|
return;
|
|
201
177
|
} else if (isArray && partType === "object") {
|
|
202
|
-
const {
|
|
178
|
+
const {
|
|
179
|
+
from = 0,
|
|
180
|
+
to = current.length - 1,
|
|
181
|
+
by = 1
|
|
182
|
+
} = part;
|
|
203
183
|
for (let i = from; i <= to; i += by) {
|
|
204
184
|
updatePath(current, [i].concat(path), traversed);
|
|
205
185
|
}
|
|
@@ -218,7 +198,7 @@ function updatePath(current, path, traversed = []) {
|
|
|
218
198
|
}
|
|
219
199
|
if (part === undefined && value == undefined) return;
|
|
220
200
|
value = unwrap(value);
|
|
221
|
-
if (part === undefined ||
|
|
201
|
+
if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {
|
|
222
202
|
mergeStoreNode(prev, value);
|
|
223
203
|
} else setProperty(current, part, value);
|
|
224
204
|
}
|
|
@@ -228,9 +208,7 @@ function createStore(...[store, options]) {
|
|
|
228
208
|
const wrappedStore = wrap$1(unwrappedStore);
|
|
229
209
|
function setStore(...args) {
|
|
230
210
|
batch(() => {
|
|
231
|
-
isArray && args.length === 1
|
|
232
|
-
? updateArray(unwrappedStore, args[0])
|
|
233
|
-
: updatePath(unwrappedStore, args);
|
|
211
|
+
isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);
|
|
234
212
|
});
|
|
235
213
|
}
|
|
236
214
|
return [wrappedStore, setStore];
|
|
@@ -238,19 +216,11 @@ function createStore(...[store, options]) {
|
|
|
238
216
|
|
|
239
217
|
function proxyDescriptor(target, property) {
|
|
240
218
|
const desc = Reflect.getOwnPropertyDescriptor(target, property);
|
|
241
|
-
if (
|
|
242
|
-
!desc ||
|
|
243
|
-
desc.get ||
|
|
244
|
-
desc.set ||
|
|
245
|
-
!desc.configurable ||
|
|
246
|
-
property === $PROXY ||
|
|
247
|
-
property === $NODE
|
|
248
|
-
)
|
|
249
|
-
return desc;
|
|
219
|
+
if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;
|
|
250
220
|
delete desc.value;
|
|
251
221
|
delete desc.writable;
|
|
252
222
|
desc.get = () => target[$PROXY][property];
|
|
253
|
-
desc.set = v =>
|
|
223
|
+
desc.set = v => target[$PROXY][property] = v;
|
|
254
224
|
return desc;
|
|
255
225
|
}
|
|
256
226
|
const proxyTraps = {
|
|
@@ -268,24 +238,14 @@ const proxyTraps = {
|
|
|
268
238
|
if (!tracked) {
|
|
269
239
|
const desc = Object.getOwnPropertyDescriptor(target, property);
|
|
270
240
|
const isFunction = typeof value === "function";
|
|
271
|
-
if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))
|
|
272
|
-
value = getNode(nodes, property, value)();
|
|
273
|
-
else if (value != null && isFunction && value === Array.prototype[property]) {
|
|
241
|
+
if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
|
|
274
242
|
return (...args) => batch(() => Array.prototype[property].apply(receiver, args));
|
|
275
243
|
}
|
|
276
244
|
}
|
|
277
245
|
return isWrappable(value) ? wrap(value) : value;
|
|
278
246
|
},
|
|
279
247
|
has(target, property) {
|
|
280
|
-
if (
|
|
281
|
-
property === $RAW ||
|
|
282
|
-
property === $PROXY ||
|
|
283
|
-
property === $TRACK ||
|
|
284
|
-
property === $NODE ||
|
|
285
|
-
property === $HAS ||
|
|
286
|
-
property === "__proto__"
|
|
287
|
-
)
|
|
288
|
-
return true;
|
|
248
|
+
if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
|
|
289
249
|
getListener() && getNode(getNodes(target, $HAS), property)();
|
|
290
250
|
return property in target;
|
|
291
251
|
},
|
|
@@ -304,7 +264,7 @@ function wrap(value) {
|
|
|
304
264
|
let p = value[$PROXY];
|
|
305
265
|
if (!p) {
|
|
306
266
|
Object.defineProperty(value, $PROXY, {
|
|
307
|
-
value:
|
|
267
|
+
value: p = new Proxy(value, proxyTraps)
|
|
308
268
|
});
|
|
309
269
|
const keys = Object.keys(value),
|
|
310
270
|
desc = Object.getOwnPropertyDescriptors(value);
|
|
@@ -340,39 +300,19 @@ const $ROOT = Symbol("store-root");
|
|
|
340
300
|
function applyState(target, parent, property, merge, key) {
|
|
341
301
|
const previous = parent[property];
|
|
342
302
|
if (target === previous) return;
|
|
343
|
-
if (
|
|
344
|
-
property !== $ROOT &&
|
|
345
|
-
(!isWrappable(target) || !isWrappable(previous) || (key && target[key] !== previous[key]))
|
|
346
|
-
) {
|
|
303
|
+
if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key])) {
|
|
347
304
|
setProperty(parent, property, target);
|
|
348
305
|
return;
|
|
349
306
|
}
|
|
350
307
|
if (Array.isArray(target)) {
|
|
351
|
-
if (
|
|
352
|
-
target.length &&
|
|
353
|
-
previous.length &&
|
|
354
|
-
(!merge || (key && target[0] && target[0][key] != null))
|
|
355
|
-
) {
|
|
308
|
+
if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
|
|
356
309
|
let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
|
|
357
|
-
for (
|
|
358
|
-
start = 0, end = Math.min(previous.length, target.length);
|
|
359
|
-
start < end &&
|
|
360
|
-
(previous[start] === target[start] ||
|
|
361
|
-
(key && previous[start] && target[start] && previous[start][key] === target[start][key]));
|
|
362
|
-
start++
|
|
363
|
-
) {
|
|
310
|
+
for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {
|
|
364
311
|
applyState(target[start], previous, start, merge, key);
|
|
365
312
|
}
|
|
366
313
|
const temp = new Array(target.length),
|
|
367
314
|
newIndices = new Map();
|
|
368
|
-
for (
|
|
369
|
-
end = previous.length - 1, newEnd = target.length - 1;
|
|
370
|
-
end >= start &&
|
|
371
|
-
newEnd >= start &&
|
|
372
|
-
(previous[end] === target[newEnd] ||
|
|
373
|
-
(key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]));
|
|
374
|
-
end--, newEnd--
|
|
375
|
-
) {
|
|
315
|
+
for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {
|
|
376
316
|
temp[newEnd] = previous[end];
|
|
377
317
|
}
|
|
378
318
|
if (start > newEnd || start > end) {
|
|
@@ -426,19 +366,16 @@ function applyState(target, parent, property, merge, key) {
|
|
|
426
366
|
}
|
|
427
367
|
}
|
|
428
368
|
function reconcile(value, options = {}) {
|
|
429
|
-
const {
|
|
369
|
+
const {
|
|
370
|
+
merge,
|
|
371
|
+
key = "id"
|
|
372
|
+
} = options,
|
|
430
373
|
v = unwrap(value);
|
|
431
374
|
return state => {
|
|
432
375
|
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
433
|
-
const res = applyState(
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
[$ROOT]: state
|
|
437
|
-
},
|
|
438
|
-
$ROOT,
|
|
439
|
-
merge,
|
|
440
|
-
key
|
|
441
|
-
);
|
|
376
|
+
const res = applyState(v, {
|
|
377
|
+
[$ROOT]: state
|
|
378
|
+
}, $ROOT, merge, key);
|
|
442
379
|
return res === undefined ? state : res;
|
|
443
380
|
};
|
|
444
381
|
}
|
|
@@ -448,10 +385,7 @@ const setterTraps = {
|
|
|
448
385
|
if (property === $RAW) return target;
|
|
449
386
|
const value = target[property];
|
|
450
387
|
let proxy;
|
|
451
|
-
return isWrappable(value)
|
|
452
|
-
? producers.get(value) ||
|
|
453
|
-
(producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)
|
|
454
|
-
: value;
|
|
388
|
+
return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;
|
|
455
389
|
},
|
|
456
390
|
set(target, property, value) {
|
|
457
391
|
setProperty(target, property, unwrap(value));
|
|
@@ -467,7 +401,7 @@ function produce(fn) {
|
|
|
467
401
|
if (isWrappable(state)) {
|
|
468
402
|
let proxy;
|
|
469
403
|
if (!(proxy = producers.get(state))) {
|
|
470
|
-
producers.set(state,
|
|
404
|
+
producers.set(state, proxy = new Proxy(state, setterTraps));
|
|
471
405
|
}
|
|
472
406
|
fn(proxy);
|
|
473
407
|
}
|
package/store/types/index.d.ts
CHANGED
|
@@ -1,26 +1,12 @@
|
|
|
1
1
|
export { $RAW, createStore, unwrap } from "./store.js";
|
|
2
|
-
export type {
|
|
3
|
-
ArrayFilterFn,
|
|
4
|
-
DeepMutable,
|
|
5
|
-
DeepReadonly,
|
|
6
|
-
NotWrappable,
|
|
7
|
-
Part,
|
|
8
|
-
SetStoreFunction,
|
|
9
|
-
SolidStore,
|
|
10
|
-
Store,
|
|
11
|
-
StoreNode,
|
|
12
|
-
StorePathRange,
|
|
13
|
-
StoreSetter
|
|
14
|
-
} from "./store.js";
|
|
2
|
+
export type { ArrayFilterFn, DeepMutable, DeepReadonly, NotWrappable, Part, SetStoreFunction, SolidStore, Store, StoreNode, StorePathRange, StoreSetter } from "./store.js";
|
|
15
3
|
export * from "./mutable.js";
|
|
16
4
|
export * from "./modifiers.js";
|
|
17
5
|
import { $NODE, isWrappable } from "./store.js";
|
|
18
|
-
export declare const DEV:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
readonly hooks: {
|
|
6
|
+
export declare const DEV: {
|
|
7
|
+
readonly $NODE: typeof $NODE;
|
|
8
|
+
readonly isWrappable: typeof isWrappable;
|
|
9
|
+
readonly hooks: {
|
|
23
10
|
onStoreNodeUpdate: import("./store.js").OnStoreNodeUpdate | null;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
| undefined;
|
|
11
|
+
};
|
|
12
|
+
} | undefined;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
export type ReconcileOptions = {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
key?: string | null;
|
|
3
|
+
merge?: boolean;
|
|
4
4
|
};
|
|
5
|
-
export declare function reconcile<T extends U, U>(
|
|
6
|
-
value: T,
|
|
7
|
-
options?: ReconcileOptions
|
|
8
|
-
): (state: U) => T;
|
|
5
|
+
export declare function reconcile<T extends U, U>(value: T, options?: ReconcileOptions): (state: U) => T;
|
|
9
6
|
export declare function produce<T>(fn: (state: T) => void): (state: T) => T;
|
package/store/types/mutable.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { StoreNode } from "./store.js";
|
|
2
|
-
export declare function createMutable<T extends StoreNode>(
|
|
3
|
-
state: T,
|
|
4
|
-
options?: {
|
|
2
|
+
export declare function createMutable<T extends StoreNode>(state: T, options?: {
|
|
5
3
|
name?: string;
|
|
6
|
-
|
|
7
|
-
): T;
|
|
4
|
+
}): T;
|
|
8
5
|
export declare function modifyMutable<T>(state: T, modifier: (state: T) => T): void;
|
package/store/types/server.d.ts
CHANGED
|
@@ -2,23 +2,15 @@ import type { SetStoreFunction, Store } from "./store.js";
|
|
|
2
2
|
export declare const $RAW: unique symbol;
|
|
3
3
|
export declare function isWrappable(obj: any): boolean;
|
|
4
4
|
export declare function unwrap<T>(item: T): T;
|
|
5
|
-
export declare function setProperty(
|
|
6
|
-
state: any,
|
|
7
|
-
property: PropertyKey,
|
|
8
|
-
value: any,
|
|
9
|
-
force?: boolean
|
|
10
|
-
): void;
|
|
5
|
+
export declare function setProperty(state: any, property: PropertyKey, value: any, force?: boolean): void;
|
|
11
6
|
export declare function updatePath(current: any, path: any[], traversed?: PropertyKey[]): void;
|
|
12
7
|
export declare function createStore<T>(state: T | Store<T>): [Store<T>, SetStoreFunction<T>];
|
|
13
8
|
export declare function createMutable<T>(state: T | Store<T>): T;
|
|
14
9
|
type ReconcileOptions = {
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
key?: string | null;
|
|
11
|
+
merge?: boolean;
|
|
17
12
|
};
|
|
18
|
-
export declare function reconcile<T extends U, U extends object>(
|
|
19
|
-
value: T,
|
|
20
|
-
options?: ReconcileOptions
|
|
21
|
-
): (state: U) => T;
|
|
13
|
+
export declare function reconcile<T extends U, U extends object>(value: T, options?: ReconcileOptions): (state: U) => T;
|
|
22
14
|
export declare function produce<T>(fn: (state: T) => void): (state: T) => T;
|
|
23
15
|
export declare const DEV: undefined;
|
|
24
16
|
export {};
|