cojson 0.4.0 → 0.4.1
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/coValues/coStream.d.ts +1 -1
- package/dist/coValues/coStream.js +2 -1
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/queriedCoValues/queriedCoStream.d.ts +4 -8
- package/dist/queriedCoValues/queriedCoStream.js +19 -18
- package/dist/queriedCoValues/queriedCoStream.js.map +1 -1
- package/package.json +2 -2
- package/src/coValues/coStream.ts +3 -3
- package/src/queriedCoValues/queriedCoStream.ts +68 -72
- package/src/tests/queries.test.ts +113 -52
|
@@ -45,7 +45,7 @@ export declare class CoStreamView<Item extends JsonValue = JsonValue, Meta exten
|
|
|
45
45
|
protected fillFromCoValue(): void;
|
|
46
46
|
getSingleStream(): (Item)[] | undefined;
|
|
47
47
|
sessions(): SessionID[];
|
|
48
|
-
accounts(): Set<AccountID
|
|
48
|
+
accounts(): Set<AccountID>;
|
|
49
49
|
nthItemIn(sessionID: SessionID, n: number): {
|
|
50
50
|
by: AccountID | AgentID;
|
|
51
51
|
tx: TransactionID;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isCoValue } from "../coValue.js";
|
|
2
2
|
import { accountOrAgentIDfromSessionID } from "../coValueCore.js";
|
|
3
3
|
import { base64URLtoBytes, bytesToBase64url } from "../base64url.js";
|
|
4
|
+
import { isAccountID } from "./account.js";
|
|
4
5
|
import { parseJSON } from "../jsonStringify.js";
|
|
5
6
|
export class CoStreamView {
|
|
6
7
|
constructor(core) {
|
|
@@ -48,7 +49,7 @@ export class CoStreamView {
|
|
|
48
49
|
return Object.keys(this.items);
|
|
49
50
|
}
|
|
50
51
|
accounts() {
|
|
51
|
-
return new Set(this.sessions().map(accountOrAgentIDfromSessionID));
|
|
52
|
+
return new Set(this.sessions().map(accountOrAgentIDfromSessionID).filter(isAccountID));
|
|
52
53
|
}
|
|
53
54
|
nthItemIn(sessionID, n) {
|
|
54
55
|
const items = this.items[sessionID];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coStream.js","sourceRoot":"","sources":["../../src/coValues/coStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAe,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"coStream.js","sourceRoot":"","sources":["../../src/coValues/coStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { CoID, CoValue } from "../coValue.js";
|
|
|
7
7
|
import { SessionID, TransactionID } from "../ids.js";
|
|
8
8
|
import { ValueOrSubQueried, QueryContext } from "../queries.js";
|
|
9
9
|
import { QueriedAccount } from "./queriedAccount.js";
|
|
10
|
-
export type
|
|
10
|
+
export type QueriedCoStreamEntry<Item extends JsonValue | CoValue> = {
|
|
11
11
|
last?: ValueOrSubQueried<Item>;
|
|
12
12
|
by?: QueriedAccount;
|
|
13
13
|
tx?: TransactionID;
|
|
@@ -28,13 +28,9 @@ export declare class QueriedCoStream<S extends CoStream> {
|
|
|
28
28
|
get meta(): S["meta"];
|
|
29
29
|
get group(): Group;
|
|
30
30
|
get core(): CoValueCore;
|
|
31
|
-
me?:
|
|
32
|
-
perAccount:
|
|
33
|
-
|
|
34
|
-
};
|
|
35
|
-
perSession: {
|
|
36
|
-
[session: SessionID]: QueriedCoStreamItems<S["_item"]>;
|
|
37
|
-
};
|
|
31
|
+
me?: QueriedCoStreamEntry<S["_item"]>;
|
|
32
|
+
perAccount: [account: AccountID, items: QueriedCoStreamEntry<S["_item"]>][];
|
|
33
|
+
perSession: [session: SessionID, items: QueriedCoStreamEntry<S["_item"]>][];
|
|
38
34
|
push(item: S["_item"], privacy?: "private" | "trusting"): S;
|
|
39
35
|
mutate(mutator: (mutable: MutableCoStream<S["_item"], S["meta"]>) => void): S;
|
|
40
36
|
}
|
|
@@ -9,7 +9,7 @@ export class QueriedCoStream {
|
|
|
9
9
|
},
|
|
10
10
|
});
|
|
11
11
|
this.id = coStream.id;
|
|
12
|
-
this.perSession =
|
|
12
|
+
this.perSession = coStream.sessions().map((sessionID) => {
|
|
13
13
|
const items = [...coStream.itemsIn(sessionID)].map((item) => queryContext.defineSubqueryPropertiesIn({
|
|
14
14
|
tx: item.tx,
|
|
15
15
|
at: new Date(item.at),
|
|
@@ -40,8 +40,8 @@ export class QueriedCoStream {
|
|
|
40
40
|
all: items,
|
|
41
41
|
},
|
|
42
42
|
];
|
|
43
|
-
})
|
|
44
|
-
this.perAccount =
|
|
43
|
+
});
|
|
44
|
+
this.perAccount = [...coStream.accounts()].map((accountID) => {
|
|
45
45
|
const items = [...coStream.itemsBy(accountID)].map((item) => queryContext.defineSubqueryPropertiesIn({
|
|
46
46
|
tx: item.tx,
|
|
47
47
|
at: new Date(item.at),
|
|
@@ -58,24 +58,25 @@ export class QueriedCoStream {
|
|
|
58
58
|
},
|
|
59
59
|
}, [coStream.id]));
|
|
60
60
|
const lastItem = items[items.length - 1];
|
|
61
|
+
const entry = {
|
|
62
|
+
get last() {
|
|
63
|
+
return lastItem?.value;
|
|
64
|
+
},
|
|
65
|
+
get by() {
|
|
66
|
+
return lastItem?.by;
|
|
67
|
+
},
|
|
68
|
+
tx: lastItem?.tx,
|
|
69
|
+
at: lastItem?.at,
|
|
70
|
+
all: items,
|
|
71
|
+
};
|
|
72
|
+
if (accountID === queryContext.node.account.id) {
|
|
73
|
+
this.me = entry;
|
|
74
|
+
}
|
|
61
75
|
return [
|
|
62
76
|
accountID,
|
|
63
|
-
|
|
64
|
-
get last() {
|
|
65
|
-
return lastItem?.value;
|
|
66
|
-
},
|
|
67
|
-
get by() {
|
|
68
|
-
return lastItem?.by;
|
|
69
|
-
},
|
|
70
|
-
tx: lastItem?.tx,
|
|
71
|
-
at: lastItem?.at,
|
|
72
|
-
all: items,
|
|
73
|
-
},
|
|
77
|
+
entry
|
|
74
78
|
];
|
|
75
|
-
})
|
|
76
|
-
this.me = isAccountID(queryContext.node.account.id)
|
|
77
|
-
? this.perAccount[queryContext.node.account.id]
|
|
78
|
-
: undefined;
|
|
79
|
+
});
|
|
79
80
|
}
|
|
80
81
|
get meta() {
|
|
81
82
|
return this.coStream.meta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriedCoStream.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoStream.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAmBhE,MAAM,OAAO,eAAe;IAKxB,gBAAgB;IAChB,YAAY,QAAW,EAAE,YAA0B;QAHnD,SAAI,GAAG,UAAmB,CAAC;QAIvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACpC,GAAG;gBACC,OAAO,QAAQ,CAAC;YACpB,CAAC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAEtB,IAAI,CAAC,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"queriedCoStream.js","sourceRoot":"","sources":["../../src/queriedCoValues/queriedCoStream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"version": "0.4.
|
|
8
|
+
"version": "0.4.1",
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@types/jest": "^29.5.3",
|
|
11
11
|
"@typescript-eslint/eslint-plugin": "^6.2.1",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"/dist/"
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "27779ac7923d43690fc1671e033ffc16c84aba5b"
|
|
55
55
|
}
|
package/src/coValues/coStream.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { CoValueCore, accountOrAgentIDfromSessionID } from "../coValueCore.js";
|
|
|
4
4
|
import { Group } from "./group.js";
|
|
5
5
|
import { AgentID, SessionID, TransactionID } from "../ids.js";
|
|
6
6
|
import { base64URLtoBytes, bytesToBase64url } from "../base64url.js";
|
|
7
|
-
import { AccountID } from "./account.js";
|
|
7
|
+
import { AccountID, isAccountID } from "./account.js";
|
|
8
8
|
import { parseJSON } from "../jsonStringify.js";
|
|
9
9
|
|
|
10
10
|
export type BinaryStreamInfo = {
|
|
@@ -111,8 +111,8 @@ export class CoStreamView<
|
|
|
111
111
|
return Object.keys(this.items) as SessionID[];
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
accounts(): Set<AccountID
|
|
115
|
-
return new Set(this.sessions().map(accountOrAgentIDfromSessionID));
|
|
114
|
+
accounts(): Set<AccountID> {
|
|
115
|
+
return new Set(this.sessions().map(accountOrAgentIDfromSessionID).filter(isAccountID));
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
nthItemIn(
|
|
@@ -8,7 +8,7 @@ import { SessionID, TransactionID } from "../ids.js";
|
|
|
8
8
|
import { ValueOrSubQueried, QueryContext } from "../queries.js";
|
|
9
9
|
import { QueriedAccount } from "./queriedAccount.js";
|
|
10
10
|
|
|
11
|
-
export type
|
|
11
|
+
export type QueriedCoStreamEntry<Item extends JsonValue | CoValue> = {
|
|
12
12
|
last?: ValueOrSubQueried<Item>;
|
|
13
13
|
by?: QueriedAccount;
|
|
14
14
|
tx?: TransactionID;
|
|
@@ -35,52 +35,50 @@ export class QueriedCoStream<S extends CoStream> {
|
|
|
35
35
|
});
|
|
36
36
|
this.id = coStream.id;
|
|
37
37
|
|
|
38
|
-
this.perSession =
|
|
39
|
-
coStream.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
this.perSession = coStream.sessions().map((sessionID) => {
|
|
39
|
+
const items = [...coStream.itemsIn(sessionID)].map((item) =>
|
|
40
|
+
queryContext.defineSubqueryPropertiesIn(
|
|
41
|
+
{
|
|
42
|
+
tx: item.tx,
|
|
43
|
+
at: new Date(item.at),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
by: {
|
|
47
|
+
value: isAccountID(item.by)
|
|
48
|
+
? item.by
|
|
49
|
+
: (undefined as never),
|
|
50
|
+
enumerable: true,
|
|
45
51
|
},
|
|
46
|
-
{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
? item.by
|
|
50
|
-
: (undefined as never),
|
|
51
|
-
enumerable: true,
|
|
52
|
-
},
|
|
53
|
-
value: {
|
|
54
|
-
value: item.value as S["_item"],
|
|
55
|
-
enumerable: true,
|
|
56
|
-
},
|
|
52
|
+
value: {
|
|
53
|
+
value: item.value as S["_item"],
|
|
54
|
+
enumerable: true,
|
|
57
55
|
},
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
)
|
|
56
|
+
},
|
|
57
|
+
[coStream.id]
|
|
58
|
+
)
|
|
59
|
+
);
|
|
61
60
|
|
|
62
|
-
|
|
61
|
+
const lastItem = items[items.length - 1];
|
|
63
62
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const items = [...coStream.itemsBy(accountID)].map((item) => queryContext.defineSubqueryPropertiesIn(
|
|
63
|
+
return [
|
|
64
|
+
sessionID,
|
|
65
|
+
{
|
|
66
|
+
get last() {
|
|
67
|
+
return lastItem?.value;
|
|
68
|
+
},
|
|
69
|
+
get by() {
|
|
70
|
+
return lastItem?.by;
|
|
71
|
+
},
|
|
72
|
+
tx: lastItem?.tx,
|
|
73
|
+
at: lastItem?.at,
|
|
74
|
+
all: items,
|
|
75
|
+
} satisfies QueriedCoStreamEntry<S["_item"]>,
|
|
76
|
+
];
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
this.perAccount = [...coStream.accounts()].map((accountID) => {
|
|
80
|
+
const items = [...coStream.itemsBy(accountID)].map((item) =>
|
|
81
|
+
queryContext.defineSubqueryPropertiesIn(
|
|
84
82
|
{
|
|
85
83
|
tx: item.tx,
|
|
86
84
|
at: new Date(item.at),
|
|
@@ -98,30 +96,32 @@ export class QueriedCoStream<S extends CoStream> {
|
|
|
98
96
|
},
|
|
99
97
|
},
|
|
100
98
|
[coStream.id]
|
|
101
|
-
)
|
|
99
|
+
)
|
|
100
|
+
);
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
const lastItem = items[items.length - 1];
|
|
104
103
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
104
|
+
const entry = {
|
|
105
|
+
get last() {
|
|
106
|
+
return lastItem?.value;
|
|
107
|
+
},
|
|
108
|
+
get by() {
|
|
109
|
+
return lastItem?.by;
|
|
110
|
+
},
|
|
111
|
+
tx: lastItem?.tx,
|
|
112
|
+
at: lastItem?.at,
|
|
113
|
+
all: items,
|
|
114
|
+
} satisfies QueriedCoStreamEntry<S["_item"]>;
|
|
115
|
+
|
|
116
|
+
if (accountID === queryContext.node.account.id) {
|
|
117
|
+
this.me = entry;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return [
|
|
121
|
+
accountID,
|
|
122
|
+
entry
|
|
123
|
+
];
|
|
124
|
+
});
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
get meta(): S["meta"] {
|
|
@@ -136,13 +136,9 @@ export class QueriedCoStream<S extends CoStream> {
|
|
|
136
136
|
return this.coStream.core;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
me?:
|
|
140
|
-
perAccount:
|
|
141
|
-
|
|
142
|
-
};
|
|
143
|
-
perSession: {
|
|
144
|
-
[session: SessionID]: QueriedCoStreamItems<S["_item"]>;
|
|
145
|
-
};
|
|
139
|
+
me?: QueriedCoStreamEntry<S["_item"]>;
|
|
140
|
+
perAccount: [account: AccountID, items: QueriedCoStreamEntry<S["_item"]>][];
|
|
141
|
+
perSession: [session: SessionID, items: QueriedCoStreamEntry<S["_item"]>][];
|
|
146
142
|
|
|
147
143
|
push(item: S["_item"], privacy?: "private" | "trusting"): S {
|
|
148
144
|
return this.coStream.push(item, privacy);
|
|
@@ -13,8 +13,9 @@ beforeEach(async () => {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
test("Queries with maps work", async () => {
|
|
16
|
-
const { node, accountID } =
|
|
17
|
-
|
|
16
|
+
const { node, accountID } = LocalNode.withNewlyCreatedAccount({
|
|
17
|
+
name: "Hermes Puggington",
|
|
18
|
+
});
|
|
18
19
|
|
|
19
20
|
const group = node.createGroup();
|
|
20
21
|
|
|
@@ -102,8 +103,9 @@ test("Queries with maps work", async () => {
|
|
|
102
103
|
});
|
|
103
104
|
|
|
104
105
|
test("Queries with lists work", () => {
|
|
105
|
-
const { node, accountID } =
|
|
106
|
-
|
|
106
|
+
const { node, accountID } = LocalNode.withNewlyCreatedAccount({
|
|
107
|
+
name: "Hermes Puggington",
|
|
108
|
+
});
|
|
107
109
|
|
|
108
110
|
const group = node.createGroup();
|
|
109
111
|
|
|
@@ -159,7 +161,9 @@ test("Queries with lists work", () => {
|
|
|
159
161
|
});
|
|
160
162
|
|
|
161
163
|
test("List of nested maps works", () => {
|
|
162
|
-
const { node } = LocalNode.withNewlyCreatedAccount({
|
|
164
|
+
const { node } = LocalNode.withNewlyCreatedAccount({
|
|
165
|
+
name: "Hermes Puggington",
|
|
166
|
+
});
|
|
163
167
|
|
|
164
168
|
const group = node.createGroup();
|
|
165
169
|
|
|
@@ -190,7 +194,9 @@ test("List of nested maps works", () => {
|
|
|
190
194
|
});
|
|
191
195
|
|
|
192
196
|
test("Can call .map on a quieried coList", async () => {
|
|
193
|
-
const { node } = LocalNode.withNewlyCreatedAccount({
|
|
197
|
+
const { node } = LocalNode.withNewlyCreatedAccount({
|
|
198
|
+
name: "Hermes Puggington",
|
|
199
|
+
});
|
|
194
200
|
|
|
195
201
|
const group = node.createGroup();
|
|
196
202
|
|
|
@@ -220,8 +226,9 @@ test("Can call .map on a quieried coList", async () => {
|
|
|
220
226
|
});
|
|
221
227
|
|
|
222
228
|
test("Queries with streams work", () => {
|
|
223
|
-
const { node, accountID } =
|
|
224
|
-
|
|
229
|
+
const { node, accountID } = LocalNode.withNewlyCreatedAccount({
|
|
230
|
+
name: "Hermes Puggington",
|
|
231
|
+
});
|
|
225
232
|
|
|
226
233
|
const group = node.createGroup();
|
|
227
234
|
|
|
@@ -239,57 +246,109 @@ test("Queries with streams work", () => {
|
|
|
239
246
|
expect(queriedStream.group.id).toBe(group.id);
|
|
240
247
|
expect(queriedStream.meta).toBe(null);
|
|
241
248
|
|
|
242
|
-
expect(
|
|
243
|
-
|
|
244
|
-
);
|
|
245
|
-
expect(queriedStream.perSession[node.currentSessionID].all[0].value).toEqual("hello");
|
|
246
|
-
expect(queriedStream.perSession[node.currentSessionID].all[0].at).toEqual(new Date(
|
|
247
|
-
stream.items[
|
|
249
|
+
expect(
|
|
250
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
248
251
|
node.currentSessionID
|
|
249
|
-
]
|
|
250
|
-
));
|
|
251
|
-
expect(
|
|
252
|
-
|
|
253
|
-
stream.items[
|
|
252
|
+
].last
|
|
253
|
+
).toEqual("world");
|
|
254
|
+
expect(
|
|
255
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
254
256
|
node.currentSessionID
|
|
255
|
-
][
|
|
256
|
-
));
|
|
257
|
-
expect(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
257
|
+
].all[0].value
|
|
258
|
+
).toEqual("hello");
|
|
259
|
+
expect(
|
|
260
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
261
|
+
node.currentSessionID
|
|
262
|
+
].all[0].at
|
|
263
|
+
).toEqual(
|
|
264
|
+
new Date(stream.items[node.currentSessionID][0].madeAt)
|
|
263
265
|
);
|
|
264
|
-
expect(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
266
|
+
expect(
|
|
267
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
268
|
+
node.currentSessionID
|
|
269
|
+
].all[1].value
|
|
270
|
+
).toEqual("world");
|
|
271
|
+
expect(
|
|
272
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
273
|
+
node.currentSessionID
|
|
274
|
+
].all[1].at
|
|
275
|
+
).toEqual(
|
|
276
|
+
new Date(stream.items[node.currentSessionID][1].madeAt)
|
|
269
277
|
);
|
|
270
|
-
expect(
|
|
271
|
-
|
|
272
|
-
stream.items[
|
|
278
|
+
expect(
|
|
279
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
273
280
|
node.currentSessionID
|
|
274
|
-
]
|
|
275
|
-
));
|
|
276
|
-
expect(
|
|
277
|
-
|
|
278
|
-
stream.items[
|
|
281
|
+
].by?.id
|
|
282
|
+
).toEqual(accountID);
|
|
283
|
+
expect(
|
|
284
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
279
285
|
node.currentSessionID
|
|
280
|
-
]
|
|
281
|
-
));
|
|
282
|
-
expect(
|
|
283
|
-
|
|
284
|
-
|
|
286
|
+
].by?.profile?.id
|
|
287
|
+
).toEqual(node.expectProfileLoaded(accountID).id);
|
|
288
|
+
expect(
|
|
289
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
290
|
+
node.currentSessionID
|
|
291
|
+
].by?.profile?.name
|
|
292
|
+
).toEqual("Hermes Puggington");
|
|
293
|
+
expect(
|
|
294
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
295
|
+
node.currentSessionID
|
|
296
|
+
].by?.isMe
|
|
297
|
+
).toBe(true);
|
|
298
|
+
expect(
|
|
299
|
+
Object.fromEntries(queriedStream.perSession)[
|
|
300
|
+
node.currentSessionID
|
|
301
|
+
].at
|
|
302
|
+
).toBeInstanceOf(Date);
|
|
303
|
+
|
|
304
|
+
expect(
|
|
305
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
306
|
+
.last
|
|
307
|
+
).toEqual("world");
|
|
308
|
+
expect(
|
|
309
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
310
|
+
.all[0].value
|
|
311
|
+
).toEqual("hello");
|
|
312
|
+
expect(
|
|
313
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
314
|
+
.all[0].at
|
|
315
|
+
).toEqual(
|
|
316
|
+
new Date(stream.items[node.currentSessionID][0].madeAt)
|
|
285
317
|
);
|
|
286
|
-
expect(
|
|
287
|
-
|
|
318
|
+
expect(
|
|
319
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
320
|
+
.all[1].value
|
|
321
|
+
).toEqual("world");
|
|
322
|
+
expect(
|
|
323
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
324
|
+
.all[1].at
|
|
325
|
+
).toEqual(
|
|
326
|
+
new Date(stream.items[node.currentSessionID][1].madeAt)
|
|
327
|
+
);
|
|
328
|
+
expect(
|
|
329
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
330
|
+
.by?.id
|
|
331
|
+
).toEqual(accountID);
|
|
332
|
+
expect(
|
|
333
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
334
|
+
.by?.profile?.id
|
|
335
|
+
).toEqual(node.expectProfileLoaded(accountID).id);
|
|
336
|
+
expect(
|
|
337
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
338
|
+
.by?.profile?.name
|
|
339
|
+
).toEqual("Hermes Puggington");
|
|
340
|
+
expect(
|
|
341
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
342
|
+
.by?.isMe
|
|
343
|
+
).toBe(true);
|
|
344
|
+
expect(
|
|
345
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
346
|
+
.at
|
|
347
|
+
).toBeInstanceOf(Date);
|
|
348
|
+
|
|
349
|
+
expect(queriedStream.me).toEqual(
|
|
350
|
+
Object.fromEntries(queriedStream.perAccount)[accountID]
|
|
288
351
|
);
|
|
289
|
-
expect(queriedStream.perAccount[accountID].by?.isMe).toBe(true);
|
|
290
|
-
expect(queriedStream.perAccount[accountID].at).toBeInstanceOf(Date);
|
|
291
|
-
|
|
292
|
-
expect(queriedStream.me).toEqual(queriedStream.perAccount[accountID]);
|
|
293
352
|
// console.log("final update", queriedStream);
|
|
294
353
|
resolve();
|
|
295
354
|
unsubQuery();
|
|
@@ -305,7 +364,9 @@ test("Queries with streams work", () => {
|
|
|
305
364
|
});
|
|
306
365
|
|
|
307
366
|
test("Streams of nested maps work", () => {
|
|
308
|
-
const { node } = LocalNode.withNewlyCreatedAccount({
|
|
367
|
+
const { node } = LocalNode.withNewlyCreatedAccount({
|
|
368
|
+
name: "Hermes Puggington",
|
|
369
|
+
});
|
|
309
370
|
|
|
310
371
|
const group = node.createGroup();
|
|
311
372
|
|