cojson 0.2.2 → 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 (85) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/dist/account.d.ts +8 -8
  3. package/dist/account.js +2 -2
  4. package/dist/account.js.map +1 -1
  5. package/dist/coValue.d.ts +22 -27
  6. package/dist/coValue.js +21 -0
  7. package/dist/coValue.js.map +1 -1
  8. package/dist/coValueCore.d.ts +7 -7
  9. package/dist/coValueCore.js +11 -14
  10. package/dist/coValueCore.js.map +1 -1
  11. package/dist/coValues/coList.d.ts +107 -42
  12. package/dist/coValues/coList.js +163 -72
  13. package/dist/coValues/coList.js.map +1 -1
  14. package/dist/coValues/coMap.d.ts +109 -50
  15. package/dist/coValues/coMap.js +161 -109
  16. package/dist/coValues/coMap.js.map +1 -1
  17. package/dist/coValues/coStream.d.ts +78 -33
  18. package/dist/coValues/coStream.js +134 -53
  19. package/dist/coValues/coStream.js.map +1 -1
  20. package/dist/crypto.d.ts +8 -3
  21. package/dist/crypto.js +6 -6
  22. package/dist/crypto.js.map +1 -1
  23. package/dist/group.d.ts +59 -23
  24. package/dist/group.js +83 -25
  25. package/dist/group.js.map +1 -1
  26. package/dist/index.d.ts +14 -11
  27. package/dist/index.js +8 -8
  28. package/dist/index.js.map +1 -1
  29. package/dist/{node.d.ts → localNode.d.ts} +23 -11
  30. package/dist/{node.js → localNode.js} +80 -42
  31. package/dist/localNode.js.map +1 -0
  32. package/dist/media.d.ts +1 -2
  33. package/dist/permissions.js +6 -3
  34. package/dist/permissions.js.map +1 -1
  35. package/dist/queriedCoValues/queriedCoList.d.ts +66 -0
  36. package/dist/queriedCoValues/queriedCoList.js +120 -0
  37. package/dist/queriedCoValues/queriedCoList.js.map +1 -0
  38. package/dist/queriedCoValues/queriedCoMap.d.ts +47 -0
  39. package/dist/queriedCoValues/queriedCoMap.js +83 -0
  40. package/dist/queriedCoValues/queriedCoMap.js.map +1 -0
  41. package/dist/queriedCoValues/queriedCoStream.d.ts +40 -0
  42. package/dist/queriedCoValues/queriedCoStream.js +72 -0
  43. package/dist/queriedCoValues/queriedCoStream.js.map +1 -0
  44. package/dist/queries.d.ts +31 -0
  45. package/dist/queries.js +77 -0
  46. package/dist/queries.js.map +1 -0
  47. package/dist/sync.d.ts +1 -1
  48. package/dist/sync.js +1 -1
  49. package/dist/sync.js.map +1 -1
  50. package/dist/{testUtils.d.ts → tests/testUtils.d.ts} +9 -9
  51. package/dist/{testUtils.js → tests/testUtils.js} +9 -7
  52. package/dist/tests/testUtils.js.map +1 -0
  53. package/package.json +2 -2
  54. package/src/account.ts +6 -6
  55. package/src/coValue.ts +65 -34
  56. package/src/coValueCore.ts +18 -22
  57. package/src/coValues/coList.ts +272 -122
  58. package/src/coValues/coMap.ts +349 -152
  59. package/src/coValues/coStream.ts +258 -94
  60. package/src/crypto.ts +37 -24
  61. package/src/group.ts +112 -46
  62. package/src/index.ts +42 -30
  63. package/src/{node.ts → localNode.ts} +117 -66
  64. package/src/media.ts +1 -2
  65. package/src/permissions.ts +15 -18
  66. package/src/queriedCoValues/queriedCoList.ts +248 -0
  67. package/src/queriedCoValues/queriedCoMap.ts +180 -0
  68. package/src/queriedCoValues/queriedCoStream.ts +125 -0
  69. package/src/queries.ts +142 -0
  70. package/src/sync.ts +2 -2
  71. package/src/{account.test.ts → tests/account.test.ts} +6 -9
  72. package/src/{coValue.test.ts → tests/coValue.test.ts} +120 -114
  73. package/src/{coValueCore.test.ts → tests/coValueCore.test.ts} +7 -7
  74. package/src/{crypto.test.ts → tests/crypto.test.ts} +19 -21
  75. package/src/{group.test.ts → tests/group.test.ts} +2 -2
  76. package/src/{permissions.test.ts → tests/permissions.test.ts} +260 -247
  77. package/src/tests/queries.test.ts +318 -0
  78. package/src/{sync.test.ts → tests/sync.test.ts} +39 -39
  79. package/src/{testUtils.ts → tests/testUtils.ts} +10 -8
  80. package/dist/coValues/static.d.ts +0 -14
  81. package/dist/coValues/static.js +0 -20
  82. package/dist/coValues/static.js.map +0 -1
  83. package/dist/node.js.map +0 -1
  84. package/dist/testUtils.js.map +0 -1
  85. package/src/coValues/static.ts +0 -31
