jazz-tools 0.7.0-alpha.4 → 0.7.0-alpha.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. package/.eslintrc.cjs +3 -10
  2. package/.prettierrc.js +9 -0
  3. package/.turbo/turbo-build.log +3 -19
  4. package/.turbo/turbo-lint.log +4 -0
  5. package/.turbo/turbo-test.log +140 -0
  6. package/CHANGELOG.md +243 -0
  7. package/README.md +10 -2
  8. package/dist/coValues/account.js +104 -50
  9. package/dist/coValues/account.js.map +1 -1
  10. package/dist/coValues/coList.js +165 -112
  11. package/dist/coValues/coList.js.map +1 -1
  12. package/dist/coValues/coMap.js +243 -163
  13. package/dist/coValues/coMap.js.map +1 -1
  14. package/dist/coValues/coStream.js +256 -73
  15. package/dist/coValues/coStream.js.map +1 -1
  16. package/dist/coValues/deepLoading.js +57 -0
  17. package/dist/coValues/deepLoading.js.map +1 -0
  18. package/dist/coValues/extensions/imageDef.js +14 -8
  19. package/dist/coValues/extensions/imageDef.js.map +1 -1
  20. package/dist/coValues/group.js +49 -38
  21. package/dist/coValues/group.js.map +1 -1
  22. package/dist/coValues/interfaces.js +66 -26
  23. package/dist/coValues/interfaces.js.map +1 -1
  24. package/dist/implementation/devtoolsFormatters.js +114 -0
  25. package/dist/implementation/devtoolsFormatters.js.map +1 -0
  26. package/dist/implementation/refs.js +60 -19
  27. package/dist/implementation/refs.js.map +1 -1
  28. package/dist/implementation/schema.js +44 -1
  29. package/dist/implementation/schema.js.map +1 -1
  30. package/dist/implementation/subscriptionScope.js +19 -1
  31. package/dist/implementation/subscriptionScope.js.map +1 -1
  32. package/dist/implementation/symbols.js +5 -0
  33. package/dist/implementation/symbols.js.map +1 -0
  34. package/dist/index.js +4 -5
  35. package/dist/index.js.map +1 -1
  36. package/dist/internal.js +4 -1
  37. package/dist/internal.js.map +1 -1
  38. package/dist/tests/coList.test.js +51 -52
  39. package/dist/tests/coList.test.js.map +1 -1
  40. package/dist/tests/coMap.test.js +196 -75
  41. package/dist/tests/coMap.test.js.map +1 -1
  42. package/dist/tests/coStream.test.js +95 -85
  43. package/dist/tests/coStream.test.js.map +1 -1
  44. package/dist/tests/deepLoading.test.js +188 -0
  45. package/dist/tests/deepLoading.test.js.map +1 -0
  46. package/dist/tests/groupsAndAccounts.test.js +83 -0
  47. package/dist/tests/groupsAndAccounts.test.js.map +1 -0
  48. package/package.json +17 -9
  49. package/src/coValues/account.ts +183 -152
  50. package/src/coValues/coList.ts +220 -173
  51. package/src/coValues/coMap.ts +322 -312
  52. package/src/coValues/coStream.ts +397 -135
  53. package/src/coValues/deepLoading.ts +215 -0
  54. package/src/coValues/extensions/imageDef.ts +16 -17
  55. package/src/coValues/group.ts +95 -111
  56. package/src/coValues/interfaces.ts +217 -115
  57. package/src/implementation/devtoolsFormatters.ts +110 -0
  58. package/src/implementation/inspect.ts +1 -1
  59. package/src/implementation/refs.ts +91 -38
  60. package/src/implementation/schema.ts +87 -46
  61. package/src/implementation/subscriptionScope.ts +44 -12
  62. package/src/implementation/symbols.ts +11 -0
  63. package/src/index.ts +13 -9
  64. package/src/internal.ts +6 -2
  65. package/src/tests/coList.test.ts +67 -66
  66. package/src/tests/coMap.test.ts +226 -123
  67. package/src/tests/coStream.test.ts +141 -131
  68. package/src/tests/deepLoading.test.ts +301 -0
  69. package/src/tests/groupsAndAccounts.test.ts +91 -0
