@brightchain/brightchain-lib 0.18.0 → 0.19.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.
- package/package.json +1 -1
- package/src/lib/db/aggregation.d.ts +20 -0
- package/src/lib/db/aggregation.d.ts.map +1 -0
- package/src/lib/db/aggregation.js +407 -0
- package/src/lib/db/aggregation.js.map +1 -0
- package/src/lib/db/collection.d.ts +315 -0
- package/src/lib/db/collection.d.ts.map +1 -0
- package/src/lib/db/collection.js +1054 -0
- package/src/lib/db/collection.js.map +1 -0
- package/src/lib/db/cursor.d.ts +51 -0
- package/src/lib/db/cursor.d.ts.map +1 -0
- package/src/lib/db/cursor.js +100 -0
- package/src/lib/db/cursor.js.map +1 -0
- package/src/lib/db/errors.d.ts +83 -0
- package/src/lib/db/errors.d.ts.map +1 -0
- package/src/lib/db/errors.js +103 -0
- package/src/lib/db/errors.js.map +1 -0
- package/src/lib/db/inMemoryDatabase.d.ts +135 -0
- package/src/lib/db/inMemoryDatabase.d.ts.map +1 -0
- package/src/lib/db/inMemoryDatabase.js +258 -0
- package/src/lib/db/inMemoryDatabase.js.map +1 -0
- package/src/lib/db/inMemoryHeadRegistry.d.ts +33 -0
- package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -0
- package/src/lib/db/inMemoryHeadRegistry.js +83 -0
- package/src/lib/db/inMemoryHeadRegistry.js.map +1 -0
- package/src/lib/db/index.d.ts +14 -0
- package/src/lib/db/index.d.ts.map +1 -0
- package/src/lib/db/index.js +18 -0
- package/src/lib/db/index.js.map +1 -0
- package/src/lib/db/indexing.d.ts +133 -0
- package/src/lib/db/indexing.d.ts.map +1 -0
- package/src/lib/db/indexing.js +287 -0
- package/src/lib/db/indexing.js.map +1 -0
- package/src/lib/db/queryEngine.d.ts +50 -0
- package/src/lib/db/queryEngine.d.ts.map +1 -0
- package/src/lib/db/queryEngine.js +461 -0
- package/src/lib/db/queryEngine.js.map +1 -0
- package/src/lib/db/schemaValidation.d.ts +41 -0
- package/src/lib/db/schemaValidation.d.ts.map +1 -0
- package/src/lib/db/schemaValidation.js +322 -0
- package/src/lib/db/schemaValidation.js.map +1 -0
- package/src/lib/db/transaction.d.ts +88 -0
- package/src/lib/db/transaction.d.ts.map +1 -0
- package/src/lib/db/transaction.js +112 -0
- package/src/lib/db/transaction.js.map +1 -0
- package/src/lib/db/types.d.ts +11 -0
- package/src/lib/db/types.d.ts.map +1 -0
- package/src/lib/db/types.js +11 -0
- package/src/lib/db/types.js.map +1 -0
- package/src/lib/db/updateEngine.d.ts +20 -0
- package/src/lib/db/updateEngine.d.ts.map +1 -0
- package/src/lib/db/updateEngine.js +193 -0
- package/src/lib/db/updateEngine.js.map +1 -0
- package/src/lib/db/uuidGenerator.d.ts +13 -0
- package/src/lib/db/uuidGenerator.d.ts.map +1 -0
- package/src/lib/db/uuidGenerator.js +34 -0
- package/src/lib/db/uuidGenerator.js.map +1 -0
- package/src/lib/errors/memberIndexSchemaValidationError.d.ts +6 -0
- package/src/lib/errors/memberIndexSchemaValidationError.d.ts.map +1 -0
- package/src/lib/errors/memberIndexSchemaValidationError.js +15 -0
- package/src/lib/errors/memberIndexSchemaValidationError.js.map +1 -0
- package/src/lib/index.d.ts +12 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +55 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/interfaces/index.d.ts +1 -0
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/member-init-config.d.ts +20 -0
- package/src/lib/interfaces/member-init-config.d.ts.map +1 -0
- package/src/lib/interfaces/member-init-config.js +3 -0
- package/src/lib/interfaces/member-init-config.js.map +1 -0
- package/src/lib/interfaces/storage/index.d.ts +5 -0
- package/src/lib/interfaces/storage/index.d.ts.map +1 -1
- package/src/lib/interfaces/storage/index.js.map +1 -1
- package/src/lib/interfaces/storage/memberIndexSchema.d.ts +11 -0
- package/src/lib/interfaces/storage/memberIndexSchema.d.ts.map +1 -0
- package/src/lib/interfaces/storage/memberIndexSchema.js +26 -0
- package/src/lib/interfaces/storage/memberIndexSchema.js.map +1 -0
- package/src/lib/interfaces/storage/mnemonicSchema.d.ts +10 -0
- package/src/lib/interfaces/storage/mnemonicSchema.d.ts.map +1 -0
- package/src/lib/interfaces/storage/mnemonicSchema.js +22 -0
- package/src/lib/interfaces/storage/mnemonicSchema.js.map +1 -0
- package/src/lib/interfaces/storage/roleSchema.d.ts +10 -0
- package/src/lib/interfaces/storage/roleSchema.d.ts.map +1 -0
- package/src/lib/interfaces/storage/roleSchema.js +45 -0
- package/src/lib/interfaces/storage/roleSchema.js.map +1 -0
- package/src/lib/interfaces/storage/userRoleSchema.d.ts +10 -0
- package/src/lib/interfaces/storage/userRoleSchema.d.ts.map +1 -0
- package/src/lib/interfaces/storage/userRoleSchema.js +35 -0
- package/src/lib/interfaces/storage/userRoleSchema.js.map +1 -0
- package/src/lib/interfaces/storage/userSchema.d.ts +12 -0
- package/src/lib/interfaces/storage/userSchema.d.ts.map +1 -0
- package/src/lib/interfaces/storage/userSchema.js +62 -0
- package/src/lib/interfaces/storage/userSchema.js.map +1 -0
- /package/{BLOCK_COVERAGE_AUDIT.md → brightchain-lib/BLOCK_COVERAGE_AUDIT.md} +0 -0
- /package/{BROWSER_COMPAT.md → brightchain-lib/BROWSER_COMPAT.md} +0 -0
- /package/{DEPRECATIONS.md → brightchain-lib/DEPRECATIONS.md} +0 -0
- /package/{DEPRECATIONS_REMOVED.md → brightchain-lib/DEPRECATIONS_REMOVED.md} +0 -0
- /package/{MIGRATION.md → brightchain-lib/MIGRATION.md} +0 -0
- /package/{NAMING_AUDIT.md → brightchain-lib/NAMING_AUDIT.md} +0 -0
- /package/{NAMING_CONVENTIONS.md → brightchain-lib/NAMING_CONVENTIONS.md} +0 -0
- /package/{README.md → brightchain-lib/README.md} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor – lazy, chainable query result that mimics MongoDB's cursor API.
|
|
3
|
+
*/
|
|
4
|
+
import type { ProjectionSpec, SortSpec } from '@digitaldefiance/suite-core-lib';
|
|
5
|
+
import type { BsonDocument } from '../interfaces/storage/documentTypes';
|
|
6
|
+
export declare class Cursor<T extends BsonDocument = BsonDocument> {
|
|
7
|
+
private readonly _source;
|
|
8
|
+
private _sort;
|
|
9
|
+
private _skip;
|
|
10
|
+
private _limit;
|
|
11
|
+
private _projection;
|
|
12
|
+
private _exhausted;
|
|
13
|
+
constructor(_source: () => Promise<T[]>);
|
|
14
|
+
/** Set sort specification (chainable) */
|
|
15
|
+
sort(spec: SortSpec<T>): this;
|
|
16
|
+
/** Set number of documents to skip (chainable) */
|
|
17
|
+
skip(n: number): this;
|
|
18
|
+
/** Set maximum number of documents to return (chainable) */
|
|
19
|
+
limit(n: number): this;
|
|
20
|
+
/** Set field projection (chainable) */
|
|
21
|
+
project(spec: ProjectionSpec<T>): this;
|
|
22
|
+
/**
|
|
23
|
+
* Execute the query and return all matching documents as an array.
|
|
24
|
+
*/
|
|
25
|
+
toArray(): Promise<T[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Count matching documents (applies skip/limit if set).
|
|
28
|
+
*/
|
|
29
|
+
count(): Promise<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the first matching document.
|
|
32
|
+
*/
|
|
33
|
+
next(): Promise<T | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Check if there are more results.
|
|
36
|
+
*/
|
|
37
|
+
hasNext(): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Iterate over all results with a callback.
|
|
40
|
+
*/
|
|
41
|
+
forEach(fn: (doc: T) => void | Promise<void>): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Map results through a transform function.
|
|
44
|
+
*/
|
|
45
|
+
map<U>(fn: (doc: T) => U): Promise<U[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Make the cursor thenable so it can be awaited directly.
|
|
48
|
+
*/
|
|
49
|
+
then<TResult1 = T[], TResult2 = never>(onfulfilled?: ((value: T[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/cursor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGxE,qBAAa,MAAM,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAO3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,UAAU,CAAS;gBAEE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC;IAExD,yCAAyC;IACzC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAK7B,kDAAkD;IAClD,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKrB,4DAA4D;IAC5D,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,uCAAuC;IACvC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAKtC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAyB7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAK/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAK7C;;OAEG;IACH,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,KAAK,EACnC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EACvE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC1E,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAGhC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor – lazy, chainable query result that mimics MongoDB's cursor API.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Cursor = void 0;
|
|
7
|
+
const queryEngine_1 = require("./queryEngine");
|
|
8
|
+
class Cursor {
|
|
9
|
+
constructor(_source) {
|
|
10
|
+
this._source = _source;
|
|
11
|
+
this._exhausted = false;
|
|
12
|
+
}
|
|
13
|
+
/** Set sort specification (chainable) */
|
|
14
|
+
sort(spec) {
|
|
15
|
+
this._sort = spec;
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
/** Set number of documents to skip (chainable) */
|
|
19
|
+
skip(n) {
|
|
20
|
+
this._skip = n;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
/** Set maximum number of documents to return (chainable) */
|
|
24
|
+
limit(n) {
|
|
25
|
+
this._limit = n;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
/** Set field projection (chainable) */
|
|
29
|
+
project(spec) {
|
|
30
|
+
this._projection = spec;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Execute the query and return all matching documents as an array.
|
|
35
|
+
*/
|
|
36
|
+
async toArray() {
|
|
37
|
+
if (this._exhausted)
|
|
38
|
+
return [];
|
|
39
|
+
this._exhausted = true;
|
|
40
|
+
let docs = await this._source();
|
|
41
|
+
if (this._sort) {
|
|
42
|
+
docs = (0, queryEngine_1.sortDocuments)(docs, this._sort);
|
|
43
|
+
}
|
|
44
|
+
if (this._skip !== undefined && this._skip > 0) {
|
|
45
|
+
docs = docs.slice(this._skip);
|
|
46
|
+
}
|
|
47
|
+
if (this._limit !== undefined && this._limit >= 0) {
|
|
48
|
+
docs = docs.slice(0, this._limit);
|
|
49
|
+
}
|
|
50
|
+
if (this._projection) {
|
|
51
|
+
docs = docs.map((doc) => (0, queryEngine_1.applyProjection)(doc, this._projection));
|
|
52
|
+
}
|
|
53
|
+
return docs;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Count matching documents (applies skip/limit if set).
|
|
57
|
+
*/
|
|
58
|
+
async count() {
|
|
59
|
+
const docs = await this.toArray();
|
|
60
|
+
return docs.length;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get the first matching document.
|
|
64
|
+
*/
|
|
65
|
+
async next() {
|
|
66
|
+
const arr = await this.toArray();
|
|
67
|
+
return arr.length > 0 ? arr[0] : null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if there are more results.
|
|
71
|
+
*/
|
|
72
|
+
async hasNext() {
|
|
73
|
+
const arr = await this.toArray();
|
|
74
|
+
return arr.length > 0;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Iterate over all results with a callback.
|
|
78
|
+
*/
|
|
79
|
+
async forEach(fn) {
|
|
80
|
+
const docs = await this.toArray();
|
|
81
|
+
for (const doc of docs) {
|
|
82
|
+
await fn(doc);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Map results through a transform function.
|
|
87
|
+
*/
|
|
88
|
+
async map(fn) {
|
|
89
|
+
const docs = await this.toArray();
|
|
90
|
+
return docs.map(fn);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Make the cursor thenable so it can be awaited directly.
|
|
94
|
+
*/
|
|
95
|
+
then(onfulfilled, onrejected) {
|
|
96
|
+
return this.toArray().then(onfulfilled, onrejected);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.Cursor = Cursor;
|
|
100
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed error classes for the brightchain database engine.
|
|
3
|
+
*
|
|
4
|
+
* Provides MongoDB-compatible error names and structured properties
|
|
5
|
+
* so consumers can catch and classify errors programmatically.
|
|
6
|
+
*/
|
|
7
|
+
import type { ValidationFieldError } from '../interfaces/storage/documentTypes';
|
|
8
|
+
export type { ValidationFieldError };
|
|
9
|
+
/**
|
|
10
|
+
* Base class for all brightchain-db errors.
|
|
11
|
+
*/
|
|
12
|
+
export declare class BrightChainDbError extends Error {
|
|
13
|
+
/** Numeric error code (MongoDB-style) */
|
|
14
|
+
readonly code: number;
|
|
15
|
+
constructor(message: string, code: number);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Thrown when a document is not found by _id.
|
|
19
|
+
*/
|
|
20
|
+
export declare class DocumentNotFoundError extends BrightChainDbError {
|
|
21
|
+
readonly documentId: string;
|
|
22
|
+
readonly collection: string;
|
|
23
|
+
constructor(collection: string, documentId: string);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Thrown when a unique index constraint is violated.
|
|
27
|
+
* (Re-exported from indexing.ts — use `DuplicateKeyError` from there for the canonical class.)
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when a document fails schema validation.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ValidationError extends BrightChainDbError {
|
|
33
|
+
/** Field-level validation failures */
|
|
34
|
+
readonly validationErrors: ValidationFieldError[];
|
|
35
|
+
readonly collection: string;
|
|
36
|
+
constructor(collection: string, errors: ValidationFieldError[]);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Thrown when a transaction operation is invalid (e.g. commit without active txn).
|
|
40
|
+
*/
|
|
41
|
+
export declare class TransactionError extends BrightChainDbError {
|
|
42
|
+
readonly sessionId?: string;
|
|
43
|
+
constructor(message: string, sessionId?: string);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Thrown when an index operation fails.
|
|
47
|
+
*/
|
|
48
|
+
export declare class IndexError extends BrightChainDbError {
|
|
49
|
+
readonly indexName?: string;
|
|
50
|
+
constructor(message: string, indexName?: string);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Thrown when a write concern cannot be satisfied.
|
|
54
|
+
*/
|
|
55
|
+
export declare class WriteConcernError extends BrightChainDbError {
|
|
56
|
+
readonly writeConcern: WriteConcernSpec;
|
|
57
|
+
constructor(message: string, writeConcern: WriteConcernSpec);
|
|
58
|
+
}
|
|
59
|
+
/** Write concern specification */
|
|
60
|
+
export interface WriteConcernSpec {
|
|
61
|
+
/** Number of acknowledgments required (1 = primary only, 'majority' = majority) */
|
|
62
|
+
w?: number | 'majority';
|
|
63
|
+
/** Timeout in ms for write concern acknowledgment */
|
|
64
|
+
wtimeoutMS?: number;
|
|
65
|
+
/** Whether to wait for journal sync */
|
|
66
|
+
journal?: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Thrown when one or more operations in a bulk write fail.
|
|
70
|
+
*/
|
|
71
|
+
export declare class BulkWriteError extends BrightChainDbError {
|
|
72
|
+
/** The individual write errors indexed by operation position */
|
|
73
|
+
readonly writeErrors: BulkWriteOperationError[];
|
|
74
|
+
/** Count of operations that succeeded */
|
|
75
|
+
readonly successCount: number;
|
|
76
|
+
constructor(writeErrors: BulkWriteOperationError[], successCount: number);
|
|
77
|
+
}
|
|
78
|
+
export interface BulkWriteOperationError {
|
|
79
|
+
index: number;
|
|
80
|
+
code: number;
|
|
81
|
+
message: string;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAIrC;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,yCAAyC;IACzC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAID;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CASnD;AAID;;;GAGG;AAIH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,sCAAsC;IACtC,SAAgB,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzD,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE;CAU/D;AAID;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAKhD;AAID;;GAEG;AACH,qBAAa,UAAW,SAAQ,kBAAkB;IAChD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAKhD;AAID;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD,SAAgB,YAAY,EAAE,gBAAgB,CAAC;gBAEnC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB;CAK5D;AAED,kCAAkC;AAClC,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACxB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,gEAAgE;IAChE,SAAgB,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvD,yCAAyC;IACzC,SAAgB,YAAY,EAAE,MAAM,CAAC;gBAEzB,WAAW,EAAE,uBAAuB,EAAE,EAAE,YAAY,EAAE,MAAM;CASzE;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Typed error classes for the brightchain database engine.
|
|
4
|
+
*
|
|
5
|
+
* Provides MongoDB-compatible error names and structured properties
|
|
6
|
+
* so consumers can catch and classify errors programmatically.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.BulkWriteError = exports.WriteConcernError = exports.IndexError = exports.TransactionError = exports.ValidationError = exports.DocumentNotFoundError = exports.BrightChainDbError = void 0;
|
|
10
|
+
// ── Base ──
|
|
11
|
+
/**
|
|
12
|
+
* Base class for all brightchain-db errors.
|
|
13
|
+
*/
|
|
14
|
+
class BrightChainDbError extends Error {
|
|
15
|
+
constructor(message, code) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = 'BrightChainDbError';
|
|
18
|
+
this.code = code;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.BrightChainDbError = BrightChainDbError;
|
|
22
|
+
// ── Document errors ──
|
|
23
|
+
/**
|
|
24
|
+
* Thrown when a document is not found by _id.
|
|
25
|
+
*/
|
|
26
|
+
class DocumentNotFoundError extends BrightChainDbError {
|
|
27
|
+
constructor(collection, documentId) {
|
|
28
|
+
super(`Document not found: collection "${collection}", _id "${documentId}"`, 404);
|
|
29
|
+
this.name = 'DocumentNotFoundError';
|
|
30
|
+
this.collection = collection;
|
|
31
|
+
this.documentId = documentId;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.DocumentNotFoundError = DocumentNotFoundError;
|
|
35
|
+
// ── Duplicate key (re-export from indexing for convenience, but also provide the typed base) ──
|
|
36
|
+
/**
|
|
37
|
+
* Thrown when a unique index constraint is violated.
|
|
38
|
+
* (Re-exported from indexing.ts — use `DuplicateKeyError` from there for the canonical class.)
|
|
39
|
+
*/
|
|
40
|
+
// ── Validation errors ──
|
|
41
|
+
/**
|
|
42
|
+
* Thrown when a document fails schema validation.
|
|
43
|
+
*/
|
|
44
|
+
class ValidationError extends BrightChainDbError {
|
|
45
|
+
constructor(collection, errors) {
|
|
46
|
+
const summary = errors.map((e) => `${e.field}: ${e.message}`).join('; ');
|
|
47
|
+
super(`Document failed validation for collection "${collection}": ${summary}`, 121);
|
|
48
|
+
this.name = 'ValidationError';
|
|
49
|
+
this.collection = collection;
|
|
50
|
+
this.validationErrors = errors;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.ValidationError = ValidationError;
|
|
54
|
+
// ── Transaction errors ──
|
|
55
|
+
/**
|
|
56
|
+
* Thrown when a transaction operation is invalid (e.g. commit without active txn).
|
|
57
|
+
*/
|
|
58
|
+
class TransactionError extends BrightChainDbError {
|
|
59
|
+
constructor(message, sessionId) {
|
|
60
|
+
super(message, 251); // MongoDB error code for NoSuchTransaction
|
|
61
|
+
this.name = 'TransactionError';
|
|
62
|
+
this.sessionId = sessionId;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.TransactionError = TransactionError;
|
|
66
|
+
// ── Index errors ──
|
|
67
|
+
/**
|
|
68
|
+
* Thrown when an index operation fails.
|
|
69
|
+
*/
|
|
70
|
+
class IndexError extends BrightChainDbError {
|
|
71
|
+
constructor(message, indexName) {
|
|
72
|
+
super(message, 86); // MongoDB error code for IndexKeySpecsConflict
|
|
73
|
+
this.name = 'IndexError';
|
|
74
|
+
this.indexName = indexName;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.IndexError = IndexError;
|
|
78
|
+
// ── Write concern errors ──
|
|
79
|
+
/**
|
|
80
|
+
* Thrown when a write concern cannot be satisfied.
|
|
81
|
+
*/
|
|
82
|
+
class WriteConcernError extends BrightChainDbError {
|
|
83
|
+
constructor(message, writeConcern) {
|
|
84
|
+
super(message, 64); // MongoDB error code for WriteConcernFailed
|
|
85
|
+
this.name = 'WriteConcernError';
|
|
86
|
+
this.writeConcern = writeConcern;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.WriteConcernError = WriteConcernError;
|
|
90
|
+
// ── Bulk write errors ──
|
|
91
|
+
/**
|
|
92
|
+
* Thrown when one or more operations in a bulk write fail.
|
|
93
|
+
*/
|
|
94
|
+
class BulkWriteError extends BrightChainDbError {
|
|
95
|
+
constructor(writeErrors, successCount) {
|
|
96
|
+
super(`Bulk write operation failed: ${writeErrors.length} error(s), ${successCount} succeeded`, 65);
|
|
97
|
+
this.name = 'BulkWriteError';
|
|
98
|
+
this.writeErrors = writeErrors;
|
|
99
|
+
this.successCount = successCount;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.BulkWriteError = BulkWriteError;
|
|
103
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/errors.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAOH,aAAa;AAEb;;GAEG;AACH,MAAa,kBAAmB,SAAQ,KAAK;IAI3C,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,gDASC;AAED,wBAAwB;AAExB;;GAEG;AACH,MAAa,qBAAsB,SAAQ,kBAAkB;IAI3D,YAAY,UAAkB,EAAE,UAAkB;QAChD,KAAK,CACH,mCAAmC,UAAU,WAAW,UAAU,GAAG,EACrE,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAbD,sDAaC;AAED,iGAAiG;AAEjG;;;GAGG;AAEH,0BAA0B;AAE1B;;GAEG;AACH,MAAa,eAAgB,SAAQ,kBAAkB;IAKrD,YAAY,UAAkB,EAAE,MAA8B;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,KAAK,CACH,8CAA8C,UAAU,MAAM,OAAO,EAAE,EACvE,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACjC,CAAC;CACF;AAfD,0CAeC;AAED,2BAA2B;AAE3B;;GAEG;AACH,MAAa,gBAAiB,SAAQ,kBAAkB;IAGtD,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,2CAA2C;QAChE,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,4CAQC;AAED,qBAAqB;AAErB;;GAEG;AACH,MAAa,UAAW,SAAQ,kBAAkB;IAGhD,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,+CAA+C;QACnE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,gCAQC;AAED,6BAA6B;AAE7B;;GAEG;AACH,MAAa,iBAAkB,SAAQ,kBAAkB;IAGvD,YAAY,OAAe,EAAE,YAA8B;QACzD,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,4CAA4C;QAChE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AARD,8CAQC;AAYD,0BAA0B;AAE1B;;GAEG;AACH,MAAa,cAAe,SAAQ,kBAAkB;IAMpD,YAAY,WAAsC,EAAE,YAAoB;QACtE,KAAK,CACH,gCAAgC,WAAW,CAAC,MAAM,cAAc,YAAY,YAAY,EACxF,EAAE,CACH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAfD,wCAeC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InMemoryDatabase – a platform-agnostic IDatabase implementation.
|
|
3
|
+
*
|
|
4
|
+
* Uses MemoryBlockStore and InMemoryHeadRegistry for storage, requiring
|
|
5
|
+
* no Node.js APIs. This is the base class that BrightChainDb in
|
|
6
|
+
* brightchain-db extends to add disk persistence.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const db = new InMemoryDatabase(blockStore, { name: 'mydb' });
|
|
10
|
+
* await db.connect();
|
|
11
|
+
* const users = db.collection('users');
|
|
12
|
+
* await users.insertOne({ name: 'Alice' });
|
|
13
|
+
*/
|
|
14
|
+
import type { CollectionOptions, CursorSession, IClientSession, ICollection, IDatabase } from '@digitaldefiance/suite-core-lib';
|
|
15
|
+
import type { IBlockStore } from '../interfaces/storage/blockStore';
|
|
16
|
+
import type { BsonDocument, DocumentId } from '../interfaces/storage/documentTypes';
|
|
17
|
+
import type { IHeadRegistry } from '../interfaces/storage/headRegistry';
|
|
18
|
+
import { Collection } from './collection';
|
|
19
|
+
import type { UuidGenerator } from './uuidGenerator';
|
|
20
|
+
/**
|
|
21
|
+
* Options for creating an InMemoryDatabase instance.
|
|
22
|
+
*/
|
|
23
|
+
export interface InMemoryDatabaseOptions {
|
|
24
|
+
/** Database name (default: 'brightchain') */
|
|
25
|
+
name?: string;
|
|
26
|
+
/** Custom head registry (default: new InMemoryHeadRegistry()) */
|
|
27
|
+
headRegistry?: IHeadRegistry;
|
|
28
|
+
/** Custom UUID generator (default: createDefaultUuidGenerator()) */
|
|
29
|
+
uuidGenerator?: UuidGenerator;
|
|
30
|
+
/** Cursor session timeout in ms (default: 300000 = 5 minutes) */
|
|
31
|
+
cursorTimeoutMs?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The main in-memory database driver – analogous to MongoDB's `Db` class.
|
|
35
|
+
*
|
|
36
|
+
* Designed to be extended by `BrightChainDb` in brightchain-db which adds
|
|
37
|
+
* persistence-specific options (dataDir, poolId, PersistentHeadRegistry).
|
|
38
|
+
*/
|
|
39
|
+
export declare class InMemoryDatabase implements IDatabase {
|
|
40
|
+
readonly name: string;
|
|
41
|
+
protected readonly store: IBlockStore;
|
|
42
|
+
protected readonly collections: Map<string, Collection<BsonDocument>>;
|
|
43
|
+
protected readonly headRegistry: IHeadRegistry;
|
|
44
|
+
protected readonly uuidGenerator: UuidGenerator;
|
|
45
|
+
/** Server-side cursor sessions for REST pagination */
|
|
46
|
+
protected readonly cursorSessions: Map<string, CursorSession>;
|
|
47
|
+
/** Default timeout for cursor sessions (5 minutes) */
|
|
48
|
+
protected readonly cursorTimeoutMs: number;
|
|
49
|
+
/** Connection state for IDatabase conformance */
|
|
50
|
+
protected _connected: boolean;
|
|
51
|
+
constructor(blockStore: IBlockStore, options?: InMemoryDatabaseOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Connect to the backing store.
|
|
54
|
+
* Block storage does not require a network connection, so the URI is
|
|
55
|
+
* accepted but ignored. Calling connect on an already-connected instance
|
|
56
|
+
* completes without error (idempotent).
|
|
57
|
+
*/
|
|
58
|
+
connect(_uri?: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Disconnect from the backing store.
|
|
61
|
+
* Calling disconnect on an already-disconnected instance completes
|
|
62
|
+
* without error (idempotent).
|
|
63
|
+
*/
|
|
64
|
+
disconnect(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Whether the store is currently connected.
|
|
67
|
+
*/
|
|
68
|
+
isConnected(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get (or create) a collection by name.
|
|
71
|
+
* Collections are created lazily – no explicit create step is needed.
|
|
72
|
+
*/
|
|
73
|
+
collection<T extends BsonDocument = BsonDocument>(name: string, options?: CollectionOptions): ICollection<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Expose the head registry for components that need to read head block IDs
|
|
76
|
+
* (e.g. CBLIndex for FEC parity generation on metadata blocks).
|
|
77
|
+
*/
|
|
78
|
+
getHeadRegistry(): IHeadRegistry;
|
|
79
|
+
/**
|
|
80
|
+
* List all known collection names.
|
|
81
|
+
*/
|
|
82
|
+
listCollections(): string[];
|
|
83
|
+
/**
|
|
84
|
+
* Drop a collection – removes all documents and indexes.
|
|
85
|
+
*/
|
|
86
|
+
dropCollection(name: string): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Drop the entire database.
|
|
89
|
+
* Clears all collections. Subclasses may add pool management.
|
|
90
|
+
*/
|
|
91
|
+
dropDatabase(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Start a client session for transaction support.
|
|
94
|
+
*
|
|
95
|
+
* Usage:
|
|
96
|
+
* const session = db.startSession();
|
|
97
|
+
* session.startTransaction();
|
|
98
|
+
* try {
|
|
99
|
+
* await coll.insertOne(doc, { session });
|
|
100
|
+
* await session.commitTransaction();
|
|
101
|
+
* } catch {
|
|
102
|
+
* await session.abortTransaction();
|
|
103
|
+
* } finally {
|
|
104
|
+
* session.endSession();
|
|
105
|
+
* }
|
|
106
|
+
*/
|
|
107
|
+
startSession(): IClientSession;
|
|
108
|
+
/**
|
|
109
|
+
* Convenience: run a callback within a transaction.
|
|
110
|
+
* Automatically commits on success, aborts on error.
|
|
111
|
+
*/
|
|
112
|
+
withTransaction<R>(fn: (session: IClientSession) => Promise<R>): Promise<R>;
|
|
113
|
+
/**
|
|
114
|
+
* Create a server-side cursor session for paginated access.
|
|
115
|
+
*/
|
|
116
|
+
createCursorSession(params: Omit<CursorSession, 'id' | 'lastAccessed'>): CursorSession;
|
|
117
|
+
/**
|
|
118
|
+
* Get a cursor session by ID and refresh its last-accessed timestamp.
|
|
119
|
+
* Returns null if the cursor has expired or doesn't exist.
|
|
120
|
+
*/
|
|
121
|
+
getCursorSession(cursorId: string): CursorSession | null;
|
|
122
|
+
/**
|
|
123
|
+
* Advance cursor position and return next batch of document IDs.
|
|
124
|
+
*/
|
|
125
|
+
getNextBatch(cursorId: string): DocumentId[] | null;
|
|
126
|
+
/**
|
|
127
|
+
* Close and remove a cursor session.
|
|
128
|
+
*/
|
|
129
|
+
closeCursorSession(cursorId: string): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Clean up expired cursor sessions.
|
|
132
|
+
*/
|
|
133
|
+
protected cleanExpiredCursors(): void;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=inMemoryDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemoryDatabase.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/inMemoryDatabase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,WAAW,EACX,SAAS,EACV,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,oEAAoE;IACpE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,WAAW,wCAAiC;IAC/D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,sDAAsD;IACtD,SAAS,CAAC,QAAQ,CAAC,cAAc,6BAAoC;IACrE,sDAAsD;IACtD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAC3C,iDAAiD;IACjD,SAAS,CAAC,UAAU,UAAS;gBAEjB,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAQtE;;;;;OAKG;IACG,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAC9C,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,WAAW,CAAC,CAAC,CAAC;IAmBjB;;;OAGG;IACH,eAAe,IAAI,aAAa;IAIhC;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpD;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;;;;;;;;;;;OAcG;IACH,YAAY,IAAI,cAAc;IAkD9B;;;OAGG;IACG,eAAe,CAAC,CAAC,EACrB,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC;IAwBb;;OAEG;IACH,mBAAmB,CACjB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,cAAc,CAAC,GACjD,aAAa;IAYhB;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAWxD;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI;IASnD;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;CAQtC"}
|