cojson 0.2.3 → 0.3.0-alpha.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.
Files changed (78) hide show
  1. package/dist/account.d.ts +1 -1
  2. package/dist/coValue.d.ts +5 -13
  3. package/dist/coValue.js +14 -7
  4. package/dist/coValue.js.map +1 -1
  5. package/dist/coValueCore.d.ts +6 -6
  6. package/dist/coValueCore.js +11 -14
  7. package/dist/coValueCore.js.map +1 -1
  8. package/dist/coValues/coList.d.ts +99 -34
  9. package/dist/coValues/coList.js +162 -72
  10. package/dist/coValues/coList.js.map +1 -1
  11. package/dist/coValues/coMap.d.ts +96 -31
  12. package/dist/coValues/coMap.js +157 -114
  13. package/dist/coValues/coMap.js.map +1 -1
  14. package/dist/coValues/coStream.d.ts +67 -23
  15. package/dist/coValues/coStream.js +131 -59
  16. package/dist/coValues/coStream.js.map +1 -1
  17. package/dist/crypto.d.ts +8 -3
  18. package/dist/crypto.js +6 -6
  19. package/dist/crypto.js.map +1 -1
  20. package/dist/group.d.ts +57 -23
  21. package/dist/group.js +75 -33
  22. package/dist/group.js.map +1 -1
  23. package/dist/index.d.ts +8 -6
  24. package/dist/index.js +8 -8
  25. package/dist/index.js.map +1 -1
  26. package/dist/{node.d.ts → localNode.d.ts} +16 -8
  27. package/dist/{node.js → localNode.js} +48 -40
  28. package/dist/localNode.js.map +1 -0
  29. package/dist/permissions.js +6 -3
  30. package/dist/permissions.js.map +1 -1
  31. package/dist/queriedCoValues/queriedCoList.d.ts +66 -0
  32. package/dist/queriedCoValues/queriedCoList.js +120 -0
  33. package/dist/queriedCoValues/queriedCoList.js.map +1 -0
  34. package/dist/queriedCoValues/queriedCoMap.d.ts +47 -0
  35. package/dist/queriedCoValues/queriedCoMap.js +83 -0
  36. package/dist/queriedCoValues/queriedCoMap.js.map +1 -0
  37. package/dist/queriedCoValues/queriedCoStream.d.ts +40 -0
  38. package/dist/queriedCoValues/queriedCoStream.js +72 -0
  39. package/dist/queriedCoValues/queriedCoStream.js.map +1 -0
  40. package/dist/queries.d.ts +29 -112
  41. package/dist/queries.js +44 -227
  42. package/dist/queries.js.map +1 -1
  43. package/dist/sync.d.ts +1 -1
  44. package/dist/sync.js +1 -1
  45. package/dist/sync.js.map +1 -1
  46. package/dist/tests/testUtils.d.ts +1 -1
  47. package/dist/tests/testUtils.js +3 -3
  48. package/dist/tests/testUtils.js.map +1 -1
  49. package/package.json +2 -2
  50. package/src/account.ts +1 -1
  51. package/src/coValue.ts +25 -20
  52. package/src/coValueCore.ts +17 -21
  53. package/src/coValues/coList.ts +242 -128
  54. package/src/coValues/coMap.ts +293 -162
  55. package/src/coValues/coStream.ts +227 -94
  56. package/src/crypto.ts +37 -24
  57. package/src/group.ts +90 -63
  58. package/src/index.ts +35 -25
  59. package/src/{node.ts → localNode.ts} +64 -64
  60. package/src/permissions.ts +15 -18
  61. package/src/queriedCoValues/queriedCoList.ts +248 -0
  62. package/src/queriedCoValues/queriedCoMap.ts +180 -0
  63. package/src/queriedCoValues/queriedCoStream.ts +125 -0
  64. package/src/queries.ts +83 -460
  65. package/src/sync.ts +2 -2
  66. package/src/tests/account.test.ts +3 -6
  67. package/src/tests/coValue.test.ts +116 -110
  68. package/src/tests/coValueCore.test.ts +1 -1
  69. package/src/tests/crypto.test.ts +19 -21
  70. package/src/tests/permissions.test.ts +255 -242
  71. package/src/tests/queries.test.ts +57 -40
  72. package/src/tests/sync.test.ts +30 -30
  73. package/src/tests/testUtils.ts +3 -3
  74. package/dist/coValues/static.d.ts +0 -14
  75. package/dist/coValues/static.js +0 -20
  76. package/dist/coValues/static.js.map +0 -1
  77. package/dist/node.js.map +0 -1
  78. package/src/coValues/static.ts +0 -31