@@ -1,27 +1,18 @@
1
- import { accountOrAgentIDfromSessionID } from '../coValueCore.js';
2
- import { isAccountID } from '../account.js';
3
- import { parseJSON } from '../jsonStringify.js';
4
- /** A collaborative map with precise shape `M` and optional static metadata `Meta` */
5
- export class CoMap {
1
+ import { isCoValue } from "../coValue.js";
2
+ import { accountOrAgentIDfromSessionID } from "../coValueCore.js";
3
+ import { parseJSON } from "../jsonStringify.js";
4
+ export class CoMapView {
6
5
  /** @internal */
7
6
  constructor(core) {
7
+ /** @category 6. Meta */
8
8
  this.type = "comap";
9
+ /** @internal */
10
+ this.atTimeFilter = undefined;
9
11
  this.id = core.id;
10
12
  this.core = core;
11
13
  this.ops = {};
12
- this.fillOpsFromCoValue();
13
- }
14
- get meta() {
15
- return this.core.header.meta;
16
- }
17
- get group() {
18
- return this.core.getGroup();
19
- }
20
- /** @internal */
21
- fillOpsFromCoValue() {
22
- this.ops = {};
23
- for (const { txID, changes, madeAt } of this.core.getValidSortedTransactions()) {
24
- for (const [changeIdx, changeUntyped] of (parseJSON(changes)).entries()) {
14
+ for (const { txID, changes, madeAt, } of core.getValidSortedTransactions()) {
15
+ for (const [changeIdx, changeUntyped] of parseJSON(changes).entries()) {
25
16
  const change = changeUntyped;
26
17
  let entries = this.ops[change.key];
27
18
  if (!entries) {
@@ -37,144 +28,205 @@ export class CoMap {
37
28
  }
38
29
  }
39
30
  }
40
- keys() {
41
- return Object.keys(this.ops);
31
+ /** @category 6. Meta */
32
+ get meta() {
33
+ return this.core.header.meta;
42
34
  }
43
- /** Returns the current value for the given key. */
44
- get(key) {
45
- const ops = this.ops[key];
46
- if (!ops) {
47
- return undefined;
48
- }
49
- const lastEntry = ops[ops.length - 1];
50
- if (lastEntry.op === "del") {
51
- 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);
52
53
  }
53
54
  else {
54
- return lastEntry.value;
55
+ return this.ops[key];
55
56
  }
56
57
  }
57
- getAtTime(key, time) {
58
- const ops = this.ops[key];
59
- if (!ops) {
60
- return undefined;
61
- }
62
- const lastOpBeforeOrAtTime = ops.findLast((op) => op.madeAt <= time);
63
- if (!lastOpBeforeOrAtTime) {
64
- return undefined;
65
- }
66
- if (lastOpBeforeOrAtTime.op === "del") {
67
- 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
+ });
68
68
  }
69
69
  else {
70
- return lastOpBeforeOrAtTime.value;
70
+ return keys;
71
71
  }
72
72
  }
73
- /** Returns the accountID of the last account to modify the value for the given key. */
74
- whoEdited(key) {
75
- const tx = this.getLastTxID(key);
76
- 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) {
77
81
  return undefined;
78
82
  }
79
- const accountID = accountOrAgentIDfromSessionID(tx.sessionID);
80
- if (isAccountID(accountID)) {
81
- 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;
82
89
  }
83
90
  else {
84
- return undefined;
91
+ return lastEntry?.value;
85
92
  }
86
93
  }
87
- getLastTxID(key) {
88
- const ops = this.ops[key];
89
- if (!ops) {
90
- 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
+ }
91
102
  }
92
- const lastEntry = ops[ops.length - 1];
93
- return lastEntry.txID;
103
+ return object;
94
104
  }
95
- getLastEntry(key) {
96
- const ops = this.ops[key];
97
- 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) {
98
113
  return undefined;
99
114
  }
100
- const lastEntry = ops[ops.length - 1];
101
- if (lastEntry.op === "del") {
115
+ const entry = ops[n];
116
+ if (this.atTimeFilter && entry.madeAt > this.atTimeFilter) {
102
117
  return undefined;
103
118
  }
104
- else {
105
- return { at: lastEntry.madeAt, txID: lastEntry.txID, value: lastEntry.value };
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;
106
131
  }
132
+ return this.nthEditAt(key, ops.length - 1);
107
133
  }
108
- getHistory(key) {
109
- const ops = this.ops[key];
134
+ /** @category 5. Edit history */
135
+ *editsAt(key) {
136
+ const ops = this.timeFilteredOps(key);
110
137
  if (!ops) {
111
- return [];
112
- }
113
- const history = [];
114
- for (const op of ops) {
115
- if (op.op === "del") {
116
- history.push({ at: op.madeAt, txID: op.txID, value: undefined });
117
- }
118
- else {
119
- history.push({ at: op.madeAt, txID: op.txID, value: op.value });
120
- }
138
+ return;
121
139
  }
122
- return history;
123
- }
124
- toJSON() {
125
- const json = {};
126
- for (const key of this.keys()) {
127
- const value = this.get(key);
128
- if (value !== undefined) {
129
- json[key] = value;
130
- }
140
+ for (let i = 0; i < ops.length; i++) {
141
+ yield this.nthEditAt(key, i);
131
142
  }
132
- return json;
133
143
  }
144
+ /** @category 3. Subscription */
134
145
  subscribe(listener) {
135
146
  return this.core.subscribe((content) => {
136
147
  listener(content);
137
148
  });
138
149
  }
139
- edit(changer) {
140
- const editable = new WriteableCoMap(this.core);
141
- changer(editable);
142
- return new CoMap(this.core);
143
- }
144
150
  }
145
- export class WriteableCoMap extends CoMap {
146
- /** @internal */
147
- edit(_changer) {
148
- 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);
149
177
  }
150
- /** 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).
151
179
  *
152
- * 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.
153
181
  *
154
- * 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. */
155
- 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") {
156
187
  this.core.makeTransaction([
157
188
  {
158
- op: "set",
189
+ op: "del",
159
190
  key,
160
- value,
161
191
  },
162
192
  ], privacy);
163
- 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;
164
219
  }
165
220
  /** Deletes the value for the given key (setting it to undefined).
166
221
  *
167
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.
168
223
  *
169
- * 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
+ */
170
227
  delete(key, privacy = "private") {
171
- this.core.makeTransaction([
172
- {
173
- op: "del",
174
- key,
175
- },
176
- ], privacy);
177
- this.fillOpsFromCoValue();
228
+ const after = CoMap.prototype.delete.call(this, key, privacy);
229
+ this.ops = after.ops;
178
230
  }
179
231
  }
180
232
  //# sourceMappingURL=coMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/coValues/coMap.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAa,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAuBhD,qFAAqF;AACrF,MAAM,OAAO,KAAK;IAYd,gBAAgB;IAChB,YAAY,IAAiB;QAR7B,SAAI,GAAG,OAAgB,CAAC;QASpB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAA0B,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAEd,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAY,CAAC;IACzC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;IACN,kBAAkB;QACxB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAEd,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE;YAC5E,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CACrC,SAAS,CAAC,OAAO,CAAC,CACrB,CAAC,OAAO,EAAE,EAAE;gBACT,MAAM,MAAM,GAAG,aAA+C,CAAC;gBAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,EAAE;oBACV,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;iBAClC;gBACD,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,MAAM;oBACN,SAAS;oBACT,GAAI,MAAyC;iBAChD,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IAED,IAAI;QACA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,CAAC;IAC9C,CAAC;IAED,mDAAmD;IACnD,GAAG,CAAoB,GAAM;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAEvC,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE;YACxB,OAAO,SAAS,CAAC;SACpB;aAAM;YACH,OAAO,SAAS,CAAC,KAAK,CAAC;SAC1B;IACL,CAAC;IAED,SAAS,CAAoB,GAAM,EAAE,IAAY;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,oBAAoB,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAErE,IAAI,CAAC,oBAAoB,EAAE;YACvB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,oBAAoB,CAAC,EAAE,KAAK,KAAK,EAAE;YACnC,OAAO,SAAS,CAAC;SACpB;aAAM;YACH,OAAO,oBAAoB,CAAC,KAAK,CAAC;SACrC;IACL,CAAC;IAED,uFAAuF;IACvF,SAAS,CAAoB,GAAM;QAC/B,MAAM,EAAE,GAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,EAAE;YACL,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,SAAS,GAAG,6BAA6B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;YACxB,OAAO,SAAS,CAAC;SACpB;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAED,WAAW,CAAoB,GAAM;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAEvC,OAAO,SAAS,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,YAAY,CAAoB,GAAM;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAEvC,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE;YACxB,OAAO,SAAS,CAAC;SACpB;aAAM;YACH,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;SACjF;IACL,CAAC;IAED,UAAU,CAAoB,GAAM;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,EAAE,CAAC;SACb;QAED,MAAM,OAAO,GAAoE,EAAE,CAAC;QAEpF,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;YAClB,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;aACpE;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;aACnE;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM;QACF,MAAM,IAAI,GAAe,EAAE,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACrB;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,QAAyC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,QAAQ,CAAC,OAAyB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,OAAoD;QACrD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAED,MAAM,OAAO,cAGX,SAAQ,KAAc;IACpB,gBAAgB;IAChB,IAAI,CAAC,QAAqD;QACtD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED;;;;6KAIyK;IACzK,GAAG,CAAoB,GAAM,EAAE,KAAW,EAAE,UAAkC,SAAS;QACnF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;YACtB;gBACI,EAAE,EAAE,KAAK;gBACT,GAAG;gBACH,KAAK;aACR;SACJ,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED;;;;2JAIuJ;IACvJ,MAAM,CAAC,GAAY,EAAE,UAAkC,SAAS;QAC5D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;YACtB;gBACI,EAAE,EAAE,KAAK;gBACT,GAAG;aACN;SACJ,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;CACJ"}
1
+ {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import { JsonObject, JsonValue } from "../jsonValue.js";
2
- import { CoID, ReadableCoValue, WriteableCoValue } from "../coValue.js";
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";
6
- import { AccountID } from "../index.js";
7
- export type BinaryChunkInfo = {
5
+ import { AgentID, SessionID, TransactionID } from "../ids.js";
6
+ import { AccountID } from "../account.js";
7
+ export type BinaryStreamInfo = {
8
8
  mimeType: string;
9
9
  fileName?: string;
10
10
  totalSizeBytes?: number;
11
11
  };
12
12
  export type BinaryStreamStart = {
13
13
  type: "start";
14
- } & BinaryChunkInfo;
14
+ } & BinaryStreamInfo;
15
15
  export type BinaryStreamChunk = {
16
16
  type: "chunk";
17
17
  chunk: `binary_U${string}`;
@@ -23,56 +23,101 @@ export type BinaryCoStreamMeta = JsonObject & {
23
23
  type: "binary";
24
24
  };
25
25
  export type BinaryStreamItem = BinaryStreamStart | BinaryStreamChunk | BinaryStreamEnd;
26
- export declare class CoStream<T extends JsonValue, Meta extends JsonObject | null = null> implements ReadableCoValue {
27
- id: CoID<CoStream<T, Meta>>;
26
+ export type CoStreamItem<Item extends JsonValue | CoValue> = {
27
+ value: Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>;
28
+ tx: TransactionID;
29
+ madeAt: number;
30
+ };
31
+ export declare class CoStreamView<Item extends JsonValue | CoValue, Meta extends JsonObject | null = null> implements CoValue {
32
+ id: CoID<this>;
28
33
  type: "costream";
29
34
  core: CoValueCore;
30
35
  items: {
31
- [key: SessionID]: {
32
- item: T;
33
- madeAt: number;
34
- }[];
36
+ [key: SessionID]: CoStreamItem<Item>[];
35
37
  };
38
+ readonly _item: Item;
36
39
  constructor(core: CoValueCore);
37
40
  get meta(): Meta;
38
41
  get group(): Group;
42
+ /** Not yet implemented */
43
+ atTime(_time: number): this;
39
44
  /** @internal */
40
45
  protected fillFromCoValue(): void;
41
- getSingleStream(): T[] | undefined;
42
- getLastItemsPerAccount(): {
43
- [account: AccountID]: T | undefined;
44
- };
45
- getLastItemFrom(account: AccountID): T | undefined;
46
- getLastItemFromMe(): T | 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>;
47
80
  toJSON(): {
48
- [key: SessionID]: T[];
81
+ [key: SessionID]: (Item extends CoValue ? CoID<Item> : Exclude<Item, CoValue>)[];
49
82
  };
50
- subscribe(listener: (coMap: CoStream<T, Meta>) => void): () => void;
51
- edit(changer: (editable: WriteableCoStream<T, Meta>) => void): CoStream<T, Meta>;
83
+ subscribe(listener: (coStream: this) => void): () => void;
52
84
  }
53
- 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 = {
54
95
  type: "binary";
55
- }> extends CoStream<BinaryStreamItem, Meta> implements ReadableCoValue {
56
- id: CoID<BinaryCoStream<Meta>>;
57
- getBinaryChunks(allowUnfinished?: boolean): (BinaryChunkInfo & {
96
+ }> extends CoStreamView<BinaryStreamItem, Meta> implements CoValue {
97
+ id: CoID<this>;
98
+ getBinaryChunks(allowUnfinished?: boolean): (BinaryStreamInfo & {
58
99
  chunks: Uint8Array[];
59
100
  finished: boolean;
60
101
  }) | undefined;
61
- edit(changer: (editable: WriteableBinaryCoStream<Meta>) => void): BinaryCoStream<Meta>;
62
102
  }
63
- export declare class WriteableCoStream<T extends JsonValue, Meta extends JsonObject | null = null> extends CoStream<T, Meta> implements WriteableCoValue {
103
+ export declare class BinaryCoStream<Meta extends BinaryCoStreamMeta = {
104
+ type: "binary";
105
+ }> extends BinaryCoStreamView<Meta> implements CoValue {
64
106
  /** @internal */
65
- edit(_changer: (editable: WriteableCoStream<T, Meta>) => void): CoStream<T, Meta>;
66
- push(item: 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;
67
114
  }
68
- export declare class WriteableBinaryCoStream<Meta extends BinaryCoStreamMeta = {
115
+ export declare class MutableBinaryCoStream<Meta extends BinaryCoStreamMeta = {
69
116
  type: "binary";
70
- }> extends BinaryCoStream<Meta> implements WriteableCoValue {
71
- /** @internal */
72
- edit(_changer: (editable: WriteableBinaryCoStream<Meta>) => void): BinaryCoStream<Meta>;
117
+ }> extends BinaryCoStreamView<Meta> implements CoValue {
73
118
  /** @internal */
74
119
  push(item: BinaryStreamItem, privacy?: "private" | "trusting"): void;
75
- startBinaryStream(settings: BinaryChunkInfo, privacy?: "private" | "trusting"): void;
120
+ startBinaryStream(settings: BinaryStreamInfo, privacy?: "private" | "trusting"): void;
76
121
  pushBinaryStreamChunk(chunk: Uint8Array, privacy?: "private" | "trusting"): void;
77
122
  endBinaryStream(privacy?: "private" | "trusting"): void;
78
123
  }