cojson 0.10.0 → 0.10.1

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 (210) hide show
  1. package/.turbo/turbo-build.log +2 -10
  2. package/CHANGELOG.md +7 -0
  3. package/dist/CoValuesStore.js.map +1 -0
  4. package/dist/PeerKnownStates.js.map +1 -0
  5. package/dist/PeerState.js.map +1 -0
  6. package/dist/PriorityBasedMessageQueue.js.map +1 -0
  7. package/dist/SyncStateManager.js.map +1 -0
  8. package/dist/base64url.js.map +1 -0
  9. package/dist/base64url.test.js.map +1 -0
  10. package/dist/coValue.js.map +1 -0
  11. package/dist/coValueCore.js.map +1 -0
  12. package/dist/coValueState.js.map +1 -0
  13. package/dist/coValues/account.js.map +1 -0
  14. package/dist/coValues/coList.js.map +1 -0
  15. package/dist/coValues/coMap.js.map +1 -0
  16. package/dist/coValues/coPlainText.js.map +1 -0
  17. package/dist/coValues/coStream.js.map +1 -0
  18. package/dist/coValues/group.js.map +1 -0
  19. package/dist/coreToCoValue.js.map +1 -0
  20. package/dist/crypto/PureJSCrypto.js.map +1 -0
  21. package/dist/crypto/WasmCrypto.js.map +1 -0
  22. package/dist/crypto/crypto.js.map +1 -0
  23. package/dist/exports.js.map +1 -0
  24. package/dist/ids.js.map +1 -0
  25. package/dist/index.js +2 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/jsonStringify.js.map +1 -0
  28. package/dist/{native/jsonValue.js.map → jsonValue.js.map} +1 -1
  29. package/dist/localNode.js.map +1 -0
  30. package/dist/logger.js.map +1 -0
  31. package/dist/media.js.map +1 -0
  32. package/dist/permissions.js.map +1 -0
  33. package/dist/priority.js.map +1 -0
  34. package/dist/storage/FileSystem.js.map +1 -0
  35. package/dist/storage/chunksAndKnownStates.js.map +1 -0
  36. package/dist/storage/index.js.map +1 -0
  37. package/dist/streamUtils.js.map +1 -0
  38. package/dist/sync.js.map +1 -0
  39. package/dist/typeUtils/accountOrAgentIDfromSessionID.js.map +1 -0
  40. package/dist/typeUtils/expectGroup.js.map +1 -0
  41. package/dist/typeUtils/isAccountID.js.map +1 -0
  42. package/dist/typeUtils/isCoValue.js.map +1 -0
  43. package/package.json +19 -21
  44. package/src/exports.ts +1 -0
  45. package/src/index.ts +1 -0
  46. package/tsconfig.json +3 -1
  47. package/dist/native/CoValuesStore.js.map +0 -1
  48. package/dist/native/PeerKnownStates.js.map +0 -1
  49. package/dist/native/PeerState.js.map +0 -1
  50. package/dist/native/PriorityBasedMessageQueue.js.map +0 -1
  51. package/dist/native/SyncStateManager.js.map +0 -1
  52. package/dist/native/base64url.js.map +0 -1
  53. package/dist/native/base64url.test.js.map +0 -1
  54. package/dist/native/coValue.js.map +0 -1
  55. package/dist/native/coValueCore.js.map +0 -1
  56. package/dist/native/coValueState.js.map +0 -1
  57. package/dist/native/coValues/account.js.map +0 -1
  58. package/dist/native/coValues/coList.js.map +0 -1
  59. package/dist/native/coValues/coMap.js.map +0 -1
  60. package/dist/native/coValues/coPlainText.js.map +0 -1
  61. package/dist/native/coValues/coStream.js.map +0 -1
  62. package/dist/native/coValues/group.js.map +0 -1
  63. package/dist/native/coreToCoValue.js.map +0 -1
  64. package/dist/native/crypto/PureJSCrypto.js.map +0 -1
  65. package/dist/native/crypto/WasmCrypto.js.map +0 -1
  66. package/dist/native/crypto/crypto.js.map +0 -1
  67. package/dist/native/crypto/export.js +0 -3
  68. package/dist/native/crypto/export.js.map +0 -1
  69. package/dist/native/exports.js.map +0 -1
  70. package/dist/native/ids.js.map +0 -1
  71. package/dist/native/index.native.js +0 -3
  72. package/dist/native/index.native.js.map +0 -1
  73. package/dist/native/jsonStringify.js.map +0 -1
  74. package/dist/native/localNode.js.map +0 -1
  75. package/dist/native/logger.js.map +0 -1
  76. package/dist/native/media.js.map +0 -1
  77. package/dist/native/permissions.js.map +0 -1
  78. package/dist/native/priority.js.map +0 -1
  79. package/dist/native/storage/FileSystem.js.map +0 -1
  80. package/dist/native/storage/chunksAndKnownStates.js.map +0 -1
  81. package/dist/native/storage/index.js.map +0 -1
  82. package/dist/native/streamUtils.js.map +0 -1
  83. package/dist/native/sync.js.map +0 -1
  84. package/dist/native/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  85. package/dist/native/typeUtils/expectGroup.js.map +0 -1
  86. package/dist/native/typeUtils/isAccountID.js.map +0 -1
  87. package/dist/native/typeUtils/isCoValue.js.map +0 -1
  88. package/dist/web/CoValuesStore.js +0 -31
  89. package/dist/web/CoValuesStore.js.map +0 -1
  90. package/dist/web/PeerKnownStates.js +0 -68
  91. package/dist/web/PeerKnownStates.js.map +0 -1
  92. package/dist/web/PeerState.js +0 -103
  93. package/dist/web/PeerState.js.map +0 -1
  94. package/dist/web/PriorityBasedMessageQueue.js +0 -98
  95. package/dist/web/PriorityBasedMessageQueue.js.map +0 -1
  96. package/dist/web/SyncStateManager.js +0 -94
  97. package/dist/web/SyncStateManager.js.map +0 -1
  98. package/dist/web/base64url.js +0 -53
  99. package/dist/web/base64url.js.map +0 -1
  100. package/dist/web/base64url.test.js +0 -25
  101. package/dist/web/base64url.test.js.map +0 -1
  102. package/dist/web/coValue.js +0 -52
  103. package/dist/web/coValue.js.map +0 -1
  104. package/dist/web/coValueCore.js +0 -597
  105. package/dist/web/coValueCore.js.map +0 -1
  106. package/dist/web/coValueState.js +0 -267
  107. package/dist/web/coValueState.js.map +0 -1
  108. package/dist/web/coValues/account.js +0 -100
  109. package/dist/web/coValues/account.js.map +0 -1
  110. package/dist/web/coValues/coList.js +0 -381
  111. package/dist/web/coValues/coList.js.map +0 -1
  112. package/dist/web/coValues/coMap.js +0 -273
  113. package/dist/web/coValues/coMap.js.map +0 -1
  114. package/dist/web/coValues/coPlainText.js +0 -86
  115. package/dist/web/coValues/coPlainText.js.map +0 -1
  116. package/dist/web/coValues/coStream.js +0 -224
  117. package/dist/web/coValues/coStream.js.map +0 -1
  118. package/dist/web/coValues/group.js +0 -522
  119. package/dist/web/coValues/group.js.map +0 -1
  120. package/dist/web/coreToCoValue.js +0 -46
  121. package/dist/web/coreToCoValue.js.map +0 -1
  122. package/dist/web/crypto/PureJSCrypto.js +0 -94
  123. package/dist/web/crypto/PureJSCrypto.js.map +0 -1
  124. package/dist/web/crypto/WasmCrypto.js +0 -115
  125. package/dist/web/crypto/WasmCrypto.js.map +0 -1
  126. package/dist/web/crypto/crypto.js +0 -152
  127. package/dist/web/crypto/crypto.js.map +0 -1
  128. package/dist/web/crypto/export.js +0 -3
  129. package/dist/web/crypto/export.js.map +0 -1
  130. package/dist/web/exports.js +0 -48
  131. package/dist/web/exports.js.map +0 -1
  132. package/dist/web/ids.js +0 -50
  133. package/dist/web/ids.js.map +0 -1
  134. package/dist/web/index.web.js +0 -3
  135. package/dist/web/index.web.js.map +0 -1
  136. package/dist/web/jsonStringify.js +0 -57
  137. package/dist/web/jsonStringify.js.map +0 -1
  138. package/dist/web/jsonValue.js +0 -2
  139. package/dist/web/jsonValue.js.map +0 -1
  140. package/dist/web/localNode.js +0 -412
  141. package/dist/web/localNode.js.map +0 -1
  142. package/dist/web/logger.js +0 -58
  143. package/dist/web/logger.js.map +0 -1
  144. package/dist/web/media.js +0 -2
  145. package/dist/web/media.js.map +0 -1
  146. package/dist/web/permissions.js +0 -341
  147. package/dist/web/permissions.js.map +0 -1
  148. package/dist/web/priority.js +0 -31
  149. package/dist/web/priority.js.map +0 -1
  150. package/dist/web/storage/FileSystem.js +0 -48
  151. package/dist/web/storage/FileSystem.js.map +0 -1
  152. package/dist/web/storage/chunksAndKnownStates.js +0 -98
  153. package/dist/web/storage/chunksAndKnownStates.js.map +0 -1
  154. package/dist/web/storage/index.js +0 -336
  155. package/dist/web/storage/index.js.map +0 -1
  156. package/dist/web/streamUtils.js +0 -41
  157. package/dist/web/streamUtils.js.map +0 -1
  158. package/dist/web/sync.js +0 -555
  159. package/dist/web/sync.js.map +0 -1
  160. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js +0 -5
  161. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  162. package/dist/web/typeUtils/expectGroup.js +0 -13
  163. package/dist/web/typeUtils/expectGroup.js.map +0 -1
  164. package/dist/web/typeUtils/isAccountID.js +0 -4
  165. package/dist/web/typeUtils/isAccountID.js.map +0 -1
  166. package/dist/web/typeUtils/isCoValue.js +0 -11
  167. package/dist/web/typeUtils/isCoValue.js.map +0 -1
  168. package/src/crypto/export.ts +0 -2
  169. package/src/index.native.ts +0 -2
  170. package/src/index.web.ts +0 -2
  171. package/tsconfig.native.json +0 -10
  172. package/tsconfig.web.json +0 -5
  173. /package/dist/{native/CoValuesStore.js → CoValuesStore.js} +0 -0
  174. /package/dist/{native/PeerKnownStates.js → PeerKnownStates.js} +0 -0
  175. /package/dist/{native/PeerState.js → PeerState.js} +0 -0
  176. /package/dist/{native/PriorityBasedMessageQueue.js → PriorityBasedMessageQueue.js} +0 -0
  177. /package/dist/{native/SyncStateManager.js → SyncStateManager.js} +0 -0
  178. /package/dist/{native/base64url.js → base64url.js} +0 -0
  179. /package/dist/{native/base64url.test.js → base64url.test.js} +0 -0
  180. /package/dist/{native/coValue.js → coValue.js} +0 -0
  181. /package/dist/{native/coValueCore.js → coValueCore.js} +0 -0
  182. /package/dist/{native/coValueState.js → coValueState.js} +0 -0
  183. /package/dist/{native/coValues → coValues}/account.js +0 -0
  184. /package/dist/{native/coValues → coValues}/coList.js +0 -0
  185. /package/dist/{native/coValues → coValues}/coMap.js +0 -0
  186. /package/dist/{native/coValues → coValues}/coPlainText.js +0 -0
  187. /package/dist/{native/coValues → coValues}/coStream.js +0 -0
  188. /package/dist/{native/coValues → coValues}/group.js +0 -0
  189. /package/dist/{native/coreToCoValue.js → coreToCoValue.js} +0 -0
  190. /package/dist/{native/crypto → crypto}/PureJSCrypto.js +0 -0
  191. /package/dist/{native/crypto → crypto}/WasmCrypto.js +0 -0
  192. /package/dist/{native/crypto → crypto}/crypto.js +0 -0
  193. /package/dist/{native/exports.js → exports.js} +0 -0
  194. /package/dist/{native/ids.js → ids.js} +0 -0
  195. /package/dist/{native/jsonStringify.js → jsonStringify.js} +0 -0
  196. /package/dist/{native/jsonValue.js → jsonValue.js} +0 -0
  197. /package/dist/{native/localNode.js → localNode.js} +0 -0
  198. /package/dist/{native/logger.js → logger.js} +0 -0
  199. /package/dist/{native/media.js → media.js} +0 -0
  200. /package/dist/{native/permissions.js → permissions.js} +0 -0
  201. /package/dist/{native/priority.js → priority.js} +0 -0
  202. /package/dist/{native/storage → storage}/FileSystem.js +0 -0
  203. /package/dist/{native/storage → storage}/chunksAndKnownStates.js +0 -0
  204. /package/dist/{native/storage → storage}/index.js +0 -0
  205. /package/dist/{native/streamUtils.js → streamUtils.js} +0 -0
  206. /package/dist/{native/sync.js → sync.js} +0 -0
  207. /package/dist/{native/typeUtils → typeUtils}/accountOrAgentIDfromSessionID.js +0 -0
  208. /package/dist/{native/typeUtils → typeUtils}/expectGroup.js +0 -0
  209. /package/dist/{native/typeUtils → typeUtils}/isAccountID.js +0 -0
  210. /package/dist/{native/typeUtils → typeUtils}/isCoValue.js +0 -0
