cojson 0.9.23 → 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 (216) hide show
  1. package/.turbo/turbo-build.log +2 -10
  2. package/CHANGELOG.md +20 -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/{native/coValueState.js → coValueState.js} +6 -4
  13. package/dist/coValueState.js.map +1 -0
  14. package/dist/coValues/account.js.map +1 -0
  15. package/dist/coValues/coList.js.map +1 -0
  16. package/dist/coValues/coMap.js.map +1 -0
  17. package/dist/coValues/coPlainText.js.map +1 -0
  18. package/dist/coValues/coStream.js.map +1 -0
  19. package/dist/{web/coValues → coValues}/group.js +22 -19
  20. package/dist/coValues/group.js.map +1 -0
  21. package/dist/coreToCoValue.js.map +1 -0
  22. package/dist/crypto/PureJSCrypto.js.map +1 -0
  23. package/dist/{native/crypto → crypto}/WasmCrypto.js +1 -16
  24. package/dist/crypto/WasmCrypto.js.map +1 -0
  25. package/dist/crypto/crypto.js.map +1 -0
  26. package/dist/{native/exports.js → exports.js} +2 -0
  27. package/dist/exports.js.map +1 -0
  28. package/dist/ids.js.map +1 -0
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/jsonStringify.js.map +1 -0
  32. package/dist/{native/jsonValue.js.map → jsonValue.js.map} +1 -1
  33. package/dist/localNode.js.map +1 -0
  34. package/dist/logger.js.map +1 -0
  35. package/dist/media.js.map +1 -0
  36. package/dist/{native/permissions.js → permissions.js} +10 -5
  37. package/dist/permissions.js.map +1 -0
  38. package/dist/priority.js.map +1 -0
  39. package/dist/storage/FileSystem.js.map +1 -0
  40. package/dist/storage/chunksAndKnownStates.js.map +1 -0
  41. package/dist/storage/index.js.map +1 -0
  42. package/dist/streamUtils.js.map +1 -0
  43. package/dist/sync.js.map +1 -0
  44. package/dist/typeUtils/accountOrAgentIDfromSessionID.js.map +1 -0
  45. package/dist/typeUtils/expectGroup.js.map +1 -0
  46. package/dist/typeUtils/isAccountID.js.map +1 -0
  47. package/dist/typeUtils/isCoValue.js.map +1 -0
  48. package/package.json +21 -24
  49. package/src/coValueState.ts +6 -4
  50. package/src/coValues/group.ts +38 -27
  51. package/src/crypto/WasmCrypto.ts +3 -17
  52. package/src/exports.ts +3 -0
  53. package/src/index.ts +1 -0
  54. package/src/permissions.ts +15 -3
  55. package/src/tests/coValueState.test.ts +44 -22
  56. package/src/tests/group.test.ts +230 -27
  57. package/tsconfig.json +3 -1
  58. package/dist/native/CoValuesStore.js.map +0 -1
  59. package/dist/native/PeerKnownStates.js.map +0 -1
  60. package/dist/native/PeerState.js.map +0 -1
  61. package/dist/native/PriorityBasedMessageQueue.js.map +0 -1
  62. package/dist/native/SyncStateManager.js.map +0 -1
  63. package/dist/native/base64url.js.map +0 -1
  64. package/dist/native/base64url.test.js.map +0 -1
  65. package/dist/native/coValue.js.map +0 -1
  66. package/dist/native/coValueCore.js.map +0 -1
  67. package/dist/native/coValueState.js.map +0 -1
  68. package/dist/native/coValues/account.js.map +0 -1
  69. package/dist/native/coValues/coList.js.map +0 -1
  70. package/dist/native/coValues/coMap.js.map +0 -1
  71. package/dist/native/coValues/coPlainText.js.map +0 -1
  72. package/dist/native/coValues/coStream.js.map +0 -1
  73. package/dist/native/coValues/group.js +0 -519
  74. package/dist/native/coValues/group.js.map +0 -1
  75. package/dist/native/coreToCoValue.js.map +0 -1
  76. package/dist/native/crypto/PureJSCrypto.js.map +0 -1
  77. package/dist/native/crypto/WasmCrypto.js.map +0 -1
  78. package/dist/native/crypto/crypto.js.map +0 -1
  79. package/dist/native/crypto/export.js +0 -3
  80. package/dist/native/crypto/export.js.map +0 -1
  81. package/dist/native/exports.js.map +0 -1
  82. package/dist/native/ids.js.map +0 -1
  83. package/dist/native/index.native.js +0 -3
  84. package/dist/native/index.native.js.map +0 -1
  85. package/dist/native/jsonStringify.js.map +0 -1
  86. package/dist/native/localNode.js.map +0 -1
  87. package/dist/native/logger.js.map +0 -1
  88. package/dist/native/media.js.map +0 -1
  89. package/dist/native/permissions.js.map +0 -1
  90. package/dist/native/priority.js.map +0 -1
  91. package/dist/native/storage/FileSystem.js.map +0 -1
  92. package/dist/native/storage/chunksAndKnownStates.js.map +0 -1
  93. package/dist/native/storage/index.js.map +0 -1
  94. package/dist/native/streamUtils.js.map +0 -1
  95. package/dist/native/sync.js.map +0 -1
  96. package/dist/native/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  97. package/dist/native/typeUtils/expectGroup.js.map +0 -1
  98. package/dist/native/typeUtils/isAccountID.js.map +0 -1
  99. package/dist/native/typeUtils/isCoValue.js.map +0 -1
  100. package/dist/web/CoValuesStore.js +0 -31
  101. package/dist/web/CoValuesStore.js.map +0 -1
  102. package/dist/web/PeerKnownStates.js +0 -68
  103. package/dist/web/PeerKnownStates.js.map +0 -1
  104. package/dist/web/PeerState.js +0 -103
  105. package/dist/web/PeerState.js.map +0 -1
  106. package/dist/web/PriorityBasedMessageQueue.js +0 -98
  107. package/dist/web/PriorityBasedMessageQueue.js.map +0 -1
  108. package/dist/web/SyncStateManager.js +0 -94
  109. package/dist/web/SyncStateManager.js.map +0 -1
  110. package/dist/web/base64url.js +0 -53
  111. package/dist/web/base64url.js.map +0 -1
  112. package/dist/web/base64url.test.js +0 -25
  113. package/dist/web/base64url.test.js.map +0 -1
  114. package/dist/web/coValue.js +0 -52
  115. package/dist/web/coValue.js.map +0 -1
  116. package/dist/web/coValueCore.js +0 -597
  117. package/dist/web/coValueCore.js.map +0 -1
  118. package/dist/web/coValueState.js +0 -265
  119. package/dist/web/coValueState.js.map +0 -1
  120. package/dist/web/coValues/account.js +0 -100
  121. package/dist/web/coValues/account.js.map +0 -1
  122. package/dist/web/coValues/coList.js +0 -381
  123. package/dist/web/coValues/coList.js.map +0 -1
  124. package/dist/web/coValues/coMap.js +0 -273
  125. package/dist/web/coValues/coMap.js.map +0 -1
  126. package/dist/web/coValues/coPlainText.js +0 -86
  127. package/dist/web/coValues/coPlainText.js.map +0 -1
  128. package/dist/web/coValues/coStream.js +0 -224
  129. package/dist/web/coValues/coStream.js.map +0 -1
  130. package/dist/web/coValues/group.js.map +0 -1
  131. package/dist/web/coreToCoValue.js +0 -46
  132. package/dist/web/coreToCoValue.js.map +0 -1
  133. package/dist/web/crypto/PureJSCrypto.js +0 -94
  134. package/dist/web/crypto/PureJSCrypto.js.map +0 -1
  135. package/dist/web/crypto/WasmCrypto.js +0 -130
  136. package/dist/web/crypto/WasmCrypto.js.map +0 -1
  137. package/dist/web/crypto/crypto.js +0 -152
  138. package/dist/web/crypto/crypto.js.map +0 -1
  139. package/dist/web/crypto/export.js +0 -3
  140. package/dist/web/crypto/export.js.map +0 -1
  141. package/dist/web/exports.js +0 -46
  142. package/dist/web/exports.js.map +0 -1
  143. package/dist/web/ids.js +0 -50
  144. package/dist/web/ids.js.map +0 -1
  145. package/dist/web/index.web.js +0 -3
  146. package/dist/web/index.web.js.map +0 -1
  147. package/dist/web/jsonStringify.js +0 -57
  148. package/dist/web/jsonStringify.js.map +0 -1
  149. package/dist/web/jsonValue.js +0 -2
  150. package/dist/web/jsonValue.js.map +0 -1
  151. package/dist/web/localNode.js +0 -412
  152. package/dist/web/localNode.js.map +0 -1
  153. package/dist/web/logger.js +0 -58
  154. package/dist/web/logger.js.map +0 -1
  155. package/dist/web/media.js +0 -2
  156. package/dist/web/media.js.map +0 -1
  157. package/dist/web/permissions.js +0 -336
  158. package/dist/web/permissions.js.map +0 -1
  159. package/dist/web/priority.js +0 -31
  160. package/dist/web/priority.js.map +0 -1
  161. package/dist/web/storage/FileSystem.js +0 -48
  162. package/dist/web/storage/FileSystem.js.map +0 -1
  163. package/dist/web/storage/chunksAndKnownStates.js +0 -98
  164. package/dist/web/storage/chunksAndKnownStates.js.map +0 -1
  165. package/dist/web/storage/index.js +0 -336
  166. package/dist/web/storage/index.js.map +0 -1
  167. package/dist/web/streamUtils.js +0 -41
  168. package/dist/web/streamUtils.js.map +0 -1
  169. package/dist/web/sync.js +0 -555
  170. package/dist/web/sync.js.map +0 -1
  171. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js +0 -5
  172. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  173. package/dist/web/typeUtils/expectGroup.js +0 -13
  174. package/dist/web/typeUtils/expectGroup.js.map +0 -1
  175. package/dist/web/typeUtils/isAccountID.js +0 -4
  176. package/dist/web/typeUtils/isAccountID.js.map +0 -1
  177. package/dist/web/typeUtils/isCoValue.js +0 -11
  178. package/dist/web/typeUtils/isCoValue.js.map +0 -1
  179. package/src/crypto/export.ts +0 -2
  180. package/src/index.native.ts +0 -2
  181. package/src/index.web.ts +0 -2
  182. package/tsconfig.native.json +0 -10
  183. package/tsconfig.web.json +0 -5
  184. /package/dist/{native/CoValuesStore.js → CoValuesStore.js} +0 -0
  185. /package/dist/{native/PeerKnownStates.js → PeerKnownStates.js} +0 -0
  186. /package/dist/{native/PeerState.js → PeerState.js} +0 -0
  187. /package/dist/{native/PriorityBasedMessageQueue.js → PriorityBasedMessageQueue.js} +0 -0
  188. /package/dist/{native/SyncStateManager.js → SyncStateManager.js} +0 -0
  189. /package/dist/{native/base64url.js → base64url.js} +0 -0
  190. /package/dist/{native/base64url.test.js → base64url.test.js} +0 -0
  191. /package/dist/{native/coValue.js → coValue.js} +0 -0
  192. /package/dist/{native/coValueCore.js → coValueCore.js} +0 -0
  193. /package/dist/{native/coValues → coValues}/account.js +0 -0
  194. /package/dist/{native/coValues → coValues}/coList.js +0 -0
  195. /package/dist/{native/coValues → coValues}/coMap.js +0 -0
  196. /package/dist/{native/coValues → coValues}/coPlainText.js +0 -0
  197. /package/dist/{native/coValues → coValues}/coStream.js +0 -0
  198. /package/dist/{native/coreToCoValue.js → coreToCoValue.js} +0 -0
  199. /package/dist/{native/crypto → crypto}/PureJSCrypto.js +0 -0
  200. /package/dist/{native/crypto → crypto}/crypto.js +0 -0
  201. /package/dist/{native/ids.js → ids.js} +0 -0
  202. /package/dist/{native/jsonStringify.js → jsonStringify.js} +0 -0
  203. /package/dist/{native/jsonValue.js → jsonValue.js} +0 -0
  204. /package/dist/{native/localNode.js → localNode.js} +0 -0
  205. /package/dist/{native/logger.js → logger.js} +0 -0
  206. /package/dist/{native/media.js → media.js} +0 -0
  207. /package/dist/{native/priority.js → priority.js} +0 -0
  208. /package/dist/{native/storage → storage}/FileSystem.js +0 -0
  209. /package/dist/{native/storage → storage}/chunksAndKnownStates.js +0 -0
  210. /package/dist/{native/storage → storage}/index.js +0 -0
  211. /package/dist/{native/streamUtils.js → streamUtils.js} +0 -0
  212. /package/dist/{native/sync.js → sync.js} +0 -0
  213. /package/dist/{native/typeUtils → typeUtils}/accountOrAgentIDfromSessionID.js +0 -0
  214. /package/dist/{native/typeUtils → typeUtils}/expectGroup.js +0 -0
  215. /package/dist/{native/typeUtils → typeUtils}/isAccountID.js +0 -0
  216. /package/dist/{native/typeUtils → typeUtils}/isCoValue.js +0 -0
