@brightchain/db 0.20.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 (56) hide show
  1. package/README.md +81 -0
  2. package/package.json +18 -0
  3. package/src/__tests__/helpers/mockBlockStore.d.ts +113 -0
  4. package/src/__tests__/helpers/mockBlockStore.js +380 -0
  5. package/src/__tests__/helpers/mockBlockStore.js.map +1 -0
  6. package/src/index.d.ts +31 -0
  7. package/src/index.js +78 -0
  8. package/src/index.js.map +1 -0
  9. package/src/lib/aggregation.d.ts +18 -0
  10. package/src/lib/aggregation.js +407 -0
  11. package/src/lib/aggregation.js.map +1 -0
  12. package/src/lib/cblIndex.d.ts +268 -0
  13. package/src/lib/cblIndex.js +856 -0
  14. package/src/lib/cblIndex.js.map +1 -0
  15. package/src/lib/collection.d.ts +305 -0
  16. package/src/lib/collection.js +991 -0
  17. package/src/lib/collection.js.map +1 -0
  18. package/src/lib/cursor.d.ts +8 -0
  19. package/src/lib/cursor.js +13 -0
  20. package/src/lib/cursor.js.map +1 -0
  21. package/src/lib/database.d.ts +158 -0
  22. package/src/lib/database.js +332 -0
  23. package/src/lib/database.js.map +1 -0
  24. package/src/lib/errors.d.ts +85 -0
  25. package/src/lib/errors.js +103 -0
  26. package/src/lib/errors.js.map +1 -0
  27. package/src/lib/expressMiddleware.d.ts +57 -0
  28. package/src/lib/expressMiddleware.js +488 -0
  29. package/src/lib/expressMiddleware.js.map +1 -0
  30. package/src/lib/headRegistry.d.ts +60 -0
  31. package/src/lib/headRegistry.js +216 -0
  32. package/src/lib/headRegistry.js.map +1 -0
  33. package/src/lib/indexing.d.ts +7 -0
  34. package/src/lib/indexing.js +14 -0
  35. package/src/lib/indexing.js.map +1 -0
  36. package/src/lib/model.d.ts +162 -0
  37. package/src/lib/model.js +260 -0
  38. package/src/lib/model.js.map +1 -0
  39. package/src/lib/pooledStoreAdapter.d.ts +44 -0
  40. package/src/lib/pooledStoreAdapter.js +109 -0
  41. package/src/lib/pooledStoreAdapter.js.map +1 -0
  42. package/src/lib/queryEngine.d.ts +48 -0
  43. package/src/lib/queryEngine.js +461 -0
  44. package/src/lib/queryEngine.js.map +1 -0
  45. package/src/lib/schemaValidation.d.ts +80 -0
  46. package/src/lib/schemaValidation.js +353 -0
  47. package/src/lib/schemaValidation.js.map +1 -0
  48. package/src/lib/transaction.d.ts +7 -0
  49. package/src/lib/transaction.js +12 -0
  50. package/src/lib/transaction.js.map +1 -0
  51. package/src/lib/types.d.ts +360 -0
  52. package/src/lib/types.js +6 -0
  53. package/src/lib/types.js.map +1 -0
  54. package/src/lib/updateEngine.d.ts +7 -0
  55. package/src/lib/updateEngine.js +13 -0
  56. package/src/lib/updateEngine.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../brightchain-db/src/lib/collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cursor – re-exported from @brightchain/brightchain-lib.
