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,27 +1,17 @@
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
- /** A collaborative map with precise shape `M` and optional static metadata `Meta` */
6
- export class CoMap {
4
+ export class CoMapView {
7
5
  /** @internal */
8
6
  constructor(core) {
7
+ /** @category 6. Meta */
9
8
  this.type = "comap";
9
+ /** @internal */
10
+ this.atTimeFilter = undefined;
10
11
  this.id = core.id;
11
12
  this.core = core;
12
13
  this.ops = {};
13
- this.fillOpsFromCoValue();
14
- }
15
- get meta() {
16
- return this.core.header.meta;
17
- }
18
- get group() {
19
- return this.core.getGroup();
20
- }
21
- /** @internal */
22
- fillOpsFromCoValue() {
23
- this.ops = {};
24
- for (const { txID, changes, madeAt, } of this.core.getValidSortedTransactions()) {
14
+ for (const { txID, changes, madeAt, } of core.getValidSortedTransactions()) {
25
15
  for (const [changeIdx, changeUntyped] of parseJSON(changes).entries()) {
26
16
  const change = changeUntyped;
27
17
  let entries = this.ops[change.key];
@@ -38,152 +28,205 @@ export class CoMap {
38
28
  }
39
29
  }
40
30
  }
41
- keys() {
42
- return Object.keys(this.ops);
31
+ /** @category 6. Meta */
32
+ get meta() {
33
+ return this.core.header.meta;
43
34
  }
44
- /** Returns the current value for the given key. */
45
- get(key) {
46
- const ops = this.ops[key];
47
- if (!ops) {
48
- return undefined;
49
- }
50
- const lastEntry = ops[ops.length - 1];
51
- if (lastEntry.op === "del") {
52
- return undefined;
35
+ /** @category 6. Meta */
36
+ get group() {
37
+ return this.core.getGroup();
38
+ }
39
+ /** @category 4. Time travel */
40
+ atTime(time) {
41
+ const clone = Object.create(this);
42
+ clone.id = this.id;
43
+ clone.type = this.type;
44
+ clone.core = this.core;
45
+ clone.ops = this.ops;
46
+ clone.atTimeFilter = time;
47
+ return clone;
48
+ }
49
+ /** @internal */
50
+ timeFilteredOps(key) {
51
+ if (this.atTimeFilter) {
52
+ return this.ops[key]?.filter((op) => op.madeAt <= this.atTimeFilter);
53
53
  }
54
54
  else {
55
- return lastEntry.value;
55
+ return this.ops[key];
56
56
  }
57
57
  }
58
- getAtTime(key, time) {
59
- const ops = this.ops[key];
60
- if (!ops) {
61
- return undefined;
62
- }
63
- const lastOpBeforeOrAtTime = ops.findLast((op) => op.madeAt <= time);
64
- if (!lastOpBeforeOrAtTime) {
65
- return undefined;
66
- }
67
- if (lastOpBeforeOrAtTime.op === "del") {
68
- return undefined;
58
+ /**
59
+ * Get all keys currently in the map.
60
+ *
61
+ * @category 1. Reading */
62
+ keys() {
63
+ const keys = Object.keys(this.ops);
64
+ if (this.atTimeFilter) {
65
+ return keys.filter((key) => {
66
+ this.timeFilteredOps(key)?.length;
67
+ });
69
68
  }
70
69
  else {
71
- return lastOpBeforeOrAtTime.value;
70
+ return keys;
72
71
  }
73
72
  }
74
- /** Returns the accountID of the last account to modify the value for the given key. */
75
- whoEdited(key) {
76
- const tx = this.getLastTxID(key);
77
- if (!tx) {
73
+ /**
74
+ * Returns the current value for the given key.
75
+ *
76
+ * @category 1. Reading
77
+ **/
78
+ get(key) {
79
+ const ops = this.timeFilteredOps(key);
80
+ if (!ops) {
78
81
  return undefined;
79
82
  }
80
- const accountID = accountOrAgentIDfromSessionID(tx.sessionID);
81
- if (isAccountID(accountID)) {
82
- return accountID;
83
+ const includeUntil = this.atTimeFilter;
84
+ const lastEntry = includeUntil
85
+ ? ops.findLast((entry) => entry.madeAt <= includeUntil)
86
+ : ops[ops.length - 1];
87
+ if (lastEntry?.op === "del") {
88
+ return undefined;
83
89
  }
84
90
  else {
85
- return undefined;
91
+ return lastEntry?.value;
86
92
  }
87
93
  }
88
- getLastTxID(key) {
89
- const ops = this.ops[key];
90
- if (!ops) {
91
- return undefined;
94
+ /** @category 1. Reading */
95
+ asObject() {
96
+ const object = {};
97
+ for (const key of this.keys()) {
98
+ const value = this.get(key);
99
+ if (value !== undefined) {
100
+ object[key] = value;
101
+ }
92
102
  }
93
- const lastEntry = ops[ops.length - 1];
94
- return lastEntry.txID;
103
+ return object;
95
104
  }
96
- getLastEntry(key) {
97
- const ops = this.ops[key];
98
- if (!ops) {
105
+ /** @category 1. Reading */
106
+ toJSON() {
107
+ return this.asObject();
108
+ }
109
+ /** @category 5. Edit history */
110
+ nthEditAt(key, n) {
111
+ const ops = this.timeFilteredOps(key);
112
+ if (!ops || ops.length <= n) {
99
113
  return undefined;
100
114
  }
101
- const lastEntry = ops[ops.length - 1];
102
- if (lastEntry.op === "del") {
115
+ const entry = ops[n];
116
+ if (this.atTimeFilter && entry.madeAt > this.atTimeFilter) {
103
117
  return undefined;
104
118
  }
105
- else {
106
- return {
107
- at: lastEntry.madeAt,
108
- txID: lastEntry.txID,
109
- value: lastEntry.value,
110
- };
119
+ return {
120
+ by: accountOrAgentIDfromSessionID(entry.txID.sessionID),
121
+ tx: entry.txID,
122
+ at: new Date(entry.madeAt),
123
+ value: entry.op === "del" ? undefined : entry.value,
124
+ };
125
+ }
126
+ /** @category 5. Edit history */
127
+ lastEditAt(key) {
128
+ const ops = this.timeFilteredOps(key);
129
+ if (!ops || ops.length === 0) {
130
+ return undefined;
111
131
  }
132
+ return this.nthEditAt(key, ops.length - 1);
112
133
  }
113
- getHistory(key) {
114
- const ops = this.ops[key];
134
+ /** @category 5. Edit history */
135
+ *editsAt(key) {
136
+ const ops = this.timeFilteredOps(key);
115
137
  if (!ops) {
116
- return [];
117
- }
118
- const history = [];
119
- for (const op of ops) {
120
- if (op.op === "del") {
121
- history.push({
122
- at: op.madeAt,
123
- txID: op.txID,
124
- value: undefined,
125
- });
126
- }
127
- else {
128
- history.push({ at: op.madeAt, txID: op.txID, value: op.value });
129
- }
138
+ return;
130
139
  }
131
- return history;
132
- }
133
- toJSON() {
134
- const json = {};
135
- for (const key of this.keys()) {
136
- const value = this.get(key);
137
- if (value !== undefined) {
138
- json[key] = value;
139
- }
140
+ for (let i = 0; i < ops.length; i++) {
141
+ yield this.nthEditAt(key, i);
140
142
  }
141
- return json;
142
143
  }
144
+ /** @category 3. Subscription */
143
145
  subscribe(listener) {
144
146
  return this.core.subscribe((content) => {
145
147
  listener(content);
146
148
  });
147
149
  }
148
- edit(changer) {
149
- const editable = new WriteableCoMap(this.core);
150
- changer(editable);
151
- return new CoMap(this.core);
152
- }
153
150
  }
154
- export class WriteableCoMap extends CoMap {
155
- /** @internal */
156
- edit(_changer) {
157
- throw new Error("Already editing.");
151
+ /** A collaborative map with precise shape `Shape` and optional static metadata `Meta` */
152
+ export class CoMap extends CoMapView {
153
+ set(...args) {
154
+ if (typeof args[0] === "string") {
155
+ const [key, value, privacy = "private"] = args;
156
+ this.core.makeTransaction([
157
+ {
158
+ op: "set",
159
+ key,
160
+ value: isCoValue(value) ? value.id : value,
161
+ },
162
+ ], privacy);
163
+ }
164
+ else {
165
+ const [kv, privacy = "private"] = args;
166
+ for (const [key, value] of Object.entries(kv)) {
167
+ this.core.makeTransaction([
168
+ {
169
+ op: "set",
170
+ key,
171
+ value: isCoValue(value) ? value.id : value,
172
+ },
173
+ ], privacy);
174
+ }
175
+ }
176
+ return new CoMap(this.core);
158
177
  }
159
- /** Sets a new value for the given key.
178
+ /** Returns a new version of this CoMap with the given key deleted (setting it to undefined).
160
179
  *
161
- * 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.
180
+ * 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.
162
181
  *
163
- * 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. */
164
- set(key, value, privacy = "private") {
182
+ * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
183
+ *
184
+ * @category 2. Editing
185
+ **/
186
+ delete(key, privacy = "private") {
165
187
  this.core.makeTransaction([
166
188
  {
167
- op: "set",
189
+ op: "del",
168
190
  key,
169
- value: isCoValue(value) ? value.id : value,
170
191
  },
171
192
  ], privacy);
172
- this.fillOpsFromCoValue();
193
+ return new CoMap(this.core);
194
+ }
195
+ /** @category 2. Editing */
196
+ mutate(mutator) {
197
+ const mutable = new MutableCoMap(this.core);
198
+ mutator(mutable);
199
+ return new CoMap(this.core);
200
+ }
201
+ /** @deprecated Use `mutate` instead. */
202
+ edit(mutator) {
203
+ return this.mutate(mutator);
204
+ }
205
+ }
206
+ export class MutableCoMap extends CoMapView {
207
+ /** Sets a new value for the given key.
208
+ *
209
+ * 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.
210
+ *
211
+ * 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.
212
+ *
213
+ * @category 2. Mutation
214
+ */
215
+ set(key, value, privacy = "private") {
216
+ // eslint-disable-next-line @typescript-eslint/ban-types
217
+ const after = CoMap.prototype.set.call(this, key, value, privacy);
218
+ this.ops = after.ops;
173
219
  }
174
220
  /** Deletes the value for the given key (setting it to undefined).
175
221
  *
176
222
  * 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.
177
223
  *
178
- * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers. */
224
+ * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
225
+ * @category 2. Mutation
226
+ */
179
227
  delete(key, privacy = "private") {
180
- this.core.makeTransaction([
181
- {
182
- op: "del",
183
- key,
184
- },
185
- ], privacy);
186
- this.fillOpsFromCoValue();
228
+ const after = CoMap.prototype.delete.call(this, key, privacy);
229
+ this.ops = after.ops;
187
230
  }
188
231
  }
189
232
  //# sourceMappingURL=coMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { JsonObject, JsonValue } from "../jsonValue.js";
2
2
  import { CoValue, CoID } from "../coValue.js";
3
3
  import { CoValueCore } from "../coValueCore.js";
4
4
  import { Group } from "../group.js";
5
- import { SessionID } from "../ids.js";
5
+ import { AgentID, SessionID, TransactionID } from "../ids.js";
6
6
  import { AccountID } from "../account.js";
7
7
  export type BinaryStreamInfo = {
8
8
  mimeType: string;
@@ -23,54 +23,98 @@ export type BinaryCoStreamMeta = JsonObject & {
23
23
  type: "binary";
24
24
  };
25
25
  export type BinaryStreamItem = BinaryStreamStart | BinaryStreamChunk | BinaryStreamEnd;
26
- export type CoStreamItem<T extends JsonValue | CoValue> = {
27
- item: T extends CoValue ? CoID<T> : Exclude<T, CoValue>;
26
+ export type CoStreamItem<Item extends JsonValue | CoValue> = {
27
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
28
+ tx: TransactionID;
28
29
  madeAt: number;
29
30
  };
30
- export declare class CoStream<T extends JsonValue | CoValue, Meta extends JsonObject | null = null> implements CoValue {
31
+ export declare class CoStreamView<Item extends JsonValue | CoValue, Meta extends JsonObject | null = null> implements CoValue {
31
32
  id: CoID<this>;
32
33
  type: "costream";
33
34
  core: CoValueCore;
34
35
  items: {
35
- [key: SessionID]: CoStreamItem<T>[];
36
+ [key: SessionID]: CoStreamItem<Item>[];
36
37
  };
38
+ readonly _item: Item;
37
39
  constructor(core: CoValueCore);
38
40
  get meta(): Meta;
39
41
  get group(): Group;
42
+ /** Not yet implemented */
43
+ atTime(_time: number): this;
40
44
  /** @internal */
41
45
  protected fillFromCoValue(): void;
42
- getSingleStream(): (T extends CoValue ? CoID<T> : Exclude<T, CoValue>)[] | undefined;
43
- getLastItemsPerAccount(): {
44
- [account: AccountID]: (T extends CoValue ? CoID<T> : Exclude<T, CoValue>) | undefined;
45
- };
46
- getLastItemFrom(account: AccountID): (T extends CoValue ? CoID<T> : Exclude<T, CoValue>) | undefined;
47
- getLastItemFromMe(): (T extends CoValue ? CoID<T> : Exclude<T, CoValue>) | undefined;
46
+ getSingleStream(): (Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>)[] | undefined;
47
+ sessions(): SessionID[];
48
+ accounts(): Set<AccountID | AgentID>;
49
+ nthItemIn(sessionID: SessionID, n: number): {
50
+ by: AccountID | AgentID;
51
+ tx: TransactionID;
52
+ at: Date;
53
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
54
+ } | undefined;
55
+ lastItemIn(sessionID: SessionID): {
56
+ by: AccountID | AgentID;
57
+ tx: TransactionID;
58
+ at: Date;
59
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
60
+ } | undefined;
61
+ itemsIn(sessionID: SessionID): Generator<{
62
+ by: `sealer_z${string}/signer_z${string}` | AccountID;
63
+ tx: TransactionID;
64
+ at: Date;
65
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
66
+ }, void, unknown>;
67
+ lastItemBy(account: AccountID | AgentID): {
68
+ by: AccountID | AgentID;
69
+ tx: TransactionID;
70
+ at: Date;
71
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
72
+ } | undefined;
73
+ itemsBy(account: AccountID | AgentID): Generator<{
74
+ by: `sealer_z${string}/signer_z${string}` | AccountID;
75
+ tx: TransactionID;
76
+ at: Date;
77
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
78
+ in: `sealer_z${string}/signer_z${string}_session_z${string}` | `co_z${string}_session_z${string}`;
79
+ }, void, unknown>;
48
80
  toJSON(): {
49
- [key: SessionID]: (T extends CoValue ? CoID<T> : Exclude<T, CoValue>)[];
81
+ [key: SessionID]: (Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>)[];
50
82
  };
51
83
  subscribe(listener: (coStream: this) => void): () => void;
52
- edit(changer: (editable: WriteableCoStream<T, Meta>) => void): this;
53
84
  }
54
- export declare class BinaryCoStream<Meta extends BinaryCoStreamMeta = {
85
+ export declare class CoStream<Item extends JsonValue | CoValue, Meta extends JsonObject | null = null> extends CoStreamView<Item, Meta> implements CoValue {
86
+ push(item: Item extends CoValue ? Item | CoID<Item> : Item, privacy?: "private" | "trusting"): this;
87
+ mutate(mutator: (mutable: MutableCoStream<Item, Meta>) => void): this;
88
+ /** @deprecated Use `mutate` instead. */
89
+ edit(mutator: (mutable: MutableCoStream<Item, Meta>) => void): this;
90
+ }
91
+ export declare class MutableCoStream<Item extends JsonValue | CoValue, Meta extends JsonObject | null = null> extends CoStreamView<Item, Meta> implements CoValue {
92
+ push(item: Item extends CoValue ? Item | CoID<Item> : Item, privacy?: "private" | "trusting"): void;
93
+ }
94
+ export declare class BinaryCoStreamView<Meta extends BinaryCoStreamMeta = {
55
95
  type: "binary";
56
- }> extends CoStream<BinaryStreamItem, Meta> implements CoValue {
96
+ }> extends CoStreamView<BinaryStreamItem, Meta> implements CoValue {
57
97
  id: CoID<this>;
58
98
  getBinaryChunks(allowUnfinished?: boolean): (BinaryStreamInfo & {
59
99
  chunks: Uint8Array[];
60
100
  finished: boolean;
61
101
  }) | undefined;
62
- edit(changer: (editable: WriteableBinaryCoStream<Meta>) => void): this;
63
102
  }
64
- export declare class WriteableCoStream<T extends JsonValue | CoValue, Meta extends JsonObject | null = null> extends CoStream<T, Meta> implements CoValue {
103
+ export declare class BinaryCoStream<Meta extends BinaryCoStreamMeta = {
104
+ type: "binary";
105
+ }> extends BinaryCoStreamView<Meta> implements CoValue {
65
106
  /** @internal */
66
- edit(_changer: (editable: WriteableCoStream<T, Meta>) => void): this;
67
- push(item: T extends CoValue ? T | CoID<T> : T, privacy?: "private" | "trusting"): void;
107
+ push(item: BinaryStreamItem, privacy?: "private" | "trusting"): this;
108
+ startBinaryStream(settings: BinaryStreamInfo, privacy?: "private" | "trusting"): this;
109
+ pushBinaryStreamChunk(chunk: Uint8Array, privacy?: "private" | "trusting"): this;
110
+ endBinaryStream(privacy?: "private" | "trusting"): this;
111
+ mutate(mutator: (mutable: MutableBinaryCoStream<Meta>) => void): this;
112
+ /** @deprecated Use `mutate` instead. */
113
+ edit(mutator: (mutable: MutableBinaryCoStream<Meta>) => void): this;
68
114
  }
69
- export declare class WriteableBinaryCoStream<Meta extends BinaryCoStreamMeta = {
115
+ export declare class MutableBinaryCoStream<Meta extends BinaryCoStreamMeta = {
70
116
  type: "binary";
71
- }> extends BinaryCoStream<Meta> implements CoValue {
72
- /** @internal */
73
- edit(_changer: (editable: WriteableBinaryCoStream<Meta>) => void): this;
117
+ }> extends BinaryCoStreamView<Meta> implements CoValue {
74
118
  /** @internal */
75
119
  push(item: BinaryStreamItem, privacy?: "private" | "trusting"): void;
76
120
  startBinaryStream(settings: BinaryStreamInfo, privacy?: "private" | "trusting"): void;