@@ -1,336 +0,0 @@
1
- import { logger } from "../logger.js";
2
- import { connectedPeers } from "../streamUtils.js";
3
- import { readChunk, readHeader, textDecoder, writeBlock, writeToWal, } from "./FileSystem.js";
4
- import { chunkToKnownState, contentSinceChunk, mergeChunks, } from "./chunksAndKnownStates.js";
5
- const MAX_N_LEVELS = 3;
6
- export class LSMStorage {
7
- constructor(fs, fromLocalNode, toLocalNode) {
8
- this.fs = fs;
9
- this.fromLocalNode = fromLocalNode;
10
- this.toLocalNode = toLocalNode;
11
- this.headerCache = new Map();
12
- this.blockFileHandles = new Map();
13
- this.coValues = {};
14
- this.currentWal = undefined;
15
- let nMsg = 0;
16
- const processMessages = async () => {
17
- for await (const msg of fromLocalNode) {
18
- try {
19
- if (msg === "Disconnected" || msg === "PingTimeout") {
20
- throw new Error("Unexpected Disconnected message");
21
- }
22
- if (msg.action === "done") {
23
- return;
24
- }
25
- if (msg.action === "content") {
26
- await this.handleNewContent(msg);
27
- }
28
- else if (msg.action === "load" || msg.action === "known") {
29
- await this.sendNewContent(msg.id, msg, undefined);
30
- }
31
- }
32
- catch (e) {
33
- logger.error(`Error reading from localNode, handling msg\n\n${JSON.stringify(msg, (k, v) => k === "changes" || k === "encryptedChanges"
34
- ? v.slice(0, 20) + "..."
35
- : v)}
36
- Error: ${e instanceof Error ? e.message : "Unknown error"},
37
- `);
38
- }
39
- nMsg++;
40
- }
41
- };
42
- processMessages().catch((e) => logger.error("Error in processMessages in storage", e));
43
- setTimeout(() => this.compact().catch((e) => {
44
- logger.error("Error while compacting", e);
45
- }), 20000);
46
- }
47
- async sendNewContent(id, known, asDependencyOf) {
48
- let coValue = this.coValues[id];
49
- if (!coValue) {
50
- coValue = await this.loadCoValue(id, this.fs);
51
- }
52
- if (!coValue) {
53
- this.toLocalNode
54
- .push({
55
- id: id,
56
- action: "known",
57
- header: false,
58
- sessions: {},
59
- asDependencyOf,
60
- })
61
- .catch((e) => logger.error("Error while pushing known", e));
62
- return;
63
- }
64
- if (!known?.header && coValue.header?.ruleset.type === "ownedByGroup") {
65
- await this.sendNewContent(coValue.header.ruleset.group, undefined, asDependencyOf || id);
66
- }
67
- else if (!known?.header && coValue.header?.ruleset.type === "group") {
68
- const dependedOnAccountsAndGroups = new Set();
69
- for (const session of Object.values(coValue.sessionEntries)) {
70
- for (const entry of session) {
71
- for (const tx of entry.transactions) {
72
- if (tx.privacy === "trusting") {
73
- const parsedChanges = JSON.parse(tx.changes);
74
- for (const change of parsedChanges) {
75
- if (change.op === "set" && change.key.startsWith("co_")) {
76
- dependedOnAccountsAndGroups.add(change.key);
77
- }
78
- if (change.op === "set" &&
79
- change.key.startsWith("parent_co_")) {
80
- dependedOnAccountsAndGroups.add(change.key.replace("parent_", ""));
81
- }
82
- }
83
- }
84
- }
85
- }
86
- }
87
- for (const accountOrGroup of dependedOnAccountsAndGroups) {
88
- await this.sendNewContent(accountOrGroup, undefined, asDependencyOf || id);
89
- }
90
- }
91
- const newContentMessages = contentSinceChunk(id, coValue, known).map((message) => ({ ...message, asDependencyOf }));
92
- const ourKnown = chunkToKnownState(id, coValue);
93
- this.toLocalNode
94
- .push({
95
- action: "known",
96
- ...ourKnown,
97
- asDependencyOf,
98
- })
99
- .catch((e) => logger.error("Error while pushing known", e));
100
- for (const message of newContentMessages) {
101
- if (Object.keys(message.new).length === 0)
102
- continue;
103
- this.toLocalNode
104
- .push(message)
105
- .catch((e) => logger.error("Error while pushing new content", e));
106
- }
107
- this.coValues[id] = coValue;
108
- }
109
- async withWAL(handler) {
110
- if (!this.currentWal) {
111
- this.currentWal = await this.fs.createFile(`wal-${Date.now()}-${Math.random().toString(36).slice(2)}.jsonl`);
112
- }
113
- await handler(this.currentWal);
114
- }
115
- async handleNewContent(newContent) {
116
- const coValue = this.coValues[newContent.id];
117
- const newContentAsChunk = {
118
- header: newContent.header,
119
- sessionEntries: Object.fromEntries(Object.entries(newContent.new).map(([sessionID, newInSession]) => [
120
- sessionID,
121
- [
122
- {
123
- after: newInSession.after,
124
- lastSignature: newInSession.lastSignature,
125
- transactions: newInSession.newTransactions,
126
- },
127
- ],
128
- ])),
129
- };
130
- if (!coValue) {
131
- if (newContent.header) {
132
- await this.withWAL((wal) => writeToWal(wal, this.fs, newContent.id, newContentAsChunk));
133
- this.coValues[newContent.id] = newContentAsChunk;
134
- }
135
- else {
136
- logger.warn("Incontiguous incoming update for " + newContent.id);
137
- return;
138
- }
139
- }
140
- else {
141
- const merged = mergeChunks(coValue, newContentAsChunk);
142
- if (merged === "nonContigous") {
143
- console.warn("Non-contigous new content for " + newContent.id, Object.entries(coValue.sessionEntries).map(([session, entries]) => entries.map((entry) => ({
144
- session: session,
145
- after: entry.after,
146
- length: entry.transactions.length,
147
- }))), Object.entries(newContentAsChunk.sessionEntries).map(([session, entries]) => entries.map((entry) => ({
148
- session: session,
149
- after: entry.after,
150
- length: entry.transactions.length,
151
- }))));
152
- }
153
- else {
154
- await this.withWAL((wal) => writeToWal(wal, this.fs, newContent.id, newContentAsChunk));
155
- this.coValues[newContent.id] = merged;
156
- }
157
- }
158
- }
159
- async getBlockHandle(blockFile, fs) {
160
- if (!this.blockFileHandles.has(blockFile)) {
161
- this.blockFileHandles.set(blockFile, fs.openToRead(blockFile));
162
- }
163
- return this.blockFileHandles.get(blockFile);
164
- }
165
- async loadCoValue(id, fs) {
166
- const files = this.fileCache || (await fs.listFiles());
167
- this.fileCache = files;
168
- const blockFiles = files.filter((name) => name.startsWith("L")).sort();
169
- let result;
170
- for (const blockFile of blockFiles) {
171
- let cachedHeader = this.headerCache.get(blockFile);
172
- const { handle, size } = await this.getBlockHandle(blockFile, fs);
173
- if (!cachedHeader) {
174
- cachedHeader = {};
175
- const header = await readHeader(blockFile, handle, size, fs);
176
- for (const entry of header) {
177
- cachedHeader[entry.id] = {
178
- start: entry.start,
179
- length: entry.length,
180
- };
181
- }
182
- this.headerCache.set(blockFile, cachedHeader);
183
- }
184
- const headerEntry = cachedHeader[id];
185
- if (headerEntry) {
186
- const nextChunk = await readChunk(handle, headerEntry, fs);
187
- if (result) {
188
- const merged = mergeChunks(result, nextChunk);
189
- if (merged === "nonContigous") {
190
- console.warn("Non-contigous chunks while loading " + id, result, nextChunk);
191
- }
192
- else {
193
- result = merged;
194
- }
195
- }
196
- else {
197
- result = nextChunk;
198
- }
199
- }
200
- // await fs.close(handle);
201
- }
202
- return result;
203
- }
204
- async compact() {
205
- const fileNames = await this.fs.listFiles();
206
- const walFiles = fileNames.filter((name) => name.startsWith("wal-"));
207
- walFiles.sort();
208
- const coValues = new Map();
209
- if (walFiles.length === 0)
210
- return;
211
- const oldWal = this.currentWal;
212
- this.currentWal = undefined;
213
- if (oldWal) {
214
- await this.fs.close(oldWal);
215
- }
216
- for (const fileName of walFiles) {
217
- const { handle, size } = await this.fs.openToRead(fileName);
218
- if (size === 0) {
219
- await this.fs.close(handle);
220
- continue;
221
- }
222
- const bytes = await this.fs.read(handle, 0, size);
223
- const decoded = textDecoder.decode(bytes);
224
- const lines = decoded.split("\n");
225
- for (const line of lines) {
226
- if (line.length === 0)
227
- continue;
228
- const chunk = JSON.parse(line);
229
- const existingChunk = coValues.get(chunk.id);
230
- if (existingChunk) {
231
- const merged = mergeChunks(existingChunk, chunk);
232
- if (merged === "nonContigous") {
233
- console.log("Non-contigous chunks in " + chunk.id + ", " + fileName, existingChunk, chunk);
234
- }
235
- else {
236
- coValues.set(chunk.id, merged);
237
- }
238
- }
239
- else {
240
- coValues.set(chunk.id, chunk);
241
- }
242
- }
243
- await this.fs.close(handle);
244
- }
245
- const highestBlockNumber = fileNames.reduce((acc, name) => {
246
- if (name.startsWith("L" + MAX_N_LEVELS)) {
247
- const num = parseInt(name.split("-")[1]);
248
- if (num > acc) {
249
- return num;
250
- }
251
- }
252
- return acc;
253
- }, 0);
254
- await writeBlock(coValues, MAX_N_LEVELS, highestBlockNumber + 1, this.fs);
255
- for (const walFile of walFiles) {
256
- await this.fs.removeFile(walFile);
257
- }
258
- this.fileCache = undefined;
259
- const fileNames2 = await this.fs.listFiles();
260
- const blockFiles = fileNames2.filter((name) => name.startsWith("L")).sort();
261
- const blockFilesByLevelInOrder = {};
262
- for (const blockFile of blockFiles) {
263
- const level = parseInt(blockFile.split("-")[0].slice(1));
264
- if (!blockFilesByLevelInOrder[level]) {
265
- blockFilesByLevelInOrder[level] = [];
266
- }
267
- blockFilesByLevelInOrder[level].push(blockFile);
268
- }
269
- for (let level = MAX_N_LEVELS; level > 0; level--) {
270
- const nBlocksDesired = Math.pow(2, level);
271
- const blocksInLevel = blockFilesByLevelInOrder[level];
272
- if (blocksInLevel && blocksInLevel.length > nBlocksDesired) {
273
- const coValues = new Map();
274
- for (const blockFile of blocksInLevel) {
275
- const { handle, size } = await this.getBlockHandle(blockFile, this.fs);
276
- if (size === 0) {
277
- continue;
278
- }
279
- const header = await readHeader(blockFile, handle, size, this.fs);
280
- for (const entry of header) {
281
- const chunk = await readChunk(handle, entry, this.fs);
282
- const existingChunk = coValues.get(entry.id);
283
- if (existingChunk) {
284
- const merged = mergeChunks(existingChunk, chunk);
285
- if (merged === "nonContigous") {
286
- console.log("Non-contigous chunks in " + entry.id + ", " + blockFile, existingChunk, chunk);
287
- }
288
- else {
289
- coValues.set(entry.id, merged);
290
- }
291
- }
292
- else {
293
- coValues.set(entry.id, chunk);
294
- }
295
- }
296
- }
297
- let levelBelow = blockFilesByLevelInOrder[level - 1];
298
- if (!levelBelow) {
299
- levelBelow = [];
300
- blockFilesByLevelInOrder[level - 1] = levelBelow;
301
- }
302
- const highestBlockNumberInLevelBelow = levelBelow.reduce((acc, name) => {
303
- const num = parseInt(name.split("-")[1]);
304
- if (num > acc) {
305
- return num;
306
- }
307
- return acc;
308
- }, 0);
309
- const newBlockName = await writeBlock(coValues, level - 1, highestBlockNumberInLevelBelow + 1, this.fs);
310
- levelBelow.push(newBlockName);
311
- // delete blocks that went into this one
312
- for (const blockFile of blocksInLevel) {
313
- const handle = await this.getBlockHandle(blockFile, this.fs);
314
- await this.fs.close(handle.handle);
315
- await this.fs.removeFile(blockFile);
316
- this.blockFileHandles.delete(blockFile);
317
- }
318
- }
319
- }
320
- setTimeout(() => this.compact().catch((e) => {
321
- logger.error("Error while compacting", e);
322
- }), 5000);
323
- }
324
- static asPeer({ fs, trace, localNodeName = "local", }) {
325
- const [localNodeAsPeer, storageAsPeer] = connectedPeers(localNodeName, "storage", {
326
- peer1role: "client",
327
- peer2role: "storage",
328
- trace,
329
- crashOnClose: true,
330
- });
331
- new LSMStorage(fs, localNodeAsPeer.incoming, localNodeAsPeer.outgoing);
332
- // return { ...storageAsPeer, priority: 200 };
333
- return storageAsPeer;
334
- }
335
- }
336
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { Channel } from "queueueue";
2
- export { Channel } from "queueueue";
3
- export function connectedPeers(peer1id, peer2id, { trace = false, peer1role = "peer", peer2role = "peer", crashOnClose = false, } = {}) {
4
- const [from1to2Rx, from1to2Tx] = newQueuePair(trace ? { traceAs: `${peer1id} -> ${peer2id}` } : undefined);
5
- const [from2to1Rx, from2to1Tx] = newQueuePair(trace ? { traceAs: `${peer2id} -> ${peer1id}` } : undefined);
6
- const peer2AsPeer = {
7
- id: peer2id,
8
- incoming: from2to1Rx,
9
- outgoing: from1to2Tx,
10
- role: peer2role,
11
- crashOnClose: crashOnClose,
12
- };
13
- const peer1AsPeer = {
14
- id: peer1id,
15
- incoming: from1to2Rx,
16
- outgoing: from2to1Tx,
17
- role: peer1role,
18
- crashOnClose: crashOnClose,
19
- };
20
- return [peer1AsPeer, peer2AsPeer];
21
- }
22
- export function newQueuePair(options = {}) {
23
- const channel = new Channel();
24
- if (options.traceAs) {
25
- return [
26
- (async function* () {
27
- for await (const msg of channel) {
28
- console.debug(options.traceAs, JSON.stringify(msg, (k, v) => k === "changes" || k === "encryptedChanges"
29
- ? v.slice(0, 20) + "..."
30
- : v, 2));
31
- yield msg;
32
- }
33
- })(),
34
- channel,
35
- ];
36
- }
37
- else {
38
- return [channel.wrap(), channel];
39
- }
40
- }
41
- //# sourceMappingURL=streamUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamUtils.js","sourceRoot":"","sources":["../../src/streamUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,OAAe,EACf,EACE,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,MAAM,EAClB,SAAS,GAAG,MAAM,EAClB,YAAY,GAAG,KAAK,MAMlB,EAAE;IAEN,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,YAAY,CAC3C,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,OAAO,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5D,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,YAAY,CAC3C,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,OAAO,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5D,CAAC;IAEF,MAAM,WAAW,GAAS;QACxB,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,YAAY;KAC3B,CAAC;IAEF,MAAM,WAAW,GAAS;QACxB,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,YAAY;KAC3B,CAAC;IAEF,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,UAAgC,EAAE;IAElC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAe,CAAC;IAE3C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,CAAC,KAAK,SAAS,CAAC;gBACd,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CACX,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,SAAS,CACZ,GAAG,EACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,kBAAkB;wBACzC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;wBACxB,CAAC,CAAC,CAAC,EACP,CAAC,CACF,CACF,CAAC;oBACF,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,EAAE;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}