3
+ *
4
+ * The core Cursor implementation has been relocated to brightchain-lib
5
+ * for platform-agnostic usage. This file re-exports everything for backward
6
+ * compatibility.
7
+ */
8
+ export { Cursor } from '@brightchain/brightchain-lib/lib/db/cursor';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cursor = void 0;
4
+ /**
5
+ * Cursor – re-exported from @brightchain/brightchain-lib.
6
+ *
7
+ * The core Cursor implementation has been relocated to brightchain-lib
8
+ * for platform-agnostic usage. This file re-exports everything for backward
9
+ * compatibility.
10
+ */
11
+ var cursor_1 = require("@brightchain/brightchain-lib/lib/db/cursor");
12
+ Object.defineProperty(exports, "Cursor", { enumerable: true, get: function () { return cursor_1.Cursor; } });
13
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../brightchain-db/src/lib/cursor.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,qEAAoE;AAA3D,gGAAA,MAAM,OAAA"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * BrightChainDb – the top-level database object.
3
+ *
4
+ * Usage:
5
+ * const db = new BrightChainDb(blockStore, { name: 'mydb' });
6
+ * const users = db.collection('users');
7
+ * await users.insertOne({ name: 'Alice' });
8
+ */
9
+ import { IBlockStore } from '@brightchain/brightchain-lib';
10
+ import { Collection, ICollectionHeadRegistry } from './collection';
11
+ import { Model, ModelOptions } from './model';
12
+ import { BsonDocument, ClientSession, CollectionOptions, CursorSession, DocumentId } from './types';
13
+ /**
14
+ * Options for creating a BrightChainDb instance.
15
+ */
16
+ export interface BrightChainDbOptions {
17
+ /** Database name (default: 'brightchain') */
18
+ name?: string;
19
+ /** Custom head registry (for testing isolation) */
20
+ headRegistry?: ICollectionHeadRegistry;
21
+ /** Cursor session timeout in ms (default: 300000 = 5 minutes) */
22
+ cursorTimeoutMs?: number;
23
+ /** Pool identifier (accepted for compatibility — informational only) */
24
+ poolId?: string;
25
+ /** Data directory for persistent storage (accepted for compatibility) */
26
+ dataDir?: string;
27
+ }
28
+ /**
29
+ * The main database driver – analogous to MongoDB's `Db` class.
30
+ */
31
+ export declare class BrightChainDb {
32
+ readonly name: string;
33
+ private readonly store;
34
+ private readonly collections;
35
+ private readonly headRegistry;
36
+ /** Server-side cursor sessions for REST pagination */
37
+ private readonly cursorSessions;
38
+ /** Default timeout for cursor sessions (5 minutes) */
39
+ private readonly cursorTimeoutMs;
40
+ /** Connection state for lifecycle compatibility */
41
+ private _connected;
42
+ /** Original pooled store (if poolId was provided) for pool-level operations */
43
+ private readonly pooledStore?;
44
+ /** Pool ID (if provided) */
45
+ private readonly poolId?;
46
+ /** Registered models: name → Model instance */
47
+ private readonly models;
48
+ constructor(blockStore: IBlockStore, options?: BrightChainDbOptions);
49
+ /**
50
+ * Expose the head registry for components that need to read head block IDs
51
+ * (e.g. CBLIndex for FEC parity generation on metadata blocks).
52
+ */
53
+ getHeadRegistry(): ICollectionHeadRegistry;
54
+ /**
55
+ * Connect to the database.
56
+ *
57
+ * If the head registry is a PersistentHeadRegistry, this loads persisted
58
+ * head pointers from disk so that collections created after connect() can
59
+ * see data written by previous instances.
60
+ *
61
+ * @param _uri - Optional connection URI (accepted for API compatibility, ignored)
62
+ */
63
+ connect(_uri?: string): Promise<void>;
64
+ /**
65
+ * Disconnect from the database.
66
+ * For the in-memory/block-store backed implementation this is a no-op,
67
+ * but the method exists for API compatibility with consumers that
68
+ * expect a connect/disconnect lifecycle.
69
+ */
70
+ disconnect(): Promise<void>;
71
+ /**
72
+ * Check whether the database is currently connected.
73
+ * Returns true after connect() and false after disconnect() (or before any call).
74
+ */
75
+ isConnected(): boolean;
76
+ /**
77
+ * Get (or create) a collection by name.
78
+ * Collections are created lazily – no explicit create step is needed.
79
+ */
80
+ collection<T extends BsonDocument = BsonDocument>(name: string, options?: CollectionOptions): Collection<T>;
81
+ /**
82
+ * Register (or retrieve) a typed Model for a collection.
83
+ *
84
+ * On first call for a given name, creates a Model wrapping the underlying
85
+ * Collection with the provided hydration schema and optional validation
86
+ * schema. Subsequent calls return the cached Model instance.
87
+ *
88
+ * Usage:
89
+ * const roles = db.model<IStoredRole, IRoleBase<TID>>('roles', {
90
+ * schema: ROLE_SCHEMA,
91
+ * hydration: roleHydrationSchema,
92
+ * });
93
+ * const admin = await roles.findOne({ name: 'Admin' }); // returns IRoleBase<TID>
94
+ */
95
+ model<TStored extends BsonDocument, TTyped>(name: string, options?: ModelOptions<TStored, TTyped>): Model<TStored, TTyped>;
96
+ /**
97
+ * Check whether a model has been registered for the given collection name.
98
+ */
99
+ hasModel(name: string): boolean;
100
+ /**
101
+ * List all registered model names.
102
+ */
103
+ listModels(): string[];
104
+ /**
105
+ * List all known collection names.
106
+ */
107
+ listCollections(): string[];
108
+ /**
109
+ * Drop a collection – removes all documents and indexes.
110
+ */
111
+ dropCollection(name: string): Promise<boolean>;
112
+ /**
113
+ * Drop the entire database – removes all collections and their documents.
114
+ */
115
+ dropDatabase(): Promise<void>;
116
+ /**
117
+ * Start a client session for transaction support.
118
+ *
119
+ * Usage:
120
+ * const session = db.startSession();
121
+ * session.startTransaction();
122
+ * try {
123
+ * await coll.insertOne(doc, { session });
124
+ * await session.commitTransaction();
125
+ * } catch {
126
+ * await session.abortTransaction();
127
+ * } finally {
128
+ * session.endSession();
129
+ * }
130
+ */
131
+ startSession(): ClientSession;
132
+ /**
133
+ * Convenience: run a callback within a transaction.
134
+ * Automatically commits on success, aborts on error.
135
+ */
136
+ withTransaction<R>(fn: (session: ClientSession) => Promise<R>): Promise<R>;
137
+ /**
138
+ * Create a server-side cursor session for paginated access.
139
+ */
140
+ createCursorSession(params: Omit<CursorSession, 'id' | 'lastAccessed'>): CursorSession;
141
+ /**
142
+ * Get a cursor session by ID and advance its position.
143
+ * Returns null if the cursor has expired or doesn't exist.
144
+ */
145
+ getCursorSession(cursorId: string): CursorSession | null;
146
+ /**
147
+ * Advance cursor position and return next batch of document IDs.
148
+ */
149
+ getNextBatch(cursorId: string): DocumentId[] | null;
150
+ /**
151
+ * Close and remove a cursor session.
152
+ */
153
+ closeCursorSession(cursorId: string): boolean;
154
+ /**
155
+ * Clean up expired cursor sessions.
156
+ */
157
+ private cleanExpiredCursors;
158
+ }
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ /**
3
+ * BrightChainDb – the top-level database object.
4
+ *
5
+ * Usage:
6
+ * const db = new BrightChainDb(blockStore, { name: 'mydb' });
7
+ * const users = db.collection('users');
8
+ * await users.insertOne({ name: 'Alice' });
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.BrightChainDb = void 0;
12
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
13
+ const crypto_1 = require("crypto");
14
+ const collection_1 = require("./collection");
15
+ const headRegistry_1 = require("./headRegistry");
16
+ const model_1 = require("./model");
17
+ const pooledStoreAdapter_1 = require("./pooledStoreAdapter");
18
+ const transaction_1 = require("./transaction");
19
+ /**
20
+ * The main database driver – analogous to MongoDB's `Db` class.
21
+ */
22
+ class BrightChainDb {
23
+ constructor(blockStore, options) {
24
+ this.collections = new Map();
25
+ /** Server-side cursor sessions for REST pagination */
26
+ this.cursorSessions = new Map();
27
+ /** Connection state for lifecycle compatibility */
28
+ this._connected = false;
29
+ /** Registered models: name → Model instance */
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ this.models = new Map();
32
+ // Wrap the store in a PooledStoreAdapter when poolId is provided
33
+ // and the store supports pool operations.
34
+ if (options?.poolId && (0, brightchain_lib_1.isPooledBlockStore)(blockStore)) {
35
+ this.pooledStore = blockStore;
36
+ this.poolId = options.poolId;
37
+ this.store = new pooledStoreAdapter_1.PooledStoreAdapter(blockStore, options.poolId);
38
+ }
39
+ else {
40
+ this.store = blockStore;
41
+ }
42
+ this.name = options?.name ?? 'brightchain';
43
+ if (options?.headRegistry) {
44
+ this.headRegistry = options.headRegistry;
45
+ }
46
+ else if (options?.dataDir) {
47
+ this.headRegistry = new headRegistry_1.PersistentHeadRegistry({
48
+ dataDir: options.dataDir,
49
+ });
50
+ }
51
+ else {
52
+ this.headRegistry = collection_1.HeadRegistry.createIsolated();
53
+ }
54
+ this.cursorTimeoutMs = options?.cursorTimeoutMs ?? 300000;
55
+ }
56
+ /**
57
+ * Expose the head registry for components that need to read head block IDs
58
+ * (e.g. CBLIndex for FEC parity generation on metadata blocks).
59
+ */
60
+ getHeadRegistry() {
61
+ return this.headRegistry;
62
+ }
63
+ /**
64
+ * Connect to the database.
65
+ *
66
+ * If the head registry is a PersistentHeadRegistry, this loads persisted
67
+ * head pointers from disk so that collections created after connect() can
68
+ * see data written by previous instances.
69
+ *
70
+ * @param _uri - Optional connection URI (accepted for API compatibility, ignored)
71
+ */
72
+ async connect(_uri) {
73
+ // Load persisted heads from disk when using PersistentHeadRegistry.
74
+ if (this.headRegistry instanceof headRegistry_1.PersistentHeadRegistry) {
75
+ await this.headRegistry.load();
76
+ }
77
+ this._connected = true;
78
+ }
79
+ /**
80
+ * Disconnect from the database.
81
+ * For the in-memory/block-store backed implementation this is a no-op,
82
+ * but the method exists for API compatibility with consumers that
83
+ * expect a connect/disconnect lifecycle.
84
+ */
85
+ async disconnect() {
86
+ this._connected = false;
87
+ }
88
+ /**
89
+ * Check whether the database is currently connected.
90
+ * Returns true after connect() and false after disconnect() (or before any call).
91
+ */
92
+ isConnected() {
93
+ return this._connected;
94
+ }
95
+ /**
96
+ * Get (or create) a collection by name.
97
+ * Collections are created lazily – no explicit create step is needed.
98
+ */
99
+ collection(name, options) {
100
+ if (!this.collections.has(name)) {
101
+ const coll = new collection_1.Collection(name, this.store, this.name, this.headRegistry, options);
102
+ // Wire up cross-collection resolver for $lookup
103
+ coll.setCollectionResolver((collName) => this.collection(collName));
104
+ this.collections.set(name, coll);
105
+ }
106
+ return this.collections.get(name);
107
+ }
108
+ // ── Model registry ──────────────────────────────────────────────────────
109
+ /**
110
+ * Register (or retrieve) a typed Model for a collection.
111
+ *
112
+ * On first call for a given name, creates a Model wrapping the underlying
113
+ * Collection with the provided hydration schema and optional validation
114
+ * schema. Subsequent calls return the cached Model instance.
115
+ *
116
+ * Usage:
117
+ * const roles = db.model<IStoredRole, IRoleBase<TID>>('roles', {
118
+ * schema: ROLE_SCHEMA,
119
+ * hydration: roleHydrationSchema,
120
+ * });
121
+ * const admin = await roles.findOne({ name: 'Admin' }); // returns IRoleBase<TID>
122
+ */
123
+ model(name, options) {
124
+ if (!this.models.has(name)) {
125
+ if (!options) {
126
+ throw new Error(`Model '${name}' has not been registered. ` +
127
+ `Provide options on first call to db.model().`);
128
+ }
129
+ const coll = this.collection(name);
130
+ const model = new model_1.Model(coll, {
131
+ ...options,
132
+ collectionName: options.collectionName ?? name,
133
+ });
134
+ this.models.set(name, model);
135
+ }
136
+ return this.models.get(name);
137
+ }
138
+ /**
139
+ * Check whether a model has been registered for the given collection name.
140
+ */
141
+ hasModel(name) {
142
+ return this.models.has(name);
143
+ }
144
+ /**
145
+ * List all registered model names.
146
+ */
147
+ listModels() {
148
+ return Array.from(this.models.keys());
149
+ }
150
+ /**
151
+ * List all known collection names.
152
+ */
153
+ listCollections() {
154
+ return Array.from(this.collections.keys());
155
+ }
156
+ /**
157
+ * Drop a collection – removes all documents and indexes.
158
+ */
159
+ async dropCollection(name) {
160
+ const coll = this.collections.get(name);
161
+ if (!coll)
162
+ return false;
163
+ await coll.drop();
164
+ this.collections.delete(name);
165
+ return true;
166
+ }
167
+ /**
168
+ * Drop the entire database – removes all collections and their documents.
169
+ */
170
+ async dropDatabase() {
171
+ const names = this.listCollections();
172
+ for (const name of names) {
173
+ await this.dropCollection(name);
174
+ }
175
+ // If this database is backed by a pool, remove the pool from the store
176
+ if (this.pooledStore && this.poolId) {
177
+ await this.pooledStore.forceDeletePool(this.poolId);
178
+ }
179
+ }
180
+ /**
181
+ * Start a client session for transaction support.
182
+ *
183
+ * Usage:
184
+ * const session = db.startSession();
185
+ * session.startTransaction();
186
+ * try {
187
+ * await coll.insertOne(doc, { session });
188
+ * await session.commitTransaction();
189
+ * } catch {
190
+ * await session.abortTransaction();
191
+ * } finally {
192
+ * session.endSession();
193
+ * }
194
+ */
195
+ startSession() {
196
+ const commitCallback = async (journal) => {
197
+ for (const op of journal) {
198
+ const coll = this.collection(op.collection);
199
+ switch (op.type) {
200
+ case 'insert':
201
+ await coll._txInsert(op.doc);
202
+ break;
203
+ case 'update':
204
+ await coll._txUpdate(op.docId, op.after);
205
+ break;
206
+ case 'delete':
207
+ await coll._txDelete(op.docId, op.doc);
208
+ break;
209
+ }
210
+ }
211
+ };
212
+ const rollbackCallback = async (journal) => {
213
+ // Roll back in reverse order.
214
+ // Copy-on-write: rollback only restores doc-index mappings.
215
+ // Blocks written during the failed commit are left as orphans in
216
+ // the store — they are immutable and harmless.
217
+ for (let i = journal.length - 1; i >= 0; i--) {
218
+ const op = journal[i];
219
+ const coll = this.collection(op.collection);
220
+ try {
221
+ switch (op.type) {
222
+ case 'insert':
223
+ // Remove the new mapping (block stays in store)
224
+ await coll._txRollbackInsert(op.doc._id);
225
+ break;
226
+ case 'update':
227
+ // Restore old mapping (old block still in store — CoW)
228
+ await coll._txRollbackUpdate(op.docId, op.before);
229
+ break;
230
+ case 'delete':
231
+ // Restore old mapping (old block still in store — CoW)
232
+ await coll._txRollbackDelete(op.doc);
233
+ break;
234
+ }
235
+ }
236
+ catch {
237
+ // Best-effort rollback
238
+ }
239
+ }
240
+ };
241
+ return new transaction_1.DbSession(commitCallback, rollbackCallback);
242
+ }
243
+ /**
244
+ * Convenience: run a callback within a transaction.
245
+ * Automatically commits on success, aborts on error.
246
+ */
247
+ async withTransaction(fn) {
248
+ const session = this.startSession();
249
+ session.startTransaction();
250
+ try {
251
+ const result = await fn(session);
252
+ await session.commitTransaction();
253
+ return result;
254
+ }
255
+ catch (err) {
256
+ try {
257
+ await session.abortTransaction();
258
+ }
259
+ catch {
260
+ // Abort may fail if the transaction was already ended (e.g. commitTransaction
261
+ // already ran its finally block). Swallow so the original error surfaces.
262
+ }
263
+ throw err;
264
+ }
265
+ finally {
266
+ session.endSession();
267
+ }
268
+ }
269
+ // ═══════════════════════════════════════════════════════
270
+ // Server-side cursor sessions (for REST pagination)
271
+ // ═══════════════════════════════════════════════════════
272
+ /**
273
+ * Create a server-side cursor session for paginated access.
274
+ */
275
+ createCursorSession(params) {
276
+ this.cleanExpiredCursors();
277
+ const id = (0, crypto_1.randomUUID)();
278
+ const cursor = {
279
+ ...params,
280
+ id,
281
+ lastAccessed: Date.now(),
282
+ };
283
+ this.cursorSessions.set(id, cursor);
284
+ return cursor;
285
+ }
286
+ /**
287
+ * Get a cursor session by ID and advance its position.
288
+ * Returns null if the cursor has expired or doesn't exist.
289
+ */
290
+ getCursorSession(cursorId) {
291
+ const cursor = this.cursorSessions.get(cursorId);
292
+ if (!cursor)
293
+ return null;
294
+ if (Date.now() - cursor.lastAccessed > this.cursorTimeoutMs) {
295
+ this.cursorSessions.delete(cursorId);
296
+ return null;
297
+ }
298
+ cursor.lastAccessed = Date.now();
299
+ return cursor;
300
+ }
301
+ /**
302
+ * Advance cursor position and return next batch of document IDs.
303
+ */
304
+ getNextBatch(cursorId) {
305
+ const cursor = this.getCursorSession(cursorId);
306
+ if (!cursor)
307
+ return null;
308
+ const start = cursor.position;
309
+ const end = Math.min(start + cursor.batchSize, cursor.documentIds.length);
310
+ cursor.position = end;
311
+ return cursor.documentIds.slice(start, end);
312
+ }
313
+ /**
314
+ * Close and remove a cursor session.
315
+ */
316
+ closeCursorSession(cursorId) {
317
+ return this.cursorSessions.delete(cursorId);
318
+ }
319
+ /**
320
+ * Clean up expired cursor sessions.
321
+ */
322
+ cleanExpiredCursors() {
323
+ const now = Date.now();
324
+ for (const [id, cursor] of this.cursorSessions.entries()) {
325
+ if (now - cursor.lastAccessed > this.cursorTimeoutMs) {
326
+ this.cursorSessions.delete(id);
327
+ }
328
+ }
329
+ }
330
+ }
331
+ exports.BrightChainDb = BrightChainDb;
332
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../brightchain-db/src/lib/database.ts"],"names":[],"mappings":"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"}