@@ -1,47 +1,43 @@
1
- import { expect, describe, test, beforeEach } from "vitest";
2
- import { webcrypto } from "node:crypto";
1
+ import { expect, describe, test } from "vitest";
3
2
  import { connectedPeers } from "cojson/src/streamUtils.js";
4
3
  import { newRandomSessionID } from "cojson/src/coValueCore.js";
5
4
  import { Effect, Queue } from "effect";
6
- import { Account, jazzReady, Encoders, indexSignature, CoMap } from "..";
7
- if (!("crypto" in globalThis)) {
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- globalThis.crypto = webcrypto;
10
- }
11
- beforeEach(async () => {
12
- await jazzReady;
13
- });
5
+ import { Account, Encoders, CoMap, co, WasmCrypto, isControlledAccount } from "../index.js";
6
+ const Crypto = await WasmCrypto.create();
14
7
  describe("Simple CoMap operations", async () => {
15
8
  const me = await Account.create({
16
- name: "Hermes Puggington",
9
+ creationProps: { name: "Hermes Puggington" },
10
+ crypto: Crypto,
17
11
  });
18
12
  class TestMap extends CoMap {
19
- get _roughColor() {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.color = co.string;
16
+ this._height = co.number;
17
+ this.birthday = co.encoded(Encoders.Date);
18
+ this.name = co.string;
19
+ }
20
+ get roughColor() {
20
21
  return this.color + "ish";
21
22
  }
22
23
  }
23
- TestMap.encoding({
24
- color: "json",
25
- height: "json",
26
- birthday: { encoded: Encoders.Date },
27
- name: "json",
28
- });
29
- console.log("TestMap schema", TestMap.prototype._encoding);
24
+ console.log("TestMap schema", TestMap.prototype._schema);
30
25
  const birthday = new Date();
31
- const map = new TestMap({
26
+ const map = TestMap.create({
32
27
  color: "red",
33
- height: 10,
28
+ _height: 10,
34
29
  birthday: birthday,
35
30
  }, { owner: me });
36
31
  test("Construction", () => {
37
32
  expect(map.color).toEqual("red");
38
- expect(map._roughColor).toEqual("redish");
39
- expect(map.height).toEqual(10);
33
+ expect(map.roughColor).toEqual("redish");
34
+ expect(map._height).toEqual(10);
40
35
  expect(map.birthday).toEqual(birthday);
41
36
  expect(map._raw.get("birthday")).toEqual(birthday.toISOString());
37
+ expect(Object.keys(map)).toEqual(["color", "_height", "birthday"]);
42
38
  });
43
39
  describe("Mutation", () => {
44
- test("assignment", () => {
40
+ test("assignment & deletion", () => {
45
41
  map.color = "blue";
46
42
  expect(map.color).toEqual("blue");
47
43
  expect(map._raw.get("color")).toEqual("blue");
@@ -49,28 +45,33 @@ describe("Simple CoMap operations", async () => {
49
45
  map.birthday = newBirthday;
50
46
  expect(map.birthday).toEqual(newBirthday);
51
47
  expect(map._raw.get("birthday")).toEqual(newBirthday.toISOString());
52
- Object.assign(map, { color: "green", height: 20 });
48
+ Object.assign(map, { color: "green", _height: 20 });
53
49
  expect(map.color).toEqual("green");
54
50
  expect(map._raw.get("color")).toEqual("green");
55
- expect(map.height).toEqual(20);
56
- expect(map._raw.get("height")).toEqual(20);
51
+ expect(map._height).toEqual(20);
52
+ expect(map._raw.get("_height")).toEqual(20);
57
53
  map.name = "Secret name";
58
54
  expect(map.name).toEqual("Secret name");
59
55
  map.name = undefined;
60
56
  expect(map.name).toEqual(undefined);
57
+ expect(Object.keys(map)).toContain("name");
58
+ delete map.name;
59
+ expect(map.name).toEqual(undefined);
60
+ expect(Object.keys(map)).not.toContain("name");
61
61
  });
62
62
  });
63
63
  class RecursiveMap extends CoMap {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.name = co.string;
67
+ this.next = co.ref(RecursiveMap);
68
+ }
64
69
  }
65
- RecursiveMap.encoding({
66
- name: "json",
67
- next: { ref: () => RecursiveMap },
68
- });
69
- const recursiveMap = new RecursiveMap({
70
+ const recursiveMap = RecursiveMap.create({
70
71
  name: "first",
71
- next: new RecursiveMap({
72
+ next: RecursiveMap.create({
72
73
  name: "second",
73
- next: new RecursiveMap({
74
+ next: RecursiveMap.create({
74
75
  name: "third",
75
76
  }, { owner: me }),
76
77
  }, { owner: me }),
@@ -82,42 +83,104 @@ describe("Simple CoMap operations", async () => {
82
83
  expect(recursiveMap.next?.next?.name).toEqual("third");
83
84
  });
84
85
  });
86
+ class MapWithEnumOfMaps extends CoMap {
87
+ constructor() {
88
+ super(...arguments);
89
+ this.name = co.string;
90
+ this.child = co.ref((raw) => raw.get("type") === "a" ? ChildA : ChildB);
91
+ }
92
+ }
93
+ class ChildA extends CoMap {
94
+ constructor() {
95
+ super(...arguments);
96
+ this.type = co.literal("a");
97
+ this.value = co.number;
98
+ }
99
+ }
100
+ class ChildB extends CoMap {
101
+ constructor() {
102
+ super(...arguments);
103
+ this.type = co.literal("b");
104
+ this.value = co.string;
105
+ }
106
+ }
107
+ const mapWithEnum = MapWithEnumOfMaps.create({
108
+ name: "enum",
109
+ child: ChildA.create({
110
+ type: "a",
111
+ value: 5,
112
+ }, { owner: me }),
113
+ }, { owner: me });
114
+ test("Enum of maps", () => {
115
+ expect(mapWithEnum.name).toEqual("enum");
116
+ expect(mapWithEnum.child?.type).toEqual("a");
117
+ expect(mapWithEnum.child?.value).toEqual(5);
118
+ expect(mapWithEnum.child?.id).toBeDefined();
119
+ });
120
+ class SuperClassMap extends CoMap {
121
+ constructor() {
122
+ super(...arguments);
123
+ this.name = co.string;
124
+ }
125
+ }
126
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
127
+ class SubClassMap extends SuperClassMap {
128
+ constructor() {
129
+ super(...arguments);
130
+ this.name = co.literal("specificString");
131
+ this.value = co.number;
132
+ this.extra = co.ref(TestMap);
133
+ }
134
+ }
135
+ class GenericMapWithLoose extends CoMap {
136
+ constructor() {
137
+ super(...arguments);
138
+ this.name = co.json();
139
+ }
140
+ }
141
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
142
+ const loose = {};
85
143
  });
86
144
  describe("CoMap resolution", async () => {
145
+ var _a;
87
146
  class TwiceNestedMap extends CoMap {
147
+ constructor() {
148
+ super(...arguments);
149
+ this.taste = co.string;
150
+ }
88
151
  }
89
- TwiceNestedMap.encoding({
90
- taste: "json",
91
- });
92
152
  class NestedMap extends CoMap {
153
+ constructor() {
154
+ super(...arguments);
155
+ this.name = co.string;
156
+ this.twiceNested = co.ref(TwiceNestedMap);
157
+ }
93
158
  get _fancyName() {
94
159
  return "Sir " + this.name;
95
160
  }
96
161
  }
97
- NestedMap.encoding({
98
- name: "json",
99
- twiceNested: { ref: () => TwiceNestedMap },
100
- });
101
162
  class TestMap extends CoMap {
163
+ constructor() {
164
+ super(...arguments);
165
+ this.color = co.string;
166
+ this.height = co.number;
167
+ this.nested = co.ref(NestedMap);
168
+ }
102
169
  get _roughColor() {
103
170
  return this.color + "ish";
104
171
  }
105
172
  }
106
- TestMap.encoding({
107
- color: "json",
108
- height: "json",
109
- nested: { ref: () => NestedMap },
110
- });
111
173
  const initNodeAndMap = async () => {
112
174
  const me = await Account.create({
113
- name: "Hermes Puggington",
175
+ creationProps: { name: "Hermes Puggington" },
176
+ crypto: Crypto,
114
177
  });
115
- const map = new TestMap({
178
+ const map = TestMap.create({
116
179
  color: "red",
117
180
  height: 10,
118
- nested: new NestedMap({
181
+ nested: NestedMap.create({
119
182
  name: "nested",
120
- twiceNested: new TwiceNestedMap({ taste: "sour" }, { owner: me }),
183
+ twiceNested: TwiceNestedMap.create({ taste: "sour" }, { owner: me }),
121
184
  }, { owner: me }),
122
185
  }, { owner: me });
123
186
  return { me, map };
@@ -136,32 +199,35 @@ describe("CoMap resolution", async () => {
136
199
  test("Loading and availability", async () => {
137
200
  const { me, map } = await initNodeAndMap();
138
201
  const [initialAsPeer, secondPeer] = connectedPeers("initial", "second", { peer1role: "server", peer2role: "client" });
202
+ if (!isControlledAccount(me)) {
203
+ throw ("me is not a controlled account");
204
+ }
139
205
  me._raw.core.node.syncManager.addPeer(secondPeer);
140
206
  const meOnSecondPeer = await Account.become({
141
207
  accountID: me.id,
142
208
  accountSecret: me._raw.agentSecret,
143
209
  peersToLoadFrom: [initialAsPeer],
210
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
144
211
  sessionID: newRandomSessionID(me.id),
212
+ crypto: Crypto,
145
213
  });
146
- const loadedMap = await TestMap.load(map.id, { as: meOnSecondPeer });
214
+ const loadedMap = await TestMap.load(map.id, meOnSecondPeer, {});
147
215
  expect(loadedMap?.color).toEqual("red");
148
216
  expect(loadedMap?.height).toEqual(10);
149
217
  expect(loadedMap?.nested).toEqual(null);
150
218
  expect(loadedMap?._refs.nested?.id).toEqual(map.nested?.id);
151
219
  expect(loadedMap?._refs.nested?.value).toEqual(null);
152
- const loadedNestedMap = await NestedMap.load(map.nested.id, {
153
- as: meOnSecondPeer,
154
- });
220
+ const loadedNestedMap = await NestedMap.load(map.nested.id, meOnSecondPeer, {});
155
221
  expect(loadedMap?.nested?.name).toEqual("nested");
156
222
  expect(loadedMap?.nested?._fancyName).toEqual("Sir nested");
157
223
  expect(loadedMap?._refs.nested?.value).toEqual(loadedNestedMap);
158
224
  expect(loadedMap?.nested?.twiceNested?.taste).toEqual(undefined);
159
- const loadedTwiceNestedMap = await TwiceNestedMap.load(map.nested.twiceNested.id, { as: meOnSecondPeer });
225
+ const loadedTwiceNestedMap = await TwiceNestedMap.load(map.nested.twiceNested.id, meOnSecondPeer, {});
160
226
  expect(loadedMap?.nested?.twiceNested?.taste).toEqual("sour");
161
227
  expect(loadedMap?.nested?._refs.twiceNested?.value).toEqual(loadedTwiceNestedMap);
162
- const otherNestedMap = new NestedMap({
228
+ const otherNestedMap = NestedMap.create({
163
229
  name: "otherNested",
164
- twiceNested: new TwiceNestedMap({ taste: "sweet" }, { owner: meOnSecondPeer }),
230
+ twiceNested: TwiceNestedMap.create({ taste: "sweet" }, { owner: meOnSecondPeer }),
165
231
  }, { owner: meOnSecondPeer });
166
232
  loadedMap.nested = otherNestedMap;
167
233
  expect(loadedMap?.nested?.name).toEqual("otherNested");
@@ -173,18 +239,23 @@ describe("CoMap resolution", async () => {
173
239
  test("Subscription & auto-resolution", async () => {
174
240
  const { me, map } = await initNodeAndMap();
175
241
  const [initialAsPeer, secondAsPeer] = connectedPeers("initial", "second", { peer1role: "server", peer2role: "client" });
242
+ if (!isControlledAccount(me)) {
243
+ throw ("me is not a controlled account");
244
+ }
176
245
  me._raw.core.node.syncManager.addPeer(secondAsPeer);
177
246
  const meOnSecondPeer = await Account.become({
178
247
  accountID: me.id,
179
248
  accountSecret: me._raw.agentSecret,
180
249
  peersToLoadFrom: [initialAsPeer],
250
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
181
251
  sessionID: newRandomSessionID(me.id),
252
+ crypto: Crypto,
182
253
  });
183
254
  await Effect.runPromise(Effect.gen(function* ($) {
184
255
  const queue = yield* $(Queue.unbounded());
185
- TestMap.subscribe(map.id, { as: meOnSecondPeer }, (subscribedMap) => {
256
+ TestMap.subscribe(map.id, meOnSecondPeer, {}, (subscribedMap) => {
186
257
  console.log("subscribedMap.nested?.twiceNested?.taste", subscribedMap.nested?.twiceNested?.taste);
187
- Effect.runPromise(Queue.offer(queue, subscribedMap));
258
+ void Effect.runPromise(Queue.offer(queue, subscribedMap));
188
259
  });
189
260
  const update1 = yield* $(Queue.take(queue));
190
261
  expect(update1.nested).toEqual(null);
@@ -197,10 +268,10 @@ describe("CoMap resolution", async () => {
197
268
  const oldTwiceNested = update3.nested.twiceNested;
198
269
  expect(oldTwiceNested?.taste).toEqual("sour");
199
270
  // When assigning a new nested value, we get an update
200
- const newTwiceNested = new TwiceNestedMap({
271
+ const newTwiceNested = TwiceNestedMap.create({
201
272
  taste: "sweet",
202
273
  }, { owner: meOnSecondPeer });
203
- const newNested = new NestedMap({
274
+ const newNested = NestedMap.create({
204
275
  name: "newNested",
205
276
  twiceNested: newTwiceNested,
206
277
  }, { owner: meOnSecondPeer });
@@ -220,25 +291,27 @@ describe("CoMap resolution", async () => {
220
291
  }));
221
292
  });
222
293
  class TestMapWithOptionalRef extends CoMap {
294
+ constructor() {
295
+ super(...arguments);
296
+ this.color = co.string;
297
+ this.nested = co.ref(NestedMap);
298
+ }
223
299
  }
224
- TestMapWithOptionalRef.encoding({
225
- color: "json",
226
- nested: { ref: () => NestedMap },
227
- });
228
300
  test("Construction with optional", async () => {
229
301
  const me = await Account.create({
230
- name: "Hermes Puggington",
302
+ creationProps: { name: "Hermes Puggington" },
303
+ crypto: Crypto,
231
304
  });
232
- const mapWithout = new TestMapWithOptionalRef({
305
+ const mapWithout = TestMapWithOptionalRef.create({
233
306
  color: "red",
234
307
  }, { owner: me });
235
308
  expect(mapWithout.color).toEqual("red");
236
309
  expect(mapWithout.nested).toEqual(undefined);
237
- const mapWith = new TestMapWithOptionalRef({
310
+ const mapWith = TestMapWithOptionalRef.create({
238
311
  color: "red",
239
- nested: new NestedMap({
312
+ nested: NestedMap.create({
240
313
  name: "wow!",
241
- twiceNested: new TwiceNestedMap({ taste: "sour" }, { owner: me }),
314
+ twiceNested: TwiceNestedMap.create({ taste: "sour" }, { owner: me }),
242
315
  }, { owner: me }),
243
316
  }, { owner: me });
244
317
  expect(mapWith.color).toEqual("red");
@@ -246,16 +319,43 @@ describe("CoMap resolution", async () => {
246
319
  expect(mapWith.nested?._fancyName).toEqual("Sir wow!");
247
320
  expect(mapWith.nested?._raw).toBeDefined();
248
321
  });
322
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
249
323
  class TestRecord extends CoMap {
324
+ constructor() {
325
+ super(...arguments);
326
+ this[_a] = co.number;
327
+ }
250
328
  }
251
- TestRecord.encoding({
252
- [indexSignature]: "json",
253
- });
329
+ _a = co.items;
254
330
  test("Construction with index signature", async () => {
255
331
  const me = await Account.create({
256
- name: "Hermes Puggington",
332
+ creationProps: { name: "Hermes Puggington" },
333
+ crypto: Crypto,
334
+ });
335
+ const record = TestRecord.create({
336
+ height: 5,
337
+ other: 3,
338
+ }, { owner: me });
339
+ expect(record.height).toEqual(5);
340
+ expect(record._raw.get("height")).toEqual(5);
341
+ expect(record.other).toEqual(3);
342
+ expect(record._raw.get("other")).toEqual(3);
343
+ expect(Object.keys(record)).toEqual(["height", "other"]);
344
+ expect(record.toJSON()).toMatchObject({
345
+ _type: "CoMap",
346
+ height: 5,
347
+ id: expect.any(String),
348
+ other: 3,
349
+ });
350
+ });
351
+ class TestRecord2 extends CoMap.Record(co.number) {
352
+ }
353
+ test("Construction with index signature (shorthand)", async () => {
354
+ const me = await Account.create({
355
+ creationProps: { name: "Hermes Puggington" },
356
+ crypto: Crypto,
257
357
  });
258
- const record = new TestRecord({
358
+ const record = TestRecord2.create({
259
359
  height: 5,
260
360
  other: 3,
261
361
  }, { owner: me });
@@ -265,5 +365,26 @@ describe("CoMap resolution", async () => {
265
365
  expect(record._raw.get("other")).toEqual(3);
266
366
  expect(Object.keys(record)).toEqual(["height", "other"]);
267
367
  });
368
+ class TestRecordRef extends CoMap.Record(co.ref(TwiceNestedMap)) {
369
+ }
370
+ test("Construction with index signature ref", async () => {
371
+ const me = await Account.create({
372
+ creationProps: { name: "Hermes Puggington" },
373
+ crypto: Crypto,
374
+ });
375
+ const record = TestRecordRef.create({
376
+ firstNested: TwiceNestedMap.create({ taste: "sour" }, { owner: me }),
377
+ secondNested: TwiceNestedMap.create({ taste: "sweet" }, { owner: me }),
378
+ }, { owner: me });
379
+ expect(record.firstNested?.taste).toEqual("sour");
380
+ expect(record.firstNested?.id).toBeDefined();
381
+ expect(record.secondNested?.taste).toEqual("sweet");
382
+ expect(record.secondNested?.id).toBeDefined();
383
+ expect(Object.keys(record)).toEqual(["firstNested", "secondNested"]);
384
+ expect(Object.keys(record._refs)).toEqual([
385
+ "firstNested",
386
+ "secondNested",
387
+ ]);
388
+ });
268
389
  });
269
390
  //# sourceMappingURL=coMap.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coMap.test.js","sourceRoot":"","sources":["../../src/tests/coMap.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coMap.test.js","sourceRoot":"","sources":["../../src/tests/coMap.test.ts"],"names":[],"mappings":"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"}