mindoodb 0.0.57 → 0.0.59

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 (68) hide show
  1. package/README-server.md +25 -1
  2. package/dist/browser/index.mjs +1 -0
  3. package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts +93 -0
  4. package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts.map +1 -0
  5. package/dist/core/appendonlystores/network/IrohNetworkTransport.js +260 -0
  6. package/dist/core/appendonlystores/network/IrohNetworkTransport.js.map +1 -0
  7. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts +121 -0
  8. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -0
  9. package/dist/core/appendonlystores/network/IrohStreamIO.js +213 -0
  10. package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -0
  11. package/dist/core/appendonlystores/network/irohLocator.d.ts +28 -0
  12. package/dist/core/appendonlystores/network/irohLocator.d.ts.map +1 -0
  13. package/dist/core/appendonlystores/network/irohLocator.js +94 -0
  14. package/dist/core/appendonlystores/network/irohLocator.js.map +1 -0
  15. package/dist/core/appendonlystores/network/reactNativeIrohStreamIO.d.ts +7 -0
  16. package/dist/core/appendonlystores/network/reactNativeIrohStreamIO.d.ts.map +1 -0
  17. package/dist/core/appendonlystores/network/reactNativeIrohStreamIO.js +48 -0
  18. package/dist/core/appendonlystores/network/reactNativeIrohStreamIO.js.map +1 -0
  19. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts +60 -0
  20. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts.map +1 -0
  21. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js +349 -0
  22. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js.map +1 -0
  23. package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts +51 -0
  24. package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts.map +1 -0
  25. package/dist/core/appendonlystores/sqlite/SqliteDriver.js +290 -0
  26. package/dist/core/appendonlystores/sqlite/SqliteDriver.js.map +1 -0
  27. package/dist/core/appendonlystores/sqlite/expoSqliteDriver.d.ts +13 -0
  28. package/dist/core/appendonlystores/sqlite/expoSqliteDriver.d.ts.map +1 -0
  29. package/dist/core/appendonlystores/sqlite/expoSqliteDriver.js +26 -0
  30. package/dist/core/appendonlystores/sqlite/expoSqliteDriver.js.map +1 -0
  31. package/dist/core/index.d.ts +1 -0
  32. package/dist/core/index.d.ts.map +1 -1
  33. package/dist/core/index.js +4 -2
  34. package/dist/core/index.js.map +1 -1
  35. package/dist/iroh/index.d.ts +8 -0
  36. package/dist/iroh/index.d.ts.map +1 -0
  37. package/dist/iroh/index.js +25 -0
  38. package/dist/iroh/index.js.map +1 -0
  39. package/dist/node/server/IrohServerEndpoint.d.ts +23 -0
  40. package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -0
  41. package/dist/node/server/IrohServerEndpoint.js +156 -0
  42. package/dist/node/server/IrohServerEndpoint.js.map +1 -0
  43. package/dist/node/server/IrohServerRpc.d.ts +52 -0
  44. package/dist/node/server/IrohServerRpc.d.ts.map +1 -0
  45. package/dist/node/server/IrohServerRpc.js +120 -0
  46. package/dist/node/server/IrohServerRpc.js.map +1 -0
  47. package/dist/node/server/MindooDBServer.d.ts +3 -0
  48. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  49. package/dist/node/server/MindooDBServer.js +34 -0
  50. package/dist/node/server/MindooDBServer.js.map +1 -1
  51. package/dist/node/server/config.d.ts.map +1 -1
  52. package/dist/node/server/config.js +28 -0
  53. package/dist/node/server/config.js.map +1 -1
  54. package/dist/node/server/serverinit.js +2 -0
  55. package/dist/node/server/serverinit.js.map +1 -1
  56. package/dist/node/server/types.d.ts +16 -0
  57. package/dist/node/server/types.d.ts.map +1 -1
  58. package/dist/node/server/types.js +6 -1
  59. package/dist/node/server/types.js.map +1 -1
  60. package/dist/reactnative/index.d.ts +5 -0
  61. package/dist/reactnative/index.d.ts.map +1 -1
  62. package/dist/reactnative/index.js +20 -1
  63. package/dist/reactnative/index.js.map +1 -1
  64. package/dist/sqlite/index.d.ts +7 -0
  65. package/dist/sqlite/index.d.ts.map +1 -0
  66. package/dist/sqlite/index.js +16 -0
  67. package/dist/sqlite/index.js.map +1 -0
  68. package/package.json +14 -2
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqliteContentAddressedStoreFactory = exports.SqliteContentAddressedStore = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const AttachmentReadPlanner_1 = require("../AttachmentReadPlanner");
6
+ const bloom_1 = require("../bloom");
7
+ const MaterializationPlanner_1 = require("../MaterializationPlanner");
8
+ const scanUtils_1 = require("../scanUtils");
9
+ const types_1 = require("../types");
10
+ const logging_1 = require("../../logging");
11
+ const SqliteDriver_1 = require("./SqliteDriver");
12
+ function bytesToBase64(bytes) {
13
+ if (typeof Buffer !== "undefined") {
14
+ return Buffer.from(bytes).toString("base64");
15
+ }
16
+ let binary = "";
17
+ for (const byte of bytes) {
18
+ binary += String.fromCharCode(byte);
19
+ }
20
+ return btoa(binary);
21
+ }
22
+ function base64ToBytes(value) {
23
+ if (typeof Buffer !== "undefined") {
24
+ return new Uint8Array(Buffer.from(value, "base64"));
25
+ }
26
+ const binary = atob(value);
27
+ const out = new Uint8Array(binary.length);
28
+ for (let i = 0; i < binary.length; i += 1) {
29
+ out[i] = binary.charCodeAt(i);
30
+ }
31
+ return out;
32
+ }
33
+ function serializeMetadata(meta) {
34
+ return JSON.stringify({
35
+ ...meta,
36
+ signature: bytesToBase64(meta.signature),
37
+ metadataSignature: meta.metadataSignature ? bytesToBase64(meta.metadataSignature) : undefined,
38
+ });
39
+ }
40
+ function deserializeMetadata(json) {
41
+ const parsed = JSON.parse(json);
42
+ return {
43
+ ...parsed,
44
+ signature: base64ToBytes(parsed.signature),
45
+ metadataSignature: parsed.metadataSignature ? base64ToBytes(parsed.metadataSignature) : undefined,
46
+ };
47
+ }
48
+ /**
49
+ * Persistent ContentAddressedStore backed by SQLite-shaped tables.
50
+ * Not imported by `mindoodb/browser`.
51
+ */
52
+ class SqliteContentAddressedStore {
53
+ constructor(dbId, storeKind, backend, logger, options) {
54
+ this.dbId = dbId;
55
+ this.storeKind = storeKind;
56
+ this.backend = backend;
57
+ this.nextReceiptOrder = 1;
58
+ this.storeEpoch = (0, uuid_1.v7)();
59
+ this.logger = logger || new logging_1.MindooLogger((0, logging_1.getDefaultLogLevel)(), `SqliteStore:${dbId}:${storeKind}`, true);
60
+ this.indexingEnabled = options?.indexingEnabled !== false;
61
+ this.ready = this.bootstrap(options);
62
+ }
63
+ async bootstrap(options) {
64
+ await this.backend.init();
65
+ if (options?.clearLocalDataOnStartup) {
66
+ await this.backend.clearAll();
67
+ }
68
+ const epoch = await this.backend.getMeta("epoch");
69
+ const next = await this.backend.getMeta("nextReceiptOrder");
70
+ if (epoch) {
71
+ this.storeEpoch = epoch;
72
+ }
73
+ else {
74
+ await this.backend.setMeta("epoch", this.storeEpoch);
75
+ }
76
+ this.nextReceiptOrder = next ? Number(next) : 1;
77
+ }
78
+ async persistCounters() {
79
+ await this.backend.setMeta("epoch", this.storeEpoch);
80
+ await this.backend.setMeta("nextReceiptOrder", String(this.nextReceiptOrder));
81
+ }
82
+ getId() {
83
+ return this.dbId;
84
+ }
85
+ getStoreKind() {
86
+ return this.storeKind;
87
+ }
88
+ getCacheIdentity() {
89
+ return `sqlite:${this.dbId}:${this.storeKind}`;
90
+ }
91
+ async putEntries(entries) {
92
+ await this.ready;
93
+ for (const entry of entries) {
94
+ if (await this.backend.hasEntry(entry.id)) {
95
+ continue;
96
+ }
97
+ const { encryptedData, receiptOrder: _ignored, ...rest } = entry;
98
+ const metadata = {
99
+ ...rest,
100
+ receiptOrder: this.nextReceiptOrder++,
101
+ };
102
+ await this.backend.insertEntry(serializeMetadata(metadata), encryptedData, entry.contentHash, entry.docId, entry.entryType, entry.createdAt, metadata.receiptOrder ?? 0, entry.id);
103
+ }
104
+ await this.persistCounters();
105
+ }
106
+ async applyWitnessReceipts(receipts) {
107
+ await this.ready;
108
+ for (const receipt of receipts) {
109
+ if (receipt.receivedAt === undefined) {
110
+ continue;
111
+ }
112
+ const json = await this.backend.getMetadataJson(receipt.id);
113
+ if (!json) {
114
+ continue;
115
+ }
116
+ const existing = deserializeMetadata(json);
117
+ if (existing.receivedAt === receipt.receivedAt &&
118
+ existing.receivedByPublicKey === receipt.receivedByPublicKey) {
119
+ continue;
120
+ }
121
+ const next = {
122
+ ...existing,
123
+ receivedAt: receipt.receivedAt,
124
+ receivedByPublicKey: receipt.receivedByPublicKey,
125
+ receivedDateSignature: receipt.receivedDateSignature,
126
+ receiptScheme: receipt.receiptScheme,
127
+ receiptOrder: this.nextReceiptOrder++,
128
+ };
129
+ await this.backend.updateEntryMeta(receipt.id, serializeMetadata(next), next.receiptOrder ?? 0);
130
+ }
131
+ await this.persistCounters();
132
+ }
133
+ async getEntries(ids) {
134
+ await this.ready;
135
+ const result = [];
136
+ for (const id of ids) {
137
+ const row = await this.backend.getEntryRow(id);
138
+ if (row) {
139
+ result.push({ ...deserializeMetadata(row.metaJson), encryptedData: row.data });
140
+ }
141
+ }
142
+ return result;
143
+ }
144
+ async getEntryMetadata(id) {
145
+ await this.ready;
146
+ const json = await this.backend.getMetadataJson(id);
147
+ return json ? deserializeMetadata(json) : null;
148
+ }
149
+ async planAttachmentReadByWalkingMetadata(lastChunkId, attachmentSize, options) {
150
+ return (0, AttachmentReadPlanner_1.planAttachmentReadByWalkingMetadata)(this, lastChunkId, attachmentSize, options);
151
+ }
152
+ async hasEntries(ids) {
153
+ await this.ready;
154
+ const existing = [];
155
+ for (const id of ids) {
156
+ if (await this.backend.hasEntry(id)) {
157
+ existing.push(id);
158
+ }
159
+ }
160
+ return existing;
161
+ }
162
+ async findNewEntries(knownIds) {
163
+ await this.ready;
164
+ const known = new Set(knownIds);
165
+ return (await this.allMetadata()).filter((meta) => !known.has(meta.id));
166
+ }
167
+ async findNewEntriesForDoc(knownIds, docId) {
168
+ await this.ready;
169
+ const known = new Set(knownIds);
170
+ return (await this.metadataForDoc(docId)).filter((meta) => !known.has(meta.id));
171
+ }
172
+ async findEntries(type, creationDateFrom, creationDateUntil) {
173
+ await this.ready;
174
+ return (await this.allMetadata()).filter((metadata) => {
175
+ if (metadata.entryType !== type) {
176
+ return false;
177
+ }
178
+ if (creationDateFrom !== null && metadata.createdAt < creationDateFrom) {
179
+ return false;
180
+ }
181
+ if (creationDateUntil !== null && metadata.createdAt >= creationDateUntil) {
182
+ return false;
183
+ }
184
+ return true;
185
+ });
186
+ }
187
+ async getAllIds() {
188
+ await this.ready;
189
+ return this.backend.getAllIds();
190
+ }
191
+ async scanEntriesSince(cursor, limit = Number.MAX_SAFE_INTEGER, filters) {
192
+ await this.ready;
193
+ if (filters?.docId) {
194
+ return (0, scanUtils_1.scanDocScopedEntries)(await this.metadataForDoc(filters.docId), cursor, limit, filters);
195
+ }
196
+ const page = [];
197
+ let scanCursor = cursor;
198
+ const batch = Math.min(Math.max(limit, 1), 500);
199
+ while (page.length < limit) {
200
+ const rows = await this.backend.scanMetadataJson(scanCursor?.receiptOrder ?? null, scanCursor?.id ?? null, batch);
201
+ if (rows.length === 0) {
202
+ break;
203
+ }
204
+ for (const json of rows) {
205
+ const meta = deserializeMetadata(json);
206
+ if (this.matchesScanFilters(meta, filters)) {
207
+ page.push(meta);
208
+ if (page.length >= limit) {
209
+ break;
210
+ }
211
+ }
212
+ }
213
+ const lastRaw = deserializeMetadata(rows[rows.length - 1]);
214
+ scanCursor = { receiptOrder: lastRaw.receiptOrder ?? 0, id: lastRaw.id };
215
+ if (rows.length < batch) {
216
+ break;
217
+ }
218
+ }
219
+ const last = page.length > 0 ? page[page.length - 1] : null;
220
+ let hasMore = false;
221
+ if (last) {
222
+ const peek = await this.backend.scanMetadataJson(last.receiptOrder ?? 0, last.id, 32);
223
+ hasMore = peek.some((json) => this.matchesScanFilters(deserializeMetadata(json), filters));
224
+ }
225
+ return {
226
+ entries: page,
227
+ nextCursor: last ? { receiptOrder: last.receiptOrder ?? 0, id: last.id } : cursor,
228
+ hasMore,
229
+ };
230
+ }
231
+ async getIdBloomSummary() {
232
+ return (0, bloom_1.createIdBloomSummary)(await this.getAllIds());
233
+ }
234
+ async getStoreHead() {
235
+ await this.ready;
236
+ return { epoch: this.storeEpoch, maxReceiptOrder: this.nextReceiptOrder - 1 };
237
+ }
238
+ async planDocumentMaterialization(docId, options) {
239
+ await this.ready;
240
+ return (0, MaterializationPlanner_1.computeDocumentMaterializationPlan)(docId, await this.metadataForDoc(docId), options);
241
+ }
242
+ async planDocumentMaterializationBatch(docIds, options) {
243
+ await this.ready;
244
+ return (0, MaterializationPlanner_1.computeBatchMaterializationPlan)(await this.allMetadata(), docIds, options);
245
+ }
246
+ async resolveDependencies(startId, options) {
247
+ await this.ready;
248
+ const stopAtEntryType = options?.stopAtEntryType;
249
+ const maxDepth = options?.maxDepth;
250
+ const includeStart = options?.includeStart !== false;
251
+ const result = [];
252
+ const visited = new Set();
253
+ const queue = [{ id: startId, depth: 0 }];
254
+ let queueIdx = 0;
255
+ while (queueIdx < queue.length) {
256
+ const { id, depth } = queue[queueIdx++];
257
+ if (visited.has(id)) {
258
+ continue;
259
+ }
260
+ visited.add(id);
261
+ if (maxDepth !== undefined && depth > maxDepth) {
262
+ continue;
263
+ }
264
+ const entry = await this.getEntryMetadata(id);
265
+ if (!entry) {
266
+ continue;
267
+ }
268
+ if (stopAtEntryType && entry.entryType === stopAtEntryType && id !== startId) {
269
+ result.push(id);
270
+ continue;
271
+ }
272
+ if (id !== startId || includeStart) {
273
+ result.push(id);
274
+ }
275
+ for (const depId of entry.dependencyIds) {
276
+ if (!visited.has(depId)) {
277
+ queue.push({ id: depId, depth: depth + 1 });
278
+ }
279
+ }
280
+ }
281
+ result.reverse();
282
+ return result;
283
+ }
284
+ async purgeDocHistory(docId) {
285
+ await this.ready;
286
+ const ids = (await this.metadataForDoc(docId)).map((meta) => meta.id);
287
+ await this.backend.deleteEntries(ids);
288
+ }
289
+ async deleteEntriesById(entryIds) {
290
+ await this.ready;
291
+ return this.backend.deleteEntries(entryIds);
292
+ }
293
+ async clearAllLocalData() {
294
+ await this.ready;
295
+ await this.backend.clearAll();
296
+ this.nextReceiptOrder = 1;
297
+ this.storeEpoch = (0, uuid_1.v7)();
298
+ await this.persistCounters();
299
+ }
300
+ async awaitIndexReady() {
301
+ return this.getIndexBuildStatus();
302
+ }
303
+ getIndexBuildStatus() {
304
+ return { phase: "ready", indexingEnabled: this.indexingEnabled, progress01: 1 };
305
+ }
306
+ async getStats() {
307
+ await this.ready;
308
+ return {
309
+ entryCount: await this.backend.countEntries(),
310
+ contentCount: await this.backend.countContent(),
311
+ docCount: await this.backend.countDocs(),
312
+ };
313
+ }
314
+ async allMetadata() {
315
+ return (await this.backend.getAllMetadataJson()).map(deserializeMetadata);
316
+ }
317
+ async metadataForDoc(docId) {
318
+ return (await this.backend.getMetadataJsonByDoc(docId)).map(deserializeMetadata);
319
+ }
320
+ matchesScanFilters(meta, filters) {
321
+ if (filters?.docId && meta.docId !== filters.docId) {
322
+ return false;
323
+ }
324
+ if (filters?.entryTypes && filters.entryTypes.length > 0 && !filters.entryTypes.includes(meta.entryType)) {
325
+ return false;
326
+ }
327
+ if (filters?.creationDateFrom != null && meta.createdAt < filters.creationDateFrom) {
328
+ return false;
329
+ }
330
+ if (filters?.creationDateUntil != null && meta.createdAt >= filters.creationDateUntil) {
331
+ return false;
332
+ }
333
+ return true;
334
+ }
335
+ }
336
+ exports.SqliteContentAddressedStore = SqliteContentAddressedStore;
337
+ class SqliteContentAddressedStoreFactory {
338
+ constructor(createBackend = () => (0, SqliteDriver_1.createMemorySqliteBackend)()) {
339
+ this.createBackend = createBackend;
340
+ }
341
+ createStore(dbId, options) {
342
+ return {
343
+ docStore: new SqliteContentAddressedStore(dbId, types_1.StoreKind.docs, this.createBackend(dbId, types_1.StoreKind.docs), undefined, options),
344
+ attachmentStore: new SqliteContentAddressedStore(dbId, types_1.StoreKind.attachments, this.createBackend(dbId, types_1.StoreKind.attachments), undefined, options),
345
+ };
346
+ }
347
+ }
348
+ exports.SqliteContentAddressedStoreFactory = SqliteContentAddressedStoreFactory;
349
+ //# sourceMappingURL=SqliteContentAddressedStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteContentAddressedStore.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/sqlite/SqliteContentAddressedStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Platform-agnostic SQLite access used by {@link SqliteContentAddressedStore}.
3
+ *
4
+ * Expo/RN wraps `expo-sqlite` or `op-sqlite`. Node tests wrap `node:sqlite` or
5
+ * the in-process memory driver. The browser bundle must not import this module.
6
+ */
7
+ export type SqliteValue = string | number | null | Uint8Array;
8
+ export interface SqliteExecutor {
9
+ exec(sql: string): Promise<void>;
10
+ run(sql: string, params?: SqliteValue[]): Promise<{
11
+ changes: number;
12
+ }>;
13
+ get(sql: string, params?: SqliteValue[]): Promise<Record<string, unknown> | undefined>;
14
+ all(sql: string, params?: SqliteValue[]): Promise<Record<string, unknown>[]>;
15
+ }
16
+ export interface SqliteStoreBackend {
17
+ init(): Promise<void>;
18
+ getMeta(key: string): Promise<string | null>;
19
+ setMeta(key: string, value: string): Promise<void>;
20
+ hasEntry(id: string): Promise<boolean>;
21
+ insertEntry(metaJson: string, data: Uint8Array, contentHash: string, docId: string, entryType: string, createdAt: number, receiptOrder: number, id: string): Promise<boolean>;
22
+ updateEntryMeta(id: string, metaJson: string, receiptOrder: number): Promise<void>;
23
+ getEntryRow(id: string): Promise<{
24
+ metaJson: string;
25
+ data: Uint8Array;
26
+ } | null>;
27
+ getMetadataJson(id: string): Promise<string | null>;
28
+ getAllMetadataJson(): Promise<string[]>;
29
+ getMetadataJsonByDoc(docId: string): Promise<string[]>;
30
+ getAllIds(): Promise<string[]>;
31
+ scanMetadataJson(cursorReceiptOrder: number | null, cursorId: string | null, limit: number): Promise<string[]>;
32
+ deleteEntries(ids: string[]): Promise<number>;
33
+ getContent(hash: string): Promise<{
34
+ data: Uint8Array;
35
+ refCount: number;
36
+ } | null>;
37
+ putContent(hash: string, data: Uint8Array, refCount: number): Promise<void>;
38
+ updateContentRef(hash: string, refCount: number): Promise<void>;
39
+ deleteContent(hash: string): Promise<void>;
40
+ countEntries(): Promise<number>;
41
+ countContent(): Promise<number>;
42
+ countDocs(): Promise<number>;
43
+ clearAll(): Promise<void>;
44
+ }
45
+ export declare function createSqlBackend(executor: SqliteExecutor): SqliteStoreBackend;
46
+ /**
47
+ * In-process backend used by unit tests. Speaks the same table contract as
48
+ * {@link createSqlBackend} without requiring a native SQLite binding.
49
+ */
50
+ export declare function createMemorySqliteBackend(): SqliteStoreBackend;
51
+ //# sourceMappingURL=SqliteDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteDriver.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/sqlite/SqliteDriver.ts"],"names":[],"mappings":"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"}