jazz-tools 0.7.35 → 0.8.0
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 +2 -2
- package/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +23 -1
- package/dist/coValues/account.js +27 -36
- package/dist/coValues/account.js.map +1 -1
- package/dist/coValues/coList.js +19 -21
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.js +29 -23
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coStream.js +26 -21
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/coValues/extensions/imageDef.js +3 -8
- package/dist/coValues/extensions/imageDef.js.map +1 -1
- package/dist/coValues/group.js +20 -23
- package/dist/coValues/group.js.map +1 -1
- package/dist/coValues/interfaces.js +5 -2
- package/dist/coValues/interfaces.js.map +1 -1
- package/dist/implementation/createContext.js +144 -0
- package/dist/implementation/createContext.js.map +1 -0
- package/dist/implementation/refs.js +11 -2
- package/dist/implementation/refs.js.map +1 -1
- package/dist/implementation/subscriptionScope.js +12 -8
- package/dist/implementation/subscriptionScope.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.js +1 -0
- package/dist/internal.js.map +1 -1
- package/dist/tests/coList.test.js +23 -15
- package/dist/tests/coList.test.js.map +1 -1
- package/dist/tests/coMap.test.js +89 -139
- package/dist/tests/coMap.test.js.map +1 -1
- package/dist/tests/coStream.test.js +26 -22
- package/dist/tests/coStream.test.js.map +1 -1
- package/dist/tests/deepLoading.test.js +21 -34
- package/dist/tests/deepLoading.test.js.map +1 -1
- package/dist/tests/groupsAndAccounts.test.js +8 -22
- package/dist/tests/groupsAndAccounts.test.js.map +1 -1
- package/package.json +3 -3
- package/src/coValues/account.ts +14 -31
- package/src/coValues/coList.ts +9 -5
- package/src/coValues/coMap.ts +40 -9
- package/src/coValues/coStream.ts +16 -7
- package/src/coValues/group.ts +2 -2
- package/src/coValues/interfaces.ts +12 -8
- package/src/implementation/createContext.ts +268 -0
- package/src/implementation/refs.ts +13 -6
- package/src/implementation/subscriptionScope.ts +28 -25
- package/src/index.ts +12 -1
- package/src/internal.ts +2 -0
- package/src/tests/coList.test.ts +30 -14
- package/src/tests/coMap.test.ts +56 -27
- package/src/tests/coStream.test.ts +27 -21
- package/src/tests/deepLoading.test.ts +15 -11
- package/tsconfig.json +1 -1
package/src/tests/coMap.test.ts
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import { expect, describe, test, expectTypeOf } from "vitest";
|
2
2
|
import { connectedPeers } from "cojson/src/streamUtils.js";
|
3
|
-
import { newRandomSessionID } from "cojson/src/coValueCore.js";
|
4
3
|
import {
|
5
4
|
Account,
|
6
5
|
Encoders,
|
@@ -9,32 +8,35 @@ import {
|
|
9
8
|
WasmCrypto,
|
10
9
|
isControlledAccount,
|
11
10
|
cojsonInternals,
|
11
|
+
createJazzContext,
|
12
|
+
fixedCredentialsAuth,
|
12
13
|
} from "../index.js";
|
14
|
+
import { Group, randomSessionProvider } from "../internal.js";
|
13
15
|
|
14
16
|
const Crypto = await WasmCrypto.create();
|
15
17
|
|
18
|
+
class TestMap extends CoMap {
|
19
|
+
color = co.string;
|
20
|
+
_height = co.number;
|
21
|
+
birthday = co.encoded(Encoders.Date);
|
22
|
+
name? = co.string;
|
23
|
+
nullable = co.optional.encoded<string | undefined>({
|
24
|
+
encode: (value: string | undefined) => value || null,
|
25
|
+
decode: (value: unknown) => (value as string) || undefined,
|
26
|
+
});
|
27
|
+
optionalDate = co.optional.encoded(Encoders.Date);
|
28
|
+
|
29
|
+
get roughColor() {
|
30
|
+
return this.color + "ish";
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
16
34
|
describe("Simple CoMap operations", async () => {
|
17
35
|
const me = await Account.create({
|
18
36
|
creationProps: { name: "Hermes Puggington" },
|
19
37
|
crypto: Crypto,
|
20
38
|
});
|
21
39
|
|
22
|
-
class TestMap extends CoMap {
|
23
|
-
color = co.string;
|
24
|
-
_height = co.number;
|
25
|
-
birthday = co.encoded(Encoders.Date);
|
26
|
-
name? = co.string;
|
27
|
-
nullable = co.optional.encoded<string | undefined>({
|
28
|
-
encode: (value: string | undefined) => value || null,
|
29
|
-
decode: (value: unknown) => (value as string) || undefined,
|
30
|
-
});
|
31
|
-
optionalDate = co.optional.encoded(Encoders.Date);
|
32
|
-
|
33
|
-
get roughColor() {
|
34
|
-
return this.color + "ish";
|
35
|
-
}
|
36
|
-
}
|
37
|
-
|
38
40
|
console.log("TestMap schema", TestMap.prototype._schema);
|
39
41
|
|
40
42
|
const birthday = new Date();
|
@@ -297,12 +299,13 @@ describe("CoMap resolution", async () => {
|
|
297
299
|
throw "me is not a controlled account";
|
298
300
|
}
|
299
301
|
me._raw.core.node.syncManager.addPeer(secondPeer);
|
300
|
-
const meOnSecondPeer = await
|
301
|
-
|
302
|
-
|
302
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
303
|
+
auth: fixedCredentialsAuth({
|
304
|
+
accountID: me.id,
|
305
|
+
secret: me._raw.agentSecret,
|
306
|
+
}),
|
307
|
+
sessionProvider: randomSessionProvider,
|
303
308
|
peersToLoadFrom: [initialAsPeer],
|
304
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
305
|
-
sessionID: newRandomSessionID(me.id as any),
|
306
309
|
crypto: Crypto,
|
307
310
|
});
|
308
311
|
|
@@ -371,12 +374,13 @@ describe("CoMap resolution", async () => {
|
|
371
374
|
throw "me is not a controlled account";
|
372
375
|
}
|
373
376
|
me._raw.core.node.syncManager.addPeer(secondAsPeer);
|
374
|
-
const meOnSecondPeer = await
|
375
|
-
|
376
|
-
|
377
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
378
|
+
auth: fixedCredentialsAuth({
|
379
|
+
accountID: me.id,
|
380
|
+
secret: me._raw.agentSecret,
|
381
|
+
}),
|
382
|
+
sessionProvider: randomSessionProvider,
|
377
383
|
peersToLoadFrom: [initialAsPeer],
|
378
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
379
|
-
sessionID: newRandomSessionID(me.id as any),
|
380
384
|
crypto: Crypto,
|
381
385
|
});
|
382
386
|
|
@@ -872,3 +876,28 @@ describe("CoMap Typescript validation", async () => {
|
|
872
876
|
expectTypeOf(map.required).toBeNullable();
|
873
877
|
});
|
874
878
|
});
|
879
|
+
|
880
|
+
describe("Creating and finding unique CoMaps", async () => {
|
881
|
+
test("Creating and finding unique CoMaps", async () => {
|
882
|
+
const me = await Account.create({
|
883
|
+
creationProps: { name: "Tester McTesterson" },
|
884
|
+
crypto: Crypto,
|
885
|
+
});
|
886
|
+
|
887
|
+
const group = await Group.create({
|
888
|
+
owner: me,
|
889
|
+
});
|
890
|
+
|
891
|
+
const alice = TestMap.create({
|
892
|
+
name: "Alice",
|
893
|
+
_height: 100,
|
894
|
+
birthday: new Date("1990-01-01"),
|
895
|
+
color: "red",
|
896
|
+
|
897
|
+
}, { owner: group, unique: { name: "Alice" } });
|
898
|
+
|
899
|
+
const foundAlice = TestMap.findUnique({ name: "Alice" }, group.id, me);
|
900
|
+
|
901
|
+
expect(foundAlice).toEqual(alice.id);
|
902
|
+
});
|
903
|
+
});
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { expect, describe, test } from "vitest";
|
2
2
|
import { connectedPeers } from "cojson/src/streamUtils.js";
|
3
|
-
import { newRandomSessionID } from "cojson/src/coValueCore.js";
|
4
3
|
import {
|
5
4
|
BinaryCoStream,
|
6
5
|
ID,
|
@@ -10,7 +9,10 @@ import {
|
|
10
9
|
WasmCrypto,
|
11
10
|
isControlledAccount,
|
12
11
|
cojsonInternals,
|
12
|
+
createJazzContext,
|
13
|
+
fixedCredentialsAuth,
|
13
14
|
} from "../index.js";
|
15
|
+
import { randomSessionProvider } from "../internal.js";
|
14
16
|
|
15
17
|
const Crypto = await WasmCrypto.create();
|
16
18
|
|
@@ -95,12 +97,13 @@ describe("CoStream resolution", async () => {
|
|
95
97
|
throw "me is not a controlled account";
|
96
98
|
}
|
97
99
|
me._raw.core.node.syncManager.addPeer(secondPeer);
|
98
|
-
const meOnSecondPeer = await
|
99
|
-
|
100
|
-
|
100
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
101
|
+
auth: fixedCredentialsAuth({
|
102
|
+
accountID: me.id,
|
103
|
+
secret: me._raw.agentSecret,
|
104
|
+
}),
|
105
|
+
sessionProvider: randomSessionProvider,
|
101
106
|
peersToLoadFrom: [initialAsPeer],
|
102
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
103
|
-
sessionID: newRandomSessionID(me.id as any),
|
104
107
|
crypto: Crypto,
|
105
108
|
});
|
106
109
|
|
@@ -191,12 +194,13 @@ describe("CoStream resolution", async () => {
|
|
191
194
|
if (!isControlledAccount(me)) {
|
192
195
|
throw "me is not a controlled account";
|
193
196
|
}
|
194
|
-
const meOnSecondPeer = await
|
195
|
-
|
196
|
-
|
197
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
198
|
+
auth: fixedCredentialsAuth({
|
199
|
+
accountID: me.id,
|
200
|
+
secret: me._raw.agentSecret,
|
201
|
+
}),
|
202
|
+
sessionProvider: randomSessionProvider,
|
197
203
|
peersToLoadFrom: [initialAsPeer],
|
198
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
199
|
-
sessionID: newRandomSessionID(me.id as any),
|
200
204
|
crypto: Crypto,
|
201
205
|
});
|
202
206
|
|
@@ -334,12 +338,13 @@ describe("BinaryCoStream loading & Subscription", async () => {
|
|
334
338
|
throw "me is not a controlled account";
|
335
339
|
}
|
336
340
|
me._raw.core.node.syncManager.addPeer(secondAsPeer);
|
337
|
-
const meOnSecondPeer = await
|
338
|
-
|
339
|
-
|
341
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
342
|
+
auth: fixedCredentialsAuth({
|
343
|
+
accountID: me.id,
|
344
|
+
secret: me._raw.agentSecret,
|
345
|
+
}),
|
346
|
+
sessionProvider: randomSessionProvider,
|
340
347
|
peersToLoadFrom: [initialAsPeer],
|
341
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
342
|
-
sessionID: newRandomSessionID(me.id as any),
|
343
348
|
crypto: Crypto,
|
344
349
|
});
|
345
350
|
|
@@ -369,12 +374,13 @@ describe("BinaryCoStream loading & Subscription", async () => {
|
|
369
374
|
if (!isControlledAccount(me)) {
|
370
375
|
throw "me is not a controlled account";
|
371
376
|
}
|
372
|
-
const meOnSecondPeer = await
|
373
|
-
|
374
|
-
|
377
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
378
|
+
auth: fixedCredentialsAuth({
|
379
|
+
accountID: me.id,
|
380
|
+
secret: me._raw.agentSecret,
|
381
|
+
}),
|
382
|
+
sessionProvider: randomSessionProvider,
|
375
383
|
peersToLoadFrom: [initialAsPeer],
|
376
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
377
|
-
sessionID: newRandomSessionID(me.id as any),
|
378
384
|
crypto: Crypto,
|
379
385
|
});
|
380
386
|
|
@@ -12,8 +12,10 @@ import {
|
|
12
12
|
Profile,
|
13
13
|
isControlledAccount,
|
14
14
|
ID,
|
15
|
+
createJazzContext,
|
16
|
+
fixedCredentialsAuth,
|
15
17
|
} from "../index.js";
|
16
|
-
import {
|
18
|
+
import { randomSessionProvider } from "../internal.js";
|
17
19
|
|
18
20
|
class TestMap extends CoMap {
|
19
21
|
list = co.ref(TestList);
|
@@ -47,12 +49,13 @@ describe("Deep loading with depth arg", async () => {
|
|
47
49
|
throw "me is not a controlled account";
|
48
50
|
}
|
49
51
|
me._raw.core.node.syncManager.addPeer(secondPeer);
|
50
|
-
const meOnSecondPeer = await
|
51
|
-
|
52
|
-
|
52
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
53
|
+
auth: fixedCredentialsAuth({
|
54
|
+
accountID: me.id,
|
55
|
+
secret: me._raw.agentSecret,
|
56
|
+
}),
|
57
|
+
sessionProvider: randomSessionProvider,
|
53
58
|
peersToLoadFrom: [initialAsPeer],
|
54
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
55
|
-
sessionID: newRandomSessionID(me.id as any),
|
56
59
|
crypto: Crypto,
|
57
60
|
});
|
58
61
|
|
@@ -263,12 +266,13 @@ test("Deep loading a record-like coMap", async () => {
|
|
263
266
|
}
|
264
267
|
|
265
268
|
me._raw.core.node.syncManager.addPeer(secondPeer);
|
266
|
-
const meOnSecondPeer = await
|
267
|
-
|
268
|
-
|
269
|
+
const { account: meOnSecondPeer } = await createJazzContext({
|
270
|
+
auth: fixedCredentialsAuth({
|
271
|
+
accountID: me.id,
|
272
|
+
secret: me._raw.agentSecret,
|
273
|
+
}),
|
274
|
+
sessionProvider: randomSessionProvider,
|
269
275
|
peersToLoadFrom: [initialAsPeer],
|
270
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
271
|
-
sessionID: newRandomSessionID(me.id as any),
|
272
276
|
crypto: Crypto,
|
273
277
|
});
|
274
278
|
|