@@ -1,381 +0,0 @@
1
- import { accountOrAgentIDfromSessionID } from "../typeUtils/accountOrAgentIDfromSessionID.js";
2
- import { isCoValue } from "../typeUtils/isCoValue.js";
3
- export class RawCoListView {
4
- /** @internal */
5
- constructor(core) {
6
- /** @category 6. Meta */
7
- this.type = "colist";
8
- this.id = core.id;
9
- this.core = core;
10
- this.afterStart = [];
11
- this.beforeEnd = [];
12
- this.insertions = {};
13
- this.deletionsByInsertion = {};
14
- this.insertions = {};
15
- this.deletionsByInsertion = {};
16
- this.afterStart = [];
17
- this.beforeEnd = [];
18
- for (const { txID, changes, madeAt, } of this.core.getValidSortedTransactions()) {
19
- for (const [changeIdx, changeUntyped] of changes.entries()) {
20
- const change = changeUntyped;
21
- if (change.op === "pre" || change.op === "app") {
22
- let sessionEntry = this.insertions[txID.sessionID];
23
- if (!sessionEntry) {
24
- sessionEntry = {};
25
- this.insertions[txID.sessionID] = sessionEntry;
26
- }
27
- let txEntry = sessionEntry[txID.txIndex];
28
- if (!txEntry) {
29
- txEntry = {};
30
- sessionEntry[txID.txIndex] = txEntry;
31
- }
32
- txEntry[changeIdx] = {
33
- madeAt,
34
- predecessors: [],
35
- successors: [],
36
- ...change,
37
- };
38
- if (change.op === "pre") {
39
- if (change.before === "end") {
40
- this.beforeEnd.push({
41
- ...txID,
42
- changeIdx,
43
- });
44
- }
45
- else {
46
- const beforeEntry = this.insertions[change.before.sessionID]?.[change.before.txIndex]?.[change.before.changeIdx];
47
- if (!beforeEntry) {
48
- continue;
49
- }
50
- beforeEntry.predecessors.splice(0, 0, {
51
- ...txID,
52
- changeIdx,
53
- });
54
- }
55
- }
56
- else {
57
- if (change.after === "start") {
58
- this.afterStart.push({
59
- ...txID,
60
- changeIdx,
61
- });
62
- }
63
- else {
64
- const afterEntry = this.insertions[change.after.sessionID]?.[change.after.txIndex]?.[change.after.changeIdx];
65
- if (!afterEntry) {
66
- continue;
67
- }
68
- afterEntry.successors.push({
69
- ...txID,
70
- changeIdx,
71
- });
72
- }
73
- }
74
- }
75
- else if (change.op === "del") {
76
- let sessionEntry = this.deletionsByInsertion[change.insertion.sessionID];
77
- if (!sessionEntry) {
78
- sessionEntry = {};
79
- this.deletionsByInsertion[change.insertion.sessionID] =
80
- sessionEntry;
81
- }
82
- let txEntry = sessionEntry[change.insertion.txIndex];
83
- if (!txEntry) {
84
- txEntry = {};
85
- sessionEntry[change.insertion.txIndex] = txEntry;
86
- }
87
- let changeEntry = txEntry[change.insertion.changeIdx];
88
- if (!changeEntry) {
89
- changeEntry = [];
90
- txEntry[change.insertion.changeIdx] = changeEntry;
91
- }
92
- changeEntry.push({
93
- madeAt,
94
- deletionID: {
95
- ...txID,
96
- changeIdx,
97
- },
98
- ...change,
99
- });
100
- }
101
- else {
102
- throw new Error("Unknown list operation " + change.op);
103
- }
104
- }
105
- }
106
- }
107
- /** @category 6. Meta */
108
- get headerMeta() {
109
- return this.core.header.meta;
110
- }
111
- /** @category 6. Meta */
112
- get group() {
113
- return this.core.getGroup();
114
- }
115
- /**
116
- * Not yet implemented
117
- *
118
- * @category 4. Time travel
119
- */
120
- atTime(_time) {
121
- throw new Error("Not yet implemented");
122
- }
123
- /**
124
- * Get the item currently at `idx`.
125
- *
126
- * @category 1. Reading
127
- */
128
- get(idx) {
129
- const entry = this.entries()[idx];
130
- if (!entry) {
131
- return undefined;
132
- }
133
- return entry.value;
134
- }
135
- /**
136
- * Returns the current items in the CoList as an array.
137
- *
138
- * @category 1. Reading
139
- **/
140
- asArray() {
141
- return this.entries().map((entry) => entry.value);
142
- }
143
- /** @internal */
144
- entries() {
145
- if (this._cachedEntries) {
146
- return this._cachedEntries;
147
- }
148
- const arr = this.entriesUncached();
149
- this._cachedEntries = arr;
150
- return arr;
151
- }
152
- /** @internal */
153
- entriesUncached() {
154
- const arr = [];
155
- for (const opID of this.afterStart) {
156
- this.fillArrayFromOpID(opID, arr);
157
- }
158
- for (const opID of this.beforeEnd) {
159
- this.fillArrayFromOpID(opID, arr);
160
- }
161
- return arr;
162
- }
163
- /** @internal */
164
- fillArrayFromOpID(opID, arr) {
165
- const entry = this.insertions[opID.sessionID]?.[opID.txIndex]?.[opID.changeIdx];
166
- if (!entry) {
167
- throw new Error("Missing op " + opID);
168
- }
169
- for (const predecessor of entry.predecessors) {
170
- this.fillArrayFromOpID(predecessor, arr);
171
- }
172
- const deleted = (this.deletionsByInsertion[opID.sessionID]?.[opID.txIndex]?.[opID.changeIdx]?.length || 0) > 0;
173
- if (!deleted) {
174
- arr.push({
175
- value: entry.value,
176
- madeAt: entry.madeAt,
177
- opID,
178
- });
179
- }
180
- // traverse successors in reverse for correct insertion behavior
181
- for (let i = entry.successors.length - 1; i >= 0; i--) {
182
- const successor = entry.successors[i];
183
- this.fillArrayFromOpID(successor, arr);
184
- }
185
- }
186
- /**
187
- * Returns the current items in the CoList as an array. (alias of `asArray`)
188
- *
189
- * @category 1. Reading
190
- */
191
- toJSON() {
192
- return this.asArray();
193
- }
194
- /** @category 5. Edit history */
195
- editAt(idx) {
196
- const entry = this.entries()[idx];
197
- if (!entry) {
198
- return undefined;
199
- }
200
- const madeAt = new Date(entry.madeAt);
201
- const by = accountOrAgentIDfromSessionID(entry.opID.sessionID);
202
- const value = entry.value;
203
- return {
204
- by,
205
- tx: {
206
- sessionID: entry.opID.sessionID,
207
- txIndex: entry.opID.txIndex,
208
- },
209
- at: madeAt,
210
- value,
211
- };
212
- }
213
- /** @category 5. Edit history */
214
- deletionEdits() {
215
- const edits = [];
216
- for (const sessionID in this.deletionsByInsertion) {
217
- const sessionEntry = this.deletionsByInsertion[sessionID];
218
- for (const txIdx in sessionEntry) {
219
- const txEntry = sessionEntry[Number(txIdx)];
220
- for (const changeIdx in txEntry) {
221
- const changeEntry = txEntry[Number(changeIdx)];
222
- for (const deletion of changeEntry || []) {
223
- const madeAt = new Date(deletion.madeAt);
224
- const by = accountOrAgentIDfromSessionID(deletion.deletionID.sessionID);
225
- edits.push({
226
- by,
227
- tx: deletion.deletionID,
228
- at: madeAt,
229
- });
230
- }
231
- }
232
- }
233
- }
234
- return edits;
235
- }
236
- /** @category 3. Subscription */
237
- subscribe(listener) {
238
- return this.core.subscribe((content) => {
239
- listener(content);
240
- });
241
- }
242
- }
243
- export class RawCoList extends RawCoListView {
244
- /** Appends `item` after the item currently at index `after`.
245
- *
246
- * 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.
247
- *
248
- * If `privacy` is `"trusting"`, `item` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
249
- *
250
- * @category 2. Editing
251
- **/
252
- append(item, after, privacy = "private") {
253
- this.appendItems([item], after, privacy);
254
- }
255
- appendItems(items, after, privacy = "private") {
256
- const entries = this.entries();
257
- after =
258
- after === undefined
259
- ? entries.length > 0
260
- ? entries.length - 1
261
- : 0
262
- : after;
263
- let opIDBefore;
264
- if (entries.length > 0) {
265
- const entryBefore = entries[after];
266
- if (!entryBefore) {
267
- throw new Error("Invalid index " + after);
268
- }
269
- opIDBefore = entryBefore.opID;
270
- }
271
- else {
272
- if (after !== 0) {
273
- throw new Error("Invalid index " + after);
274
- }
275
- opIDBefore = "start";
276
- }
277
- const changes = items.map((item) => ({
278
- op: "app",
279
- value: isCoValue(item) ? item.id : item,
280
- after: opIDBefore,
281
- }));
282
- if (opIDBefore !== "start") {
283
- // When added as successors we need to reverse the items
284
- // to keep the same insertion order
285
- changes.reverse();
286
- }
287
- this.core.makeTransaction(changes, privacy);
288
- this.rebuildFromCore();
289
- }
290
- /**
291
- * Prepends `item` before the item currently at index `before`.
292
- *
293
- * 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.
294
- *
295
- * If `privacy` is `"trusting"`, `item` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
296
- *
297
- * @category 2. Editing
298
- */
299
- prepend(item, before, privacy = "private") {
300
- const entries = this.entries();
301
- before = before === undefined ? 0 : before;
302
- let opIDAfter;
303
- if (entries.length > 0) {
304
- const entryAfter = entries[before];
305
- if (entryAfter) {
306
- opIDAfter = entryAfter.opID;
307
- }
308
- else {
309
- if (before !== entries.length) {
310
- throw new Error("Invalid index " + before);
311
- }
312
- opIDAfter = "end";
313
- }
314
- }
315
- else {
316
- if (before !== 0) {
317
- throw new Error("Invalid index " + before);
318
- }
319
- opIDAfter = "end";
320
- }
321
- this.core.makeTransaction([
322
- {
323
- op: "pre",
324
- value: isCoValue(item) ? item.id : item,
325
- before: opIDAfter,
326
- },
327
- ], privacy);
328
- this.rebuildFromCore();
329
- }
330
- /** Deletes the item at index `at`.
331
- *
332
- * 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.
333
- *
334
- * 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.
335
- *
336
- * @category 2. Editing
337
- **/
338
- delete(at, privacy = "private") {
339
- const entries = this.entries();
340
- const entry = entries[at];
341
- if (!entry) {
342
- throw new Error("Invalid index " + at);
343
- }
344
- this.core.makeTransaction([
345
- {
346
- op: "del",
347
- insertion: entry.opID,
348
- },
349
- ], privacy);
350
- this.rebuildFromCore();
351
- }
352
- replace(at, newItem, privacy = "private") {
353
- const entries = this.entries();
354
- const entry = entries[at];
355
- if (!entry) {
356
- throw new Error("Invalid index " + at);
357
- }
358
- this.core.makeTransaction([
359
- {
360
- op: "app",
361
- value: isCoValue(newItem) ? newItem.id : newItem,
362
- after: entry.opID,
363
- },
364
- {
365
- op: "del",
366
- insertion: entry.opID,
367
- },
368
- ], privacy);
369
- this.rebuildFromCore();
370
- }
371
- /** @internal */
372
- rebuildFromCore() {
373
- const listAfter = new RawCoList(this.core);
374
- this.afterStart = listAfter.afterStart;
375
- this.beforeEnd = listAfter.beforeEnd;
376
- this.insertions = listAfter.insertions;
377
- this.deletionsByInsertion = listAfter.deletionsByInsertion;
378
- this._cachedEntries = undefined;
379
- }
380
- }
381
- //# sourceMappingURL=coList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coList.js","sourceRoot":"","sources":["../../../src/coValues/coList.ts"],"names":[],"mappings":"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"}
@@ -1,273 +0,0 @@
1
- import { accountOrAgentIDfromSessionID } from "../typeUtils/accountOrAgentIDfromSessionID.js";
2
- import { isCoValue } from "../typeUtils/isCoValue.js";
3
- export class RawCoMapView {
4
- /** @internal */
5
- constructor(core, options) {
6
- /** @category 6. Meta */
7
- this.type = "comap";
8
- /** @internal */
9
- this.atTimeFilter = undefined;
10
- this.id = core.id;
11
- this.core = core;
12
- this.latestTxMadeAt = 0;
13
- this.ignorePrivateTransactions =
14
- options?.ignorePrivateTransactions ?? false;
15
- this.ops = {};
16
- this.latest = {};
17
- this.knownTransactions = {};
18
- this.processNewTransactions();
19
- }
20
- processNewTransactions() {
21
- if (this.isTimeTravelEntity()) {
22
- throw new Error("Cannot process transactions on a time travel entity");
23
- }
24
- const { ops } = this;
25
- const changedEntries = new Map();
26
- const nextValidTransactions = this.core.getValidTransactions({
27
- ignorePrivateTransactions: this.ignorePrivateTransactions,
28
- knownTransactions: this.knownTransactions,
29
- });
30
- for (const { txID, changes, madeAt } of nextValidTransactions) {
31
- for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
32
- const change = changes[changeIdx];
33
- const entry = {
34
- txID,
35
- madeAt,
36
- changeIdx,
37
- change,
38
- };
39
- if (madeAt > this.latestTxMadeAt) {
40
- this.latestTxMadeAt = madeAt;
41
- }
42
- const entries = ops[change.key];
43
- if (!entries) {
44
- const entries = [entry];
45
- ops[change.key] = entries;
46
- changedEntries.set(change.key, entries);
47
- }
48
- else {
49
- entries.push(entry);
50
- changedEntries.set(change.key, entries);
51
- }
52
- this.knownTransactions[txID.sessionID] = Math.max(this.knownTransactions[txID.sessionID] ?? 0, txID.txIndex);
53
- }
54
- }
55
- for (const entries of changedEntries.values()) {
56
- entries.sort(this.core.compareTransactions);
57
- }
58
- for (const [key, entries] of changedEntries.entries()) {
59
- this.latest[key] = entries[entries.length - 1];
60
- }
61
- }
62
- isTimeTravelEntity() {
63
- return Boolean(this.atTimeFilter);
64
- }
65
- /** @category 6. Meta */
66
- get headerMeta() {
67
- return this.core.header.meta;
68
- }
69
- /** @category 6. Meta */
70
- get group() {
71
- return this.core.getGroup();
72
- }
73
- /** @category 4. Time travel */
74
- atTime(time) {
75
- if (time >= this.latestTxMadeAt) {
76
- return this;
77
- }
78
- else {
79
- const clone = Object.create(this);
80
- clone.atTimeFilter = time;
81
- clone.latest = {};
82
- return clone;
83
- }
84
- }
85
- /** @internal */
86
- timeFilteredOps(key) {
87
- if (key === "constructor") {
88
- return undefined;
89
- }
90
- const atTimeFilter = this.atTimeFilter;
91
- if (atTimeFilter) {
92
- return this.ops[key]?.filter((op) => op.madeAt <= atTimeFilter);
93
- }
94
- else {
95
- return this.ops[key];
96
- }
97
- }
98
- /**
99
- * Get all keys currently in the map.
100
- *
101
- * @category 1. Reading */
102
- keys() {
103
- return Object.keys(this.ops).filter((key) => {
104
- const entry = this.getRaw(key);
105
- if (entry === undefined) {
106
- return false;
107
- }
108
- if (entry.change.op === "del") {
109
- return false;
110
- }
111
- return true;
112
- });
113
- }
114
- getRaw(key) {
115
- let latestChange = this.latest[key];
116
- if (latestChange === undefined) {
117
- const entries = this.ops[key];
118
- // Time travel values are lazily computed
119
- if (entries && !(key in this.latest)) {
120
- const atTimeFilter = this.atTimeFilter;
121
- if (!atTimeFilter) {
122
- latestChange = entries[entries.length - 1];
123
- }
124
- else {
125
- latestChange = entries.findLast((op) => op.madeAt <= atTimeFilter);
126
- }
127
- this.latest[key] = latestChange;
128
- }
129
- if (latestChange === undefined) {
130
- return undefined;
131
- }
132
- }
133
- return latestChange;
134
- }
135
- /**
136
- * Returns the current value for the given key.
137
- *
138
- * @category 1. Reading
139
- **/
140
- get(key) {
141
- const entry = this.getRaw(key);
142
- if (entry === undefined) {
143
- return undefined;
144
- }
145
- if (entry.change.op === "del") {
146
- return undefined;
147
- }
148
- else {
149
- return entry.change.value;
150
- }
151
- }
152
- /** @category 1. Reading */
153
- asObject() {
154
- const object = {};
155
- for (const key of Object.keys(this.ops)) {
156
- const value = this.get(key);
157
- if (value !== undefined) {
158
- object[key] = value;
159
- }
160
- }
161
- return object;
162
- }
163
- /** @category 1. Reading */
164
- toJSON() {
165
- return this.asObject();
166
- }
167
- /** @category 5. Edit history */
168
- nthEditAt(key, n) {
169
- const ops = this.ops[key];
170
- const atTimeFilter = this.atTimeFilter;
171
- const entry = ops?.[n];
172
- if (!entry) {
173
- return undefined;
174
- }
175
- if (atTimeFilter && entry.madeAt > atTimeFilter) {
176
- return undefined;
177
- }
178
- return operationToEditEntry(entry);
179
- }
180
- /** @category 5. Edit history */
181
- lastEditAt(key) {
182
- const entry = this.getRaw(key);
183
- if (!entry) {
184
- return undefined;
185
- }
186
- return operationToEditEntry(entry);
187
- }
188
- /** @category 5. Edit history */
189
- *editsAt(key) {
190
- const entries = this.ops[key];
191
- if (!entries) {
192
- return;
193
- }
194
- const atTimeFilter = this.atTimeFilter;
195
- for (const entry of entries) {
196
- // Entries are sorted by madeAt
197
- if (atTimeFilter && entry.madeAt > atTimeFilter) {
198
- return;
199
- }
200
- yield operationToEditEntry(entry);
201
- }
202
- }
203
- /** @category 3. Subscription */
204
- subscribe(listener) {
205
- return this.core.subscribe((content) => {
206
- listener(content);
207
- });
208
- }
209
- }
210
- /** A collaborative map with precise shape `Shape` and optional static metadata `Meta` */
211
- export class RawCoMap extends RawCoMapView {
212
- /** Set a new value for the given key.
213
- *
214
- * 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.
215
- *
216
- * 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.
217
- *
218
- * @category 2. Editing
219
- **/
220
- set(key, value, privacy = "private") {
221
- if (this.isTimeTravelEntity()) {
222
- throw new Error("Cannot set value on a time travel entity");
223
- }
224
- this.core.makeTransaction([
225
- {
226
- op: "set",
227
- key,
228
- value: isCoValue(value) ? value.id : value,
229
- },
230
- ], privacy);
231
- this.processNewTransactions();
232
- }
233
- assign(entries, privacy = "private") {
234
- if (this.isTimeTravelEntity()) {
235
- throw new Error("Cannot set value on a time travel entity");
236
- }
237
- this.core.makeTransaction(Object.entries(entries).map(([key, value]) => ({
238
- op: "set",
239
- key,
240
- value: isCoValue(value) ? value.id : value,
241
- })), privacy);
242
- this.processNewTransactions();
243
- }
244
- /** Delete the given key (setting it to undefined).
245
- *
246
- * 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.
247
- *
248
- * If `privacy` is `"trusting"`, `key` is stored in plaintext in the transaction, visible to everyone who gets a hold of it, including sync servers.
249
- *
250
- * @category 2. Editing
251
- **/
252
- delete(key, privacy = "private") {
253
- if (this.isTimeTravelEntity()) {
254
- throw new Error("Cannot delete value on a time travel entity");
255
- }
256
- this.core.makeTransaction([
257
- {
258
- op: "del",
259
- key,
260
- },
261
- ], privacy);
262
- this.processNewTransactions();
263
- }
264
- }
265
- export function operationToEditEntry(op) {
266
- return {
267
- by: accountOrAgentIDfromSessionID(op.txID.sessionID),
268
- tx: op.txID,
269
- at: new Date(op.madeAt),
270
- value: op.change.op === "del" ? undefined : op.change.value,
271
- };
272
- }
273
- //# sourceMappingURL=coMap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}