jazz-tools 0.13.29 → 0.13.31
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/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +16 -0
- package/dist/{chunk-LMV6J7GN.js → chunk-IJU4XPFS.js} +21 -3
- package/dist/chunk-IJU4XPFS.js.map +1 -0
- package/dist/coValues/deepLoading.d.ts +18 -8
- package/dist/coValues/deepLoading.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/subscribe/SubscriptionScope.d.ts +1 -0
- package/dist/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/tests/deepLoading.test-d.d.ts +2 -0
- package/dist/tests/deepLoading.test-d.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/coValues/deepLoading.ts +49 -31
- package/src/subscribe/SubscriptionScope.ts +27 -2
- package/src/tests/deepLoading.test-d.ts +393 -0
- package/src/tests/deepLoading.test.ts +249 -0
- package/dist/chunk-LMV6J7GN.js.map +0 -1
@@ -11,18 +11,22 @@ export type RefsToResolve<V, DepthLimit extends number = 10, CurrentDepth extend
|
|
11
11
|
0,
|
12
12
|
...CurrentDepth
|
13
13
|
]>;
|
14
|
+
$onError?: null;
|
14
15
|
} | boolean : V extends {
|
15
16
|
_type: "CoMap" | "Group" | "Account";
|
16
|
-
} ? {
|
17
|
+
} ? ({
|
17
18
|
[Key in CoKeys<V> as Clean<V[Key]> extends CoValue ? Key : never]?: RefsToResolve<Clean<V[Key]>, DepthLimit, [
|
18
19
|
0,
|
19
20
|
...CurrentDepth
|
20
21
|
]>;
|
21
|
-
}
|
22
|
+
} & {
|
23
|
+
$onError?: null;
|
24
|
+
}) | (ItemsSym extends keyof V ? {
|
22
25
|
$each: RefsToResolve<Clean<V[ItemsSym]>, DepthLimit, [
|
23
26
|
0,
|
24
27
|
...CurrentDepth
|
25
28
|
]>;
|
29
|
+
$onError?: null;
|
26
30
|
} : never) | boolean : V extends {
|
27
31
|
_type: "CoStream";
|
28
32
|
byMe: CoFeedEntry<infer Item> | undefined;
|
@@ -31,19 +35,23 @@ export type RefsToResolve<V, DepthLimit extends number = 10, CurrentDepth extend
|
|
31
35
|
0,
|
32
36
|
...CurrentDepth
|
33
37
|
]>;
|
38
|
+
$onError?: null;
|
34
39
|
} | boolean : boolean);
|
35
40
|
export type RefsToResolveStrict<T, V> = V extends RefsToResolve<T> ? RefsToResolve<T> : V;
|
36
41
|
export type Resolved<T, R extends RefsToResolve<T> | undefined> = DeeplyLoaded<T, R, 10, [
|
37
42
|
]>;
|
43
|
+
type onErrorNullEnabled<Depth> = Depth extends {
|
44
|
+
$onError: null;
|
45
|
+
} ? null : never;
|
38
46
|
export type DeeplyLoaded<V, Depth, DepthLimit extends number = 10, CurrentDepth extends number[] = []> = DepthLimit extends CurrentDepth["length"] ? V : Depth extends boolean | undefined ? V : [
|
39
47
|
V
|
40
48
|
] extends [Array<infer Item>] ? UnCoNotNull<Item> extends CoValue ? Depth extends {
|
41
49
|
$each: infer ItemDepth;
|
42
50
|
} ? // Deeply loaded CoList
|
43
|
-
(
|
51
|
+
((Clean<Item> & DeeplyLoaded<Clean<Item>, ItemDepth, DepthLimit, [
|
44
52
|
0,
|
45
53
|
...CurrentDepth
|
46
|
-
]>)[] & V : never : V : [
|
54
|
+
]>) | onErrorNullEnabled<Depth["$each"]>)[] & V : never : V : [
|
47
55
|
V
|
48
56
|
] extends [{
|
49
57
|
_type: "CoMap" | "Group" | "Account";
|
@@ -54,13 +62,15 @@ export type DeeplyLoaded<V, Depth, DepthLimit extends number = 10, CurrentDepth
|
|
54
62
|
[key: string]: DeeplyLoaded<Clean<V[ItemsSym]>, ItemDepth, DepthLimit, [
|
55
63
|
0,
|
56
64
|
...CurrentDepth
|
57
|
-
]>;
|
58
|
-
} & V : never : keyof Depth extends never ? V :
|
65
|
+
]> | onErrorNullEnabled<ItemDepth>;
|
66
|
+
} & V : never : keyof Depth extends never ? V : Depth extends {
|
67
|
+
$onError: null;
|
68
|
+
} ? V : // Deeply loaded CoMap
|
59
69
|
{
|
60
|
-
-readonly [Key in keyof Depth]-?: Key extends CoKeys<V> ? Clean<V[Key]> extends CoValue ? DeeplyLoaded<Clean<V[Key]>, Depth[Key], DepthLimit, [
|
70
|
+
-readonly [Key in Exclude<keyof Depth, "$onError">]-?: Key extends CoKeys<V> ? Clean<V[Key]> extends CoValue ? DeeplyLoaded<Clean<V[Key]>, Depth[Key], DepthLimit, [
|
61
71
|
0,
|
62
72
|
...CurrentDepth
|
63
|
-
]> | (undefined extends V[Key] ? undefined : never) : never : never;
|
73
|
+
]> | (undefined extends V[Key] ? undefined : never) | onErrorNullEnabled<Depth[Key]> : never : never;
|
64
74
|
} & V : [V] extends [
|
65
75
|
{
|
66
76
|
_type: "CoStream";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"deepLoading.d.ts","sourceRoot":"","sources":["../../src/coValues/deepLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,MAAM,
|
1
|
+
{"version":3,"file":"deepLoading.d.ts","sourceRoot":"","sources":["../../src/coValues/deepLoading.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -20,6 +20,7 @@ export declare class SubscriptionScope<D extends CoValue> {
|
|
20
20
|
idsSubscribed: Set<string>;
|
21
21
|
autoloaded: Set<string>;
|
22
22
|
autoloadedKeys: Set<string>;
|
23
|
+
skipInvalidKeys: Set<string>;
|
23
24
|
totalValidTransactions: number;
|
24
25
|
silenceUpdates: boolean;
|
25
26
|
constructor(node: LocalNode, resolve: RefsToResolve<D>, id: ID<D>, schema: RefEncoded<D>);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../src/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EAAU,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG9D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO;
|
1
|
+
{"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../src/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.js
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"deepLoading.test-d.d.ts","sourceRoot":"","sources":["../../src/tests/deepLoading.test-d.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
@@ -17,11 +17,11 @@
|
|
17
17
|
},
|
18
18
|
"type": "module",
|
19
19
|
"license": "MIT",
|
20
|
-
"version": "0.13.
|
20
|
+
"version": "0.13.31",
|
21
21
|
"dependencies": {
|
22
22
|
"@scure/bip39": "^1.3.0",
|
23
23
|
"fast-myers-diff": "^3.2.0",
|
24
|
-
"cojson": "0.13.
|
24
|
+
"cojson": "0.13.31"
|
25
25
|
},
|
26
26
|
"devDependencies": {
|
27
27
|
"tsup": "8.3.5",
|
@@ -2,7 +2,7 @@ import { SessionID } from "cojson";
|
|
2
2
|
import { ItemsSym, UnCo } from "../internal.js";
|
3
3
|
import { type Account } from "./account.js";
|
4
4
|
import { CoFeedEntry } from "./coFeed.js";
|
5
|
-
import { type CoKeys } from "./coMap.js";
|
5
|
+
import { type CoKeys, type CoMap } from "./coMap.js";
|
6
6
|
import { type CoValue, type ID } from "./interfaces.js";
|
7
7
|
|
8
8
|
type UnCoNotNull<T> = UnCo<Exclude<T, null>>;
|
@@ -26,12 +26,13 @@ export type RefsToResolve<
|
|
26
26
|
DepthLimit,
|
27
27
|
[0, ...CurrentDepth]
|
28
28
|
>;
|
29
|
+
$onError?: null;
|
29
30
|
}
|
30
31
|
| boolean
|
31
32
|
: // Basically V extends CoMap | Group | Account - but if we used that we'd introduce circularity into the definition of CoMap itself
|
32
33
|
V extends { _type: "CoMap" | "Group" | "Account" }
|
33
34
|
?
|
34
|
-
| {
|
35
|
+
| ({
|
35
36
|
[Key in CoKeys<V> as Clean<V[Key]> extends CoValue
|
36
37
|
? Key
|
37
38
|
: never]?: RefsToResolve<
|
@@ -39,7 +40,7 @@ export type RefsToResolve<
|
|
39
40
|
DepthLimit,
|
40
41
|
[0, ...CurrentDepth]
|
41
42
|
>;
|
42
|
-
}
|
43
|
+
} & { $onError?: null })
|
43
44
|
| (ItemsSym extends keyof V
|
44
45
|
? {
|
45
46
|
$each: RefsToResolve<
|
@@ -47,6 +48,7 @@ export type RefsToResolve<
|
|
47
48
|
DepthLimit,
|
48
49
|
[0, ...CurrentDepth]
|
49
50
|
>;
|
51
|
+
$onError?: null;
|
50
52
|
}
|
51
53
|
: never)
|
52
54
|
| boolean
|
@@ -61,6 +63,7 @@ export type RefsToResolve<
|
|
61
63
|
DepthLimit,
|
62
64
|
[0, ...CurrentDepth]
|
63
65
|
>;
|
66
|
+
$onError?: null;
|
64
67
|
}
|
65
68
|
| boolean
|
66
69
|
: boolean);
|
@@ -76,6 +79,10 @@ export type Resolved<T, R extends RefsToResolve<T> | undefined> = DeeplyLoaded<
|
|
76
79
|
[]
|
77
80
|
>;
|
78
81
|
|
82
|
+
type onErrorNullEnabled<Depth> = Depth extends { $onError: null }
|
83
|
+
? null
|
84
|
+
: never;
|
85
|
+
|
79
86
|
export type DeeplyLoaded<
|
80
87
|
V,
|
81
88
|
Depth,
|
@@ -90,13 +97,16 @@ export type DeeplyLoaded<
|
|
90
97
|
? UnCoNotNull<Item> extends CoValue
|
91
98
|
? Depth extends { $each: infer ItemDepth }
|
92
99
|
? // Deeply loaded CoList
|
93
|
-
(
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
+
(
|
101
|
+
| (Clean<Item> &
|
102
|
+
DeeplyLoaded<
|
103
|
+
Clean<Item>,
|
104
|
+
ItemDepth,
|
105
|
+
DepthLimit,
|
106
|
+
[0, ...CurrentDepth]
|
107
|
+
>)
|
108
|
+
| onErrorNullEnabled<Depth["$each"]>
|
109
|
+
)[] &
|
100
110
|
V // the CoList base type needs to be intersected after so that built-in methods return the correct narrowed array type
|
101
111
|
: never
|
102
112
|
: V
|
@@ -106,31 +116,39 @@ export type DeeplyLoaded<
|
|
106
116
|
? Depth extends { $each: infer ItemDepth }
|
107
117
|
? // Deeply loaded Record-like CoMap
|
108
118
|
{
|
109
|
-
[key: string]:
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
119
|
+
[key: string]:
|
120
|
+
| DeeplyLoaded<
|
121
|
+
Clean<V[ItemsSym]>,
|
122
|
+
ItemDepth,
|
123
|
+
DepthLimit,
|
124
|
+
[0, ...CurrentDepth]
|
125
|
+
>
|
126
|
+
| onErrorNullEnabled<ItemDepth>;
|
115
127
|
} & V // same reason as in CoList
|
116
128
|
: never
|
117
129
|
: keyof Depth extends never // Depth = {}
|
118
130
|
? V
|
119
|
-
:
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
131
|
+
: Depth extends { $onError: null }
|
132
|
+
? V
|
133
|
+
: // Deeply loaded CoMap
|
134
|
+
{
|
135
|
+
-readonly [Key in Exclude<
|
136
|
+
keyof Depth,
|
137
|
+
"$onError"
|
138
|
+
>]-?: Key extends CoKeys<V>
|
139
|
+
? Clean<V[Key]> extends CoValue
|
140
|
+
?
|
141
|
+
| DeeplyLoaded<
|
142
|
+
Clean<V[Key]>,
|
143
|
+
Depth[Key],
|
144
|
+
DepthLimit,
|
145
|
+
[0, ...CurrentDepth]
|
146
|
+
>
|
147
|
+
| (undefined extends V[Key] ? undefined : never)
|
148
|
+
| onErrorNullEnabled<Depth[Key]>
|
149
|
+
: never
|
150
|
+
: never;
|
151
|
+
} & V // same reason as in CoList
|
134
152
|
: [V] extends [
|
135
153
|
{
|
136
154
|
_type: "CoStream";
|
@@ -28,6 +28,7 @@ export class SubscriptionScope<D extends CoValue> {
|
|
28
28
|
idsSubscribed = new Set<string>();
|
29
29
|
autoloaded = new Set<string>();
|
30
30
|
autoloadedKeys = new Set<string>();
|
31
|
+
skipInvalidKeys = new Set<string>();
|
31
32
|
totalValidTransactions = 0;
|
32
33
|
|
33
34
|
silenceUpdates = false;
|
@@ -140,13 +141,21 @@ export class SubscriptionScope<D extends CoValue> {
|
|
140
141
|
continue;
|
141
142
|
}
|
142
143
|
|
144
|
+
if (this.skipInvalidKeys.has(key)) {
|
145
|
+
continue;
|
146
|
+
}
|
147
|
+
|
143
148
|
errorType = value.type;
|
144
149
|
if (value.issues) {
|
145
150
|
issues.push(...value.issues);
|
146
151
|
}
|
147
152
|
}
|
148
153
|
|
149
|
-
for (const value of this.validationErrors.
|
154
|
+
for (const [key, value] of this.validationErrors.entries()) {
|
155
|
+
if (this.skipInvalidKeys.has(key)) {
|
156
|
+
continue;
|
157
|
+
}
|
158
|
+
|
150
159
|
errorType = value.type;
|
151
160
|
if (value.issues) {
|
152
161
|
issues.push(...value.issues);
|
@@ -252,8 +261,10 @@ export class SubscriptionScope<D extends CoValue> {
|
|
252
261
|
return;
|
253
262
|
}
|
254
263
|
|
264
|
+
const resolve = this.resolve as Record<string, any>;
|
265
|
+
|
255
266
|
// Adding the key to the resolve object to resolve the key when calling loadChildren
|
256
|
-
|
267
|
+
resolve[key] = true;
|
257
268
|
// Track the keys that are autoloaded to flag any id on that key as autoloaded
|
258
269
|
this.autoloadedKeys.add(key);
|
259
270
|
|
@@ -419,6 +430,10 @@ export class SubscriptionScope<D extends CoValue> {
|
|
419
430
|
}
|
420
431
|
|
421
432
|
loadCoMapKey(map: CoMap, key: string, depth: Record<string, any> | true) {
|
433
|
+
if (key === "$onError") {
|
434
|
+
return undefined;
|
435
|
+
}
|
436
|
+
|
422
437
|
const id = map._raw.get(key) as string | undefined;
|
423
438
|
const descriptor = map.getDescriptor(key);
|
424
439
|
|
@@ -513,6 +528,16 @@ export class SubscriptionScope<D extends CoValue> {
|
|
513
528
|
this.autoloaded.add(id);
|
514
529
|
}
|
515
530
|
|
531
|
+
const skipInvalid = typeof query === "object" && query.$onError === null;
|
532
|
+
|
533
|
+
if (skipInvalid) {
|
534
|
+
if (key) {
|
535
|
+
this.skipInvalidKeys.add(key);
|
536
|
+
}
|
537
|
+
|
538
|
+
this.skipInvalidKeys.add(id);
|
539
|
+
}
|
540
|
+
|
516
541
|
// Cloning the resolve objects to avoid mutating the original object when tracking autoloaded values
|
517
542
|
const resolve =
|
518
543
|
typeof query === "object" && query !== null ? { ...query } : query;
|