@@ -1,10 +1,10 @@
1
1
  import { isCoValue } from "../coValue.js";
2
2
  import { accountOrAgentIDfromSessionID } from "../coValueCore.js";
3
- import { isAccountID } from "../account.js";
4
3
  import { parseJSON } from "../jsonStringify.js";
5
- export class CoList {
4
+ export class CoListView {
6
5
  /** @internal */
7
6
  constructor(core) {
7
+ /** @category 6. Meta */
8
8
  this.type = "colist";
9
9
  this.id = core.id;
10
10
  this.core = core;
@@ -12,16 +12,6 @@ export class CoList {
12
12
  this.beforeEnd = [];
13
13
  this.insertions = {};
14
14
  this.deletionsByInsertion = {};
15
- this.fillOpsFromCoValue();
16
- }
17
- get meta() {
18
- return this.core.header.meta;
19
- }
20
- get group() {
21
- return this.core.getGroup();
22
- }
23
- /** @internal */
24
- fillOpsFromCoValue() {
25
15
  this.insertions = {};
26
16
  this.deletionsByInsertion = {};
27
17
  this.afterStart = [];
@@ -118,7 +108,27 @@ export class CoList {
118
108
  }
119
109
  }
120
110
  }
121
- /** Get the item currently at `idx`. */
111
+ /** @category 6. Meta */
112
+ get meta() {
113
+ return this.core.header.meta;
114
+ }
115
+ /** @category 6. Meta */
116
+ get group() {
117
+ return this.core.getGroup();
118
+ }
119
+ /**
120
+ * Not yet implemented
121
+ *
122
+ * @category 4. Time travel
123
+ */
124
+ atTime(_time) {
125
+ throw new Error("Not yet implemented");
126
+ }
127
+ /**
128
+ * Get the item currently at `idx`.
129
+ *
130
+ * @category 1. Reading
131
+ */
122
132
  get(idx) {
123
133
  const entry = this.entries()[idx];
124
134
  if (!entry) {
@@ -126,10 +136,15 @@ export class CoList {
126
136
  }
127
137
  return entry.value;
128
138
  }
129
- /** Returns the current items in the CoList as an array. */
139
+ /**
140
+ * Returns the current items in the CoList as an array.
141
+ *
142
+ * @category 1. Reading
143
+ **/
130
144
  asArray() {
131
145
  return this.entries().map((entry) => entry.value);
132
146
  }
147
+ /** @internal */
133
148
  entries() {
134
149
  const arr = [];
135
150
  for (const opID of this.afterStart) {
@@ -161,58 +176,80 @@ export class CoList {
161
176
  this.fillArrayFromOpID(successor, arr);
162
177
  }
163
178
  }
164
- /** Returns the accountID of the account that inserted value at the given index. */
165
- whoInserted(idx) {
179
+ /**
180
+ * Returns the current items in the CoList as an array. (alias of `asArray`)
181
+ *
182
+ * @category 1. Reading
183
+ */
184
+ toJSON() {
185
+ return this.asArray();
186
+ }
187
+ /** @category 5. Edit history */
188
+ editAt(idx) {
166
189
  const entry = this.entries()[idx];
167
190
  if (!entry) {
168
191
  return undefined;
169
192
  }
170
- const accountID = accountOrAgentIDfromSessionID(entry.opID.sessionID);
171
- if (isAccountID(accountID)) {
172
- return accountID;
173
- }
174
- else {
175
- return undefined;
176
- }
177
- }
178
- /** Returns the current items in the CoList as an array. (alias of `asArray`) */
179
- toJSON() {
180
- return this.asArray();
181
- }
182
- map(mapper) {
183
- return this.entries().map((entry, idx) => mapper(entry.value, idx));
184
- }
185
- filter(predicate) {
186
- return this.entries()
187
- .filter((entry, idx) => predicate(entry.value, idx))
188
- .map((entry) => entry.value);
193
+ const madeAt = new Date(entry.madeAt);
194
+ const by = accountOrAgentIDfromSessionID(entry.opID.sessionID);
195
+ const value = entry.value;
196
+ return {
197
+ by,
198
+ tx: {
199
+ sessionID: entry.opID.sessionID,
200
+ txIndex: entry.opID.txIndex,
201
+ },
202
+ at: madeAt,
203
+ value,
204
+ };
189
205
  }
190
- reduce(reducer, initialValue) {
191
- return this.entries().reduce((accumulator, entry, idx) => reducer(accumulator, entry.value, idx), initialValue);
206
+ /** @category 5. Edit history */
207
+ deletionEdits() {
208
+ const edits = [];
209
+ for (const sessionID in this.deletionsByInsertion) {
210
+ const sessionEntry = this.deletionsByInsertion[sessionID];
211
+ for (const txIdx in sessionEntry) {
212
+ const txEntry = sessionEntry[Number(txIdx)];
213
+ for (const changeIdx in txEntry) {
214
+ const changeEntry = txEntry[Number(changeIdx)];
215
+ for (const deletion of changeEntry || []) {
216
+ const madeAt = new Date(deletion.madeAt);
217
+ const by = accountOrAgentIDfromSessionID(deletion.deletionID.sessionID);
218
+ edits.push({
219
+ by,
220
+ tx: deletion.deletionID,
221
+ at: madeAt,
222
+ });
223
+ }
224
+ }
225
+ }
226
+ }
227
+ return edits;
192
228
  }
229
+ /** @category 3. Subscription */
193
230
  subscribe(listener) {
194
231
  return this.core.subscribe((content) => {
195
232
  listener(content);
196
233
  });
197
234
  }
198
- edit(changer) {
199
- const editable = new WriteableCoList(this.core);
200
- changer(editable);
201
- return new CoList(this.core);
202
- }
203
235
  }
204
- export class WriteableCoList extends CoList {
205
- /** @internal */
206
- edit(_changer) {
207
- throw new Error("Already editing.");
208
- }
209
- /** Appends a new item after index `after`.
236
+ export class CoList extends CoListView {
237
+ /** Returns a new version of this CoList with `item` appended after the item currently at index `after`.
238
+ *
239
+ * If `privacy` is `"private"` **(default)**, `item` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
210
240
  *
211
- * If `privacy` is `"private"` **(default)**, both `value` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
241
+ * If `privacy` is `"trusting"`, `item` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
212
242
  *
213
- * If `privacy` is `"trusting"`, both `value` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers. */
214
- append(after, value, privacy = "private") {
243
+ * @category 2. Editing
244
+ **/
245
+ append(item, after, privacy = "private") {
215
246
  const entries = this.entries();
247
+ after =
248
+ after === undefined
249
+ ? entries.length > 0
250
+ ? entries.length - 1
251
+ : 0
252
+ : 0;
216
253
  let opIDBefore;
217
254
  if (entries.length > 0) {
218
255
  const entryBefore = entries[after];
@@ -230,31 +267,24 @@ export class WriteableCoList extends CoList {
230
267
  this.core.makeTransaction([
231
268
  {
232
269
  op: "app",
233
- value: isCoValue(value) ? value.id : value,
270
+ value: isCoValue(item) ? item.id : item,
234
271
  after: opIDBefore,
235
272
  },
236
273
  ], privacy);
237
- this.fillOpsFromCoValue();
238
- }
239
- /** Pushes a new item to the end of the list.
240
- *
241
- * If `privacy` is `"private"` **(default)**, both `value` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
242
- *
243
- * If `privacy` is `"trusting"`, both `value` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers. */
244
- push(value, privacy = "private") {
245
- // TODO: optimize
246
- const entries = this.entries();
247
- this.append(entries.length > 0 ? entries.length - 1 : 0, value, privacy);
274
+ return new CoList(this.core);
248
275
  }
249
276
  /**
250
- * Prepends a new item before index `before`.
277
+ * Returns a new version of this CoList with `item` prepended before the item currently at index `before`.
251
278
  *
252
- * If `privacy` is `"private"` **(default)**, both `value` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
279
+ * If `privacy` is `"private"` **(default)**, `item` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
253
280
  *
254
- * If `privacy` is `"trusting"`, both `value` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
281
+ * If `privacy` is `"trusting"`, `item` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
282
+ *
283
+ * @category 2. Editing
255
284
  */
256
- prepend(before, value, privacy = "private") {
285
+ prepend(item, before, privacy = "private") {
257
286
  const entries = this.entries();
287
+ before = before === undefined ? 0 : before;
258
288
  let opIDAfter;
259
289
  if (entries.length > 0) {
260
290
  const entryAfter = entries[before];
@@ -277,17 +307,20 @@ export class WriteableCoList extends CoList {
277
307
  this.core.makeTransaction([
278
308
  {
279
309
  op: "pre",
280
- value: isCoValue(value) ? value.id : value,
310
+ value: isCoValue(item) ? item.id : item,
281
311
  before: opIDAfter,
282
312
  },
283
313
  ], privacy);
284
- this.fillOpsFromCoValue();
314
+ return new CoList(this.core);
285
315
  }
286
- /** Deletes the item at index `at` from the list.
316
+ /** Returns a new version of this CoList with the item at index `at` deleted from the list.
287
317
  *
288
318
  * If `privacy` is `"private"` **(default)**, the fact of this deletion is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
289
319
  *
290
- * If `privacy` is `"trusting"`, the fact of this deletion is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers. */
320
+ * If `privacy` is `"trusting"`, the fact of this deletion is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
321
+ *
322
+ * @category 2. Editing
323
+ **/
291
324
  delete(at, privacy = "private") {
292
325
  const entries = this.entries();
293
326
  const entry = entries[at];
@@ -300,7 +333,64 @@ export class WriteableCoList extends CoList {
300
333
  insertion: entry.opID,
301
334
  },
302
335
  ], privacy);
303
- this.fillOpsFromCoValue();
336
+ return new CoList(this.core);
337
+ }
338
+ /** @category 2. Editing */
339
+ mutate(mutator) {
340
+ const mutable = new MutableCoList(this.core);
341
+ mutator(mutable);
342
+ return new CoList(this.core);
343
+ }
344
+ /** @deprecated Use `mutate` instead. */
345
+ edit(mutator) {
346
+ return this.mutate(mutator);
347
+ }
348
+ }
349
+ export class MutableCoList extends CoListView {
350
+ /** Appends `item` after the item currently at index `after`.
351
+ *
352
+ * If `privacy` is `"private"` **(default)**, `item` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
353
+ *
354
+ * If `privacy` is `"trusting"`, `item` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
355
+ *
356
+ * @category 2. Mutating
357
+ **/
358
+ append(item, after, privacy = "private") {
359
+ const listAfter = CoList.prototype.append.call(this, item, after, privacy);
360
+ this.afterStart = listAfter.afterStart;
361
+ this.beforeEnd = listAfter.beforeEnd;
362
+ this.insertions = listAfter.insertions;
363
+ this.deletionsByInsertion = listAfter.deletionsByInsertion;
364
+ }
365
+ /** Prepends `item` before the item currently at index `before`.
366
+ *
367
+ * If `privacy` is `"private"` **(default)**, `item` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
368
+ *
369
+ * If `privacy` is `"trusting"`, `item` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
370
+ *
371
+ * * @category 2. Mutating
372
+ **/
373
+ prepend(item, before, privacy = "private") {
374
+ const listAfter = CoList.prototype.prepend.call(this, item, before, privacy);
375
+ this.afterStart = listAfter.afterStart;
376
+ this.beforeEnd = listAfter.beforeEnd;
377
+ this.insertions = listAfter.insertions;
378
+ this.deletionsByInsertion = listAfter.deletionsByInsertion;
379
+ }
380
+ /** Deletes the item at index `at` from the list.
381
+ *
382
+ * If `privacy` is `"private"` **(default)**, the fact of this deletion is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
383
+ *
384
+ * If `privacy` is `"trusting"`, the fact of this deletion is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
385
+ *
386
+ * * @category 2. Mutating
387
+ **/
388
+ delete(at, privacy = "private") {
389
+ const listAfter = CoList.prototype.delete.call(this, at, privacy);
390
+ this.afterStart = listAfter.afterStart;
391
+ this.beforeEnd = listAfter.beforeEnd;
392
+ this.insertions = listAfter.insertions;
393
+ this.deletionsByInsertion = listAfter.deletionsByInsertion;
304
394
  }
305
395
  }
306
396
  //# sourceMappingURL=coList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coList.js","sourceRoot":"","sources":["../../src/coValues/coList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coList.js","sourceRoot":"","sources":["../../src/coValues/coList.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { JsonObject, JsonValue } from "../jsonValue.js";
2
- import { TransactionID } from "../ids.js";
2
+ import { AgentID, TransactionID } from "../ids.js";
3
3
  import { CoID, CoValue } from "../coValue.js";
4
4
  import { CoValueCore } from "../coValueCore.js";
5
5
  import { AccountID } from "../account.js";
@@ -17,60 +17,125 @@ export type MapOpPayload<K extends string, V extends JsonValue | CoValue | undef
17
17
  op: "del";
18
18
  key: K;
19
19
  };
20
- /** A collaborative map with precise shape `M` and optional static metadata `Meta` */
21
- export declare class CoMap<M extends {
20
+ export declare class CoMapView<Shape extends {
22
21
  [key: string]: JsonValue | CoValue | undefined;
23
22
  }, Meta extends JsonObject | null = null> implements CoValue {
23
+ /** @category 6. Meta */
24
24
  id: CoID<this>;
25
+ /** @category 6. Meta */
25
26
  type: "comap";
27
+ /** @category 6. Meta */
26
28
  core: CoValueCore;
27
29
  /** @internal */
28
30
  ops: {
29
- [Key in keyof M & string]?: MapOp<Key, M[Key]>[];
31
+ [Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>[];
30
32
  };
31
33
  /** @internal */
34
+ atTimeFilter?: number;
35
+ /** @category 6. Meta */
36
+ readonly _shape: Shape;
37
+ /** @internal */
32
38
  constructor(core: CoValueCore);
39
+ /** @category 6. Meta */
33
40
  get meta(): Meta;
41
+ /** @category 6. Meta */
34
42
  get group(): Group;
43
+ /** @category 4. Time travel */
44
+ atTime(time: number): this;
35
45
  /** @internal */
36
- protected fillOpsFromCoValue(): void;
37
- keys(): (keyof M & string)[];
38
- /** Returns the current value for the given key. */
39
- get<K extends keyof M & string>(key: K): (M[K] extends CoValue ? CoID<M[K]> : Exclude<M[K], CoValue>) | undefined;
40
- getAtTime<K extends keyof M & string>(key: K, time: number): (M[K] extends CoValue ? CoID<M[K]> : Exclude<M[K], CoValue>) | undefined;
41
- /** Returns the accountID of the last account to modify the value for the given key. */
42
- whoEdited<K extends keyof M & string>(key: K): AccountID | undefined;
43
- getLastTxID<K extends keyof M & string>(key: K): TransactionID | undefined;
44
- getLastEntry<K extends keyof M & string>(key: K): {
45
- at: number;
46
- txID: TransactionID;
47
- value: M[K] extends CoValue ? CoID<M[K]> : Exclude<M[K], CoValue>;
46
+ timeFilteredOps<K extends keyof Shape & string>(key: K): MapOp<K, Shape[K]>[] | undefined;
47
+ /**
48
+ * Get all keys currently in the map.
49
+ *
50
+ * @category 1. Reading */
51
+ keys(): (keyof Shape & string)[];
52
+ /**
53
+ * Returns the current value for the given key.
54
+ *
55
+ * @category 1. Reading
56
+ **/
57
+ get<K extends keyof Shape & string>(key: K): (Shape[K] extends CoValue ? CoID<Shape[K]> : Exclude<Shape[K], CoValue>) | undefined;
58
+ /** @category 1. Reading */
59
+ asObject(): {
60
+ [K in keyof Shape & string]: Shape[K] extends CoValue ? CoID<Shape[K]> : Exclude<Shape[K], CoValue>;
61
+ };
62
+ /** @category 1. Reading */
63
+ toJSON(): {
64
+ [K in keyof Shape & string]: Shape[K] extends CoValue ? CoID<Shape[K]> : Exclude<Shape[K], CoValue>;
65
+ };
66
+ /** @category 5. Edit history */
67
+ nthEditAt<K extends keyof Shape & string>(key: K, n: number): {
68
+ by: AccountID | AgentID;
69
+ tx: TransactionID;
70
+ at: Date;
71
+ value?: Shape[K] extends CoValue ? CoID<Shape[K]> : Exclude<Shape[K], CoValue>;
48
72
  } | undefined;
49
- getHistory<K extends keyof M & string>(key: K): {
50
- at: number;
51
- txID: TransactionID;
52
- value: (M[K] extends CoValue ? CoID<M[K]> : Exclude<M[K], CoValue>) | undefined;
53
- }[];
54
- toJSON(): JsonObject;
73
+ /** @category 5. Edit history */
74
+ lastEditAt<K extends keyof Shape & string>(key: K): {
75
+ by: AccountID | AgentID;
76
+ tx: TransactionID;
77
+ at: Date;
78
+ value?: Shape[K] extends CoValue ? CoID<Shape[K]> : Exclude<Shape[K], CoValue>;
79
+ } | undefined;
80
+ /** @category 5. Edit history */
81
+ editsAt<K extends keyof Shape & string>(key: K): Generator<{
82
+ by: `sealer_z${string}/signer_z${string}` | AccountID;
83
+ tx: TransactionID;
84
+ at: Date;
85
+ value?: (Shape[K] extends CoValue ? CoID<Shape[K]> : Exclude<Shape[K], CoValue>) | undefined;
86
+ }, void, unknown>;
87
+ /** @category 3. Subscription */
55
88
  subscribe(listener: (coMap: this) => void): () => void;
56
- edit(changer: (editable: WriteableCoMap<M, Meta>) => void): this;
57
89
  }
58
- export declare class WriteableCoMap<M extends {
90
+ /** A collaborative map with precise shape `Shape` and optional static metadata `Meta` */
91
+ export declare class CoMap<Shape extends {
59
92
  [key: string]: JsonValue | CoValue | undefined;
60
- }, Meta extends JsonObject | null = null> extends CoMap<M, Meta> implements CoValue {
61
- /** @internal */
62
- edit(_changer: (editable: WriteableCoMap<M, Meta>) => void): this;
93
+ }, Meta extends JsonObject | null = null> extends CoMapView<Shape, Meta> implements CoValue {
94
+ /** Returns a new version of this CoMap with a new value for the given key.
95
+ *
96
+ * If `privacy` is `"private"` **(default)**, both `key` and `value` are encrypted in the transaction, only readable by other members of the group this `CoMap` belongs to. Not even sync servers can see the content in plaintext.
97
+ *
98
+ * If `privacy` is `"trusting"`, both `key` and `value` are stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
99
+ *
100
+ * @category 2. Editing
101
+ **/
102
+ set<K extends keyof Shape & string>(key: K, value: Shape[K] extends CoValue ? Shape[K] | CoID<Shape[K]> : Shape[K], privacy?: "private" | "trusting"): this;
103
+ set(kv: {
104
+ [K in keyof Shape & string]?: Shape[K] extends CoValue ? Shape[K] | CoID<Shape[K]> : Shape[K];
105
+ }, privacy?: "private" | "trusting"): this;
106
+ /** Returns a new version of this CoMap with the given key deleted (setting it to undefined).
107
+ *
108
+ * If `privacy` is `"private"` **(default)**, `key` is encrypted in the transaction, only readable by other members of the group this `CoMap` belongs to. Not even sync servers can see the content in plaintext.
109
+ *
110
+ * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
111
+ *
112
+ * @category 2. Editing
113
+ **/
114
+ delete(key: keyof Shape & string, privacy?: "private" | "trusting"): this;
115
+ /** @category 2. Editing */
116
+ mutate(mutator: (mutable: MutableCoMap<Shape, Meta>) => void): this;
117
+ /** @deprecated Use `mutate` instead. */
118
+ edit(mutator: (mutable: MutableCoMap<Shape, Meta>) => void): this;
119
+ }
120
+ export declare class MutableCoMap<Shape extends {
121
+ [key: string]: JsonValue | CoValue | undefined;
122
+ }, Meta extends JsonObject | null = null> extends CoMapView<Shape, Meta> implements CoValue {
63
123
  /** Sets a new value for the given key.
64
124
  *
65
125
  * If `privacy` is `"private"` **(default)**, both `key` and `value` are encrypted in the transaction, only readable by other members of the group this `CoMap` belongs to. Not even sync servers can see the content in plaintext.
66
126
  *
67
- * If `privacy` is `"trusting"`, both `key` and `value` are stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers. */
68
- set<K extends keyof M & string>(key: K, value: M[K] extends CoValue ? M[K] | CoID<M[K]> : M[K], privacy?: "private" | "trusting"): void;
127
+ * If `privacy` is `"trusting"`, both `key` and `value` are stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
128
+ *
129
+ * @category 2. Mutation
130
+ */
131
+ set<K extends keyof Shape & string>(key: K, value: Shape[K] extends CoValue ? Shape[K] | CoID<Shape[K]> : Shape[K], privacy?: "private" | "trusting"): void;
69
132
  /** Deletes the value for the given key (setting it to undefined).
70
133
  *
71
134
  * If `privacy` is `"private"` **(default)**, `key` is encrypted in the transaction, only readable by other members of the group this `CoMap` belongs to. Not even sync servers can see the content in plaintext.
72
135
  *
73
- * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers. */
74
- delete(key: keyof M & string, privacy?: "private" | "trusting"): void;
136
+ * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
137
+ * @category 2. Mutation
138
+ */
139
+ delete(key: keyof Shape & string, privacy?: "private" | "trusting"): void;
75
140
  }
76
141
  export {};