@push.rocks/smartmongo 2.0.14 → 2.2.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/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/congodb/congodb.plugins.d.ts +10 -0
- package/dist_ts/congodb/congodb.plugins.js +14 -0
- package/dist_ts/congodb/engine/AggregationEngine.d.ts +66 -0
- package/dist_ts/congodb/engine/AggregationEngine.js +189 -0
- package/dist_ts/congodb/engine/IndexEngine.d.ts +77 -0
- package/dist_ts/congodb/engine/IndexEngine.js +376 -0
- package/dist_ts/congodb/engine/QueryEngine.d.ts +54 -0
- package/dist_ts/congodb/engine/QueryEngine.js +271 -0
- package/dist_ts/congodb/engine/TransactionEngine.d.ts +85 -0
- package/dist_ts/congodb/engine/TransactionEngine.js +287 -0
- package/dist_ts/congodb/engine/UpdateEngine.d.ts +47 -0
- package/dist_ts/congodb/engine/UpdateEngine.js +461 -0
- package/dist_ts/congodb/errors/CongoErrors.d.ts +100 -0
- package/dist_ts/congodb/errors/CongoErrors.js +155 -0
- package/dist_ts/congodb/index.d.ts +19 -0
- package/dist_ts/congodb/index.js +26 -0
- package/dist_ts/congodb/server/CommandRouter.d.ts +51 -0
- package/dist_ts/congodb/server/CommandRouter.js +132 -0
- package/dist_ts/congodb/server/CongoServer.d.ts +95 -0
- package/dist_ts/congodb/server/CongoServer.js +227 -0
- package/dist_ts/congodb/server/WireProtocol.d.ts +117 -0
- package/dist_ts/congodb/server/WireProtocol.js +298 -0
- package/dist_ts/congodb/server/handlers/AdminHandler.d.ts +100 -0
- package/dist_ts/congodb/server/handlers/AdminHandler.js +568 -0
- package/dist_ts/congodb/server/handlers/AggregateHandler.d.ts +31 -0
- package/dist_ts/congodb/server/handlers/AggregateHandler.js +277 -0
- package/dist_ts/congodb/server/handlers/DeleteHandler.d.ts +8 -0
- package/dist_ts/congodb/server/handlers/DeleteHandler.js +83 -0
- package/dist_ts/congodb/server/handlers/FindHandler.d.ts +31 -0
- package/dist_ts/congodb/server/handlers/FindHandler.js +261 -0
- package/dist_ts/congodb/server/handlers/HelloHandler.d.ts +11 -0
- package/dist_ts/congodb/server/handlers/HelloHandler.js +62 -0
- package/dist_ts/congodb/server/handlers/IndexHandler.d.ts +20 -0
- package/dist_ts/congodb/server/handlers/IndexHandler.js +183 -0
- package/dist_ts/congodb/server/handlers/InsertHandler.d.ts +8 -0
- package/dist_ts/congodb/server/handlers/InsertHandler.js +76 -0
- package/dist_ts/congodb/server/handlers/UpdateHandler.d.ts +24 -0
- package/dist_ts/congodb/server/handlers/UpdateHandler.js +270 -0
- package/dist_ts/congodb/server/handlers/index.d.ts +8 -0
- package/dist_ts/congodb/server/handlers/index.js +10 -0
- package/dist_ts/congodb/server/index.d.ts +6 -0
- package/dist_ts/congodb/server/index.js +7 -0
- package/dist_ts/congodb/storage/FileStorageAdapter.d.ts +61 -0
- package/dist_ts/congodb/storage/FileStorageAdapter.js +396 -0
- package/dist_ts/congodb/storage/IStorageAdapter.d.ts +140 -0
- package/dist_ts/congodb/storage/IStorageAdapter.js +2 -0
- package/dist_ts/congodb/storage/MemoryStorageAdapter.d.ts +66 -0
- package/dist_ts/congodb/storage/MemoryStorageAdapter.js +367 -0
- package/dist_ts/congodb/storage/OpLog.d.ts +93 -0
- package/dist_ts/congodb/storage/OpLog.js +221 -0
- package/dist_ts/congodb/types/interfaces.d.ts +363 -0
- package/dist_ts/congodb/types/interfaces.js +2 -0
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +8 -6
- package/npmextra.json +17 -7
- package/package.json +20 -12
- package/readme.hints.md +79 -0
- package/readme.md +398 -44
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/congodb/congodb.plugins.ts +17 -0
- package/ts/congodb/engine/AggregationEngine.ts +283 -0
- package/ts/congodb/engine/IndexEngine.ts +479 -0
- package/ts/congodb/engine/QueryEngine.ts +301 -0
- package/ts/congodb/engine/TransactionEngine.ts +351 -0
- package/ts/congodb/engine/UpdateEngine.ts +506 -0
- package/ts/congodb/errors/CongoErrors.ts +181 -0
- package/ts/congodb/index.ts +37 -0
- package/ts/congodb/server/CommandRouter.ts +180 -0
- package/ts/congodb/server/CongoServer.ts +298 -0
- package/ts/congodb/server/WireProtocol.ts +416 -0
- package/ts/congodb/server/handlers/AdminHandler.ts +614 -0
- package/ts/congodb/server/handlers/AggregateHandler.ts +342 -0
- package/ts/congodb/server/handlers/DeleteHandler.ts +100 -0
- package/ts/congodb/server/handlers/FindHandler.ts +301 -0
- package/ts/congodb/server/handlers/HelloHandler.ts +78 -0
- package/ts/congodb/server/handlers/IndexHandler.ts +207 -0
- package/ts/congodb/server/handlers/InsertHandler.ts +91 -0
- package/ts/congodb/server/handlers/UpdateHandler.ts +315 -0
- package/ts/congodb/server/handlers/index.ts +10 -0
- package/ts/congodb/server/index.ts +10 -0
- package/ts/congodb/storage/FileStorageAdapter.ts +479 -0
- package/ts/congodb/storage/IStorageAdapter.ts +202 -0
- package/ts/congodb/storage/MemoryStorageAdapter.ts +443 -0
- package/ts/congodb/storage/OpLog.ts +282 -0
- package/ts/congodb/types/interfaces.ts +433 -0
- package/ts/index.ts +3 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import * as plugins from '../congodb.plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Operation Log for tracking all mutations
|
|
4
|
+
* Used primarily for change stream support
|
|
5
|
+
*/
|
|
6
|
+
export class OpLog {
|
|
7
|
+
storage;
|
|
8
|
+
counter = 0;
|
|
9
|
+
listeners = [];
|
|
10
|
+
constructor(storage) {
|
|
11
|
+
this.storage = storage;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a new timestamp for oplog entries
|
|
15
|
+
*/
|
|
16
|
+
generateTimestamp() {
|
|
17
|
+
this.counter++;
|
|
18
|
+
return new plugins.bson.Timestamp({ t: Math.floor(Date.now() / 1000), i: this.counter });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generate a resume token from a timestamp
|
|
22
|
+
*/
|
|
23
|
+
generateResumeToken(ts) {
|
|
24
|
+
// Create a resume token similar to MongoDB's format
|
|
25
|
+
// It's a base64-encoded BSON document containing the timestamp
|
|
26
|
+
const tokenData = {
|
|
27
|
+
_data: Buffer.from(JSON.stringify({
|
|
28
|
+
ts: { t: ts.high, i: ts.low },
|
|
29
|
+
version: 1,
|
|
30
|
+
})).toString('base64'),
|
|
31
|
+
};
|
|
32
|
+
return tokenData;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse a resume token to get the timestamp
|
|
36
|
+
*/
|
|
37
|
+
parseResumeToken(token) {
|
|
38
|
+
try {
|
|
39
|
+
const data = JSON.parse(Buffer.from(token._data, 'base64').toString('utf-8'));
|
|
40
|
+
return new plugins.bson.Timestamp({ t: data.ts.t, i: data.ts.i });
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new Error('Invalid resume token');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Record an insert operation
|
|
48
|
+
*/
|
|
49
|
+
async recordInsert(dbName, collName, document, txnInfo) {
|
|
50
|
+
const entry = {
|
|
51
|
+
ts: this.generateTimestamp(),
|
|
52
|
+
op: 'i',
|
|
53
|
+
ns: `${dbName}.${collName}`,
|
|
54
|
+
o: document,
|
|
55
|
+
...txnInfo,
|
|
56
|
+
};
|
|
57
|
+
await this.storage.appendOpLog(entry);
|
|
58
|
+
this.notifyListeners(entry);
|
|
59
|
+
return entry;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Record an update operation
|
|
63
|
+
*/
|
|
64
|
+
async recordUpdate(dbName, collName, filter, update, txnInfo) {
|
|
65
|
+
const entry = {
|
|
66
|
+
ts: this.generateTimestamp(),
|
|
67
|
+
op: 'u',
|
|
68
|
+
ns: `${dbName}.${collName}`,
|
|
69
|
+
o: update,
|
|
70
|
+
o2: filter,
|
|
71
|
+
...txnInfo,
|
|
72
|
+
};
|
|
73
|
+
await this.storage.appendOpLog(entry);
|
|
74
|
+
this.notifyListeners(entry);
|
|
75
|
+
return entry;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Record a delete operation
|
|
79
|
+
*/
|
|
80
|
+
async recordDelete(dbName, collName, filter, txnInfo) {
|
|
81
|
+
const entry = {
|
|
82
|
+
ts: this.generateTimestamp(),
|
|
83
|
+
op: 'd',
|
|
84
|
+
ns: `${dbName}.${collName}`,
|
|
85
|
+
o: filter,
|
|
86
|
+
...txnInfo,
|
|
87
|
+
};
|
|
88
|
+
await this.storage.appendOpLog(entry);
|
|
89
|
+
this.notifyListeners(entry);
|
|
90
|
+
return entry;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Record a command (drop, rename, etc.)
|
|
94
|
+
*/
|
|
95
|
+
async recordCommand(dbName, command) {
|
|
96
|
+
const entry = {
|
|
97
|
+
ts: this.generateTimestamp(),
|
|
98
|
+
op: 'c',
|
|
99
|
+
ns: `${dbName}.$cmd`,
|
|
100
|
+
o: command,
|
|
101
|
+
};
|
|
102
|
+
await this.storage.appendOpLog(entry);
|
|
103
|
+
this.notifyListeners(entry);
|
|
104
|
+
return entry;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get oplog entries after a timestamp
|
|
108
|
+
*/
|
|
109
|
+
async getEntriesAfter(ts, limit) {
|
|
110
|
+
return this.storage.getOpLogAfter(ts, limit);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the latest timestamp
|
|
114
|
+
*/
|
|
115
|
+
async getLatestTimestamp() {
|
|
116
|
+
return this.storage.getLatestOpLogTimestamp();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Subscribe to oplog changes (for change streams)
|
|
120
|
+
*/
|
|
121
|
+
subscribe(listener) {
|
|
122
|
+
this.listeners.push(listener);
|
|
123
|
+
return () => {
|
|
124
|
+
const idx = this.listeners.indexOf(listener);
|
|
125
|
+
if (idx >= 0) {
|
|
126
|
+
this.listeners.splice(idx, 1);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Notify all listeners of a new entry
|
|
132
|
+
*/
|
|
133
|
+
notifyListeners(entry) {
|
|
134
|
+
for (const listener of this.listeners) {
|
|
135
|
+
try {
|
|
136
|
+
listener(entry);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error('Error in oplog listener:', error);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Convert an oplog entry to a change stream document
|
|
145
|
+
*/
|
|
146
|
+
opLogEntryToChangeEvent(entry, fullDocument, fullDocumentBeforeChange) {
|
|
147
|
+
const [db, coll] = entry.ns.split('.');
|
|
148
|
+
const resumeToken = this.generateResumeToken(entry.ts);
|
|
149
|
+
const baseEvent = {
|
|
150
|
+
_id: resumeToken,
|
|
151
|
+
ns: { db, coll: coll === '$cmd' ? undefined : coll },
|
|
152
|
+
clusterTime: entry.ts,
|
|
153
|
+
};
|
|
154
|
+
switch (entry.op) {
|
|
155
|
+
case 'i':
|
|
156
|
+
return {
|
|
157
|
+
...baseEvent,
|
|
158
|
+
operationType: 'insert',
|
|
159
|
+
fullDocument: fullDocument || entry.o,
|
|
160
|
+
documentKey: entry.o._id ? { _id: entry.o._id } : undefined,
|
|
161
|
+
};
|
|
162
|
+
case 'u':
|
|
163
|
+
const updateEvent = {
|
|
164
|
+
...baseEvent,
|
|
165
|
+
operationType: 'update',
|
|
166
|
+
documentKey: entry.o2?._id ? { _id: entry.o2._id } : undefined,
|
|
167
|
+
};
|
|
168
|
+
if (fullDocument) {
|
|
169
|
+
updateEvent.fullDocument = fullDocument;
|
|
170
|
+
}
|
|
171
|
+
if (fullDocumentBeforeChange) {
|
|
172
|
+
updateEvent.fullDocumentBeforeChange = fullDocumentBeforeChange;
|
|
173
|
+
}
|
|
174
|
+
// Parse update description
|
|
175
|
+
if (entry.o.$set || entry.o.$unset) {
|
|
176
|
+
updateEvent.updateDescription = {
|
|
177
|
+
updatedFields: entry.o.$set || {},
|
|
178
|
+
removedFields: entry.o.$unset ? Object.keys(entry.o.$unset) : [],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return updateEvent;
|
|
182
|
+
case 'd':
|
|
183
|
+
return {
|
|
184
|
+
...baseEvent,
|
|
185
|
+
operationType: 'delete',
|
|
186
|
+
documentKey: entry.o._id ? { _id: entry.o._id } : undefined,
|
|
187
|
+
fullDocumentBeforeChange,
|
|
188
|
+
};
|
|
189
|
+
case 'c':
|
|
190
|
+
if (entry.o.drop) {
|
|
191
|
+
return {
|
|
192
|
+
...baseEvent,
|
|
193
|
+
operationType: 'drop',
|
|
194
|
+
ns: { db, coll: entry.o.drop },
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
if (entry.o.dropDatabase) {
|
|
198
|
+
return {
|
|
199
|
+
...baseEvent,
|
|
200
|
+
operationType: 'dropDatabase',
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
if (entry.o.renameCollection) {
|
|
204
|
+
return {
|
|
205
|
+
...baseEvent,
|
|
206
|
+
operationType: 'rename',
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
...baseEvent,
|
|
211
|
+
operationType: 'invalidate',
|
|
212
|
+
};
|
|
213
|
+
default:
|
|
214
|
+
return {
|
|
215
|
+
...baseEvent,
|
|
216
|
+
operationType: 'invalidate',
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jb25nb2RiL3N0b3JhZ2UvT3BMb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUlqRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sS0FBSztJQUNSLE9BQU8sQ0FBa0I7SUFDekIsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLFNBQVMsR0FBd0MsRUFBRSxDQUFDO0lBRTVELFlBQVksT0FBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxFQUEwQjtRQUM1QyxvREFBb0Q7UUFDcEQsK0RBQStEO1FBQy9ELE1BQU0sU0FBUyxHQUFHO1lBQ2hCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO2dCQUM3QixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7U0FDdkIsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtB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
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import type * as plugins from '../congodb.plugins.js';
|
|
2
|
+
export type Document = Record<string, any>;
|
|
3
|
+
export interface WithId<TSchema> {
|
|
4
|
+
_id: plugins.bson.ObjectId;
|
|
5
|
+
}
|
|
6
|
+
export interface ICongoClientOptions {
|
|
7
|
+
/** Storage adapter type: 'memory' or 'file' */
|
|
8
|
+
storageType?: 'memory' | 'file';
|
|
9
|
+
/** Path for file-based storage */
|
|
10
|
+
storagePath?: string;
|
|
11
|
+
/** Enable persistence for memory adapter */
|
|
12
|
+
persist?: boolean;
|
|
13
|
+
/** Path for persistence file when using memory adapter */
|
|
14
|
+
persistPath?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface IParsedConnectionString {
|
|
17
|
+
protocol: 'congo';
|
|
18
|
+
storageType: 'memory' | 'file';
|
|
19
|
+
options: {
|
|
20
|
+
persist?: string;
|
|
21
|
+
path?: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface IInsertOneOptions {
|
|
25
|
+
/** Session for transaction support */
|
|
26
|
+
session?: IClientSession;
|
|
27
|
+
/** Custom write concern */
|
|
28
|
+
writeConcern?: IWriteConcern;
|
|
29
|
+
}
|
|
30
|
+
export interface IInsertManyOptions extends IInsertOneOptions {
|
|
31
|
+
/** If true, inserts are ordered and stop on first error */
|
|
32
|
+
ordered?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface IFindOptions<TSchema = Document> {
|
|
35
|
+
/** Projection to apply */
|
|
36
|
+
projection?: Partial<Record<keyof TSchema | string, 0 | 1 | boolean>>;
|
|
37
|
+
/** Sort specification */
|
|
38
|
+
sort?: ISortSpecification;
|
|
39
|
+
/** Number of documents to skip */
|
|
40
|
+
skip?: number;
|
|
41
|
+
/** Maximum number of documents to return */
|
|
42
|
+
limit?: number;
|
|
43
|
+
/** Session for transaction support */
|
|
44
|
+
session?: IClientSession;
|
|
45
|
+
/** Hint for index usage */
|
|
46
|
+
hint?: string | Document;
|
|
47
|
+
}
|
|
48
|
+
export interface IUpdateOptions {
|
|
49
|
+
/** Create document if it doesn't exist */
|
|
50
|
+
upsert?: boolean;
|
|
51
|
+
/** Session for transaction support */
|
|
52
|
+
session?: IClientSession;
|
|
53
|
+
/** Array filters for positional updates */
|
|
54
|
+
arrayFilters?: Document[];
|
|
55
|
+
/** Custom write concern */
|
|
56
|
+
writeConcern?: IWriteConcern;
|
|
57
|
+
/** Hint for index usage */
|
|
58
|
+
hint?: string | Document;
|
|
59
|
+
}
|
|
60
|
+
export interface IReplaceOptions extends IUpdateOptions {
|
|
61
|
+
}
|
|
62
|
+
export interface IDeleteOptions {
|
|
63
|
+
/** Session for transaction support */
|
|
64
|
+
session?: IClientSession;
|
|
65
|
+
/** Custom write concern */
|
|
66
|
+
writeConcern?: IWriteConcern;
|
|
67
|
+
/** Hint for index usage */
|
|
68
|
+
hint?: string | Document;
|
|
69
|
+
}
|
|
70
|
+
export interface IFindOneAndUpdateOptions extends IUpdateOptions {
|
|
71
|
+
/** Return the document before or after the update */
|
|
72
|
+
returnDocument?: 'before' | 'after';
|
|
73
|
+
/** Projection to apply */
|
|
74
|
+
projection?: Document;
|
|
75
|
+
/** Sort specification to determine which document to modify */
|
|
76
|
+
sort?: ISortSpecification;
|
|
77
|
+
}
|
|
78
|
+
export interface IFindOneAndReplaceOptions extends IFindOneAndUpdateOptions {
|
|
79
|
+
}
|
|
80
|
+
export interface IFindOneAndDeleteOptions {
|
|
81
|
+
/** Projection to apply */
|
|
82
|
+
projection?: Document;
|
|
83
|
+
/** Sort specification to determine which document to delete */
|
|
84
|
+
sort?: ISortSpecification;
|
|
85
|
+
/** Session for transaction support */
|
|
86
|
+
session?: IClientSession;
|
|
87
|
+
}
|
|
88
|
+
export interface IInsertOneResult {
|
|
89
|
+
acknowledged: boolean;
|
|
90
|
+
insertedId: plugins.bson.ObjectId;
|
|
91
|
+
}
|
|
92
|
+
export interface IInsertManyResult {
|
|
93
|
+
acknowledged: boolean;
|
|
94
|
+
insertedCount: number;
|
|
95
|
+
insertedIds: Record<number, plugins.bson.ObjectId>;
|
|
96
|
+
}
|
|
97
|
+
export interface IUpdateResult {
|
|
98
|
+
acknowledged: boolean;
|
|
99
|
+
matchedCount: number;
|
|
100
|
+
modifiedCount: number;
|
|
101
|
+
upsertedCount: number;
|
|
102
|
+
upsertedId: plugins.bson.ObjectId | null;
|
|
103
|
+
}
|
|
104
|
+
export interface IDeleteResult {
|
|
105
|
+
acknowledged: boolean;
|
|
106
|
+
deletedCount: number;
|
|
107
|
+
}
|
|
108
|
+
export interface IModifyResult<TSchema> {
|
|
109
|
+
value: TSchema | null;
|
|
110
|
+
ok: 1 | 0;
|
|
111
|
+
lastErrorObject?: {
|
|
112
|
+
n: number;
|
|
113
|
+
updatedExisting?: boolean;
|
|
114
|
+
upserted?: plugins.bson.ObjectId;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export type ISortDirection = 1 | -1 | 'asc' | 'desc' | 'ascending' | 'descending';
|
|
118
|
+
export type ISortSpecification = Record<string, ISortDirection> | [string, ISortDirection][];
|
|
119
|
+
export interface IIndexSpecification {
|
|
120
|
+
key: Record<string, 1 | -1 | 'text' | '2dsphere'>;
|
|
121
|
+
name?: string;
|
|
122
|
+
unique?: boolean;
|
|
123
|
+
sparse?: boolean;
|
|
124
|
+
expireAfterSeconds?: number;
|
|
125
|
+
background?: boolean;
|
|
126
|
+
partialFilterExpression?: Document;
|
|
127
|
+
}
|
|
128
|
+
export interface IIndexInfo {
|
|
129
|
+
v: number;
|
|
130
|
+
key: Record<string, 1 | -1 | string>;
|
|
131
|
+
name: string;
|
|
132
|
+
unique?: boolean;
|
|
133
|
+
sparse?: boolean;
|
|
134
|
+
expireAfterSeconds?: number;
|
|
135
|
+
}
|
|
136
|
+
export interface ICreateIndexOptions {
|
|
137
|
+
unique?: boolean;
|
|
138
|
+
sparse?: boolean;
|
|
139
|
+
expireAfterSeconds?: number;
|
|
140
|
+
name?: string;
|
|
141
|
+
background?: boolean;
|
|
142
|
+
partialFilterExpression?: Document;
|
|
143
|
+
}
|
|
144
|
+
export interface IWriteConcern {
|
|
145
|
+
w?: number | 'majority';
|
|
146
|
+
j?: boolean;
|
|
147
|
+
wtimeout?: number;
|
|
148
|
+
}
|
|
149
|
+
export interface IAggregateOptions {
|
|
150
|
+
/** Allow disk use for large aggregations */
|
|
151
|
+
allowDiskUse?: boolean;
|
|
152
|
+
/** Maximum time in ms */
|
|
153
|
+
maxTimeMS?: number;
|
|
154
|
+
/** Session for transaction support */
|
|
155
|
+
session?: IClientSession;
|
|
156
|
+
/** Batch size for cursor */
|
|
157
|
+
batchSize?: number;
|
|
158
|
+
/** Collation settings */
|
|
159
|
+
collation?: ICollation;
|
|
160
|
+
/** Hint for index usage */
|
|
161
|
+
hint?: string | Document;
|
|
162
|
+
/** Comment for profiling */
|
|
163
|
+
comment?: string;
|
|
164
|
+
}
|
|
165
|
+
export interface ICollation {
|
|
166
|
+
locale: string;
|
|
167
|
+
caseLevel?: boolean;
|
|
168
|
+
caseFirst?: string;
|
|
169
|
+
strength?: number;
|
|
170
|
+
numericOrdering?: boolean;
|
|
171
|
+
alternate?: string;
|
|
172
|
+
maxVariable?: string;
|
|
173
|
+
backwards?: boolean;
|
|
174
|
+
}
|
|
175
|
+
export interface IChangeStreamOptions {
|
|
176
|
+
/** Resume after this token */
|
|
177
|
+
resumeAfter?: IResumeToken;
|
|
178
|
+
/** Start at this operation time */
|
|
179
|
+
startAtOperationTime?: plugins.bson.Timestamp;
|
|
180
|
+
/** Start after this token */
|
|
181
|
+
startAfter?: IResumeToken;
|
|
182
|
+
/** Full document lookup mode */
|
|
183
|
+
fullDocument?: 'default' | 'updateLookup' | 'whenAvailable' | 'required';
|
|
184
|
+
/** Full document before change */
|
|
185
|
+
fullDocumentBeforeChange?: 'off' | 'whenAvailable' | 'required';
|
|
186
|
+
/** Batch size */
|
|
187
|
+
batchSize?: number;
|
|
188
|
+
/** Maximum await time in ms */
|
|
189
|
+
maxAwaitTimeMS?: number;
|
|
190
|
+
}
|
|
191
|
+
export interface IResumeToken {
|
|
192
|
+
_data: string;
|
|
193
|
+
}
|
|
194
|
+
export type ChangeStreamOperationType = 'insert' | 'update' | 'replace' | 'delete' | 'drop' | 'rename' | 'dropDatabase' | 'invalidate';
|
|
195
|
+
export interface IChangeStreamDocument<TSchema = Document> {
|
|
196
|
+
_id: IResumeToken;
|
|
197
|
+
operationType: ChangeStreamOperationType;
|
|
198
|
+
fullDocument?: TSchema;
|
|
199
|
+
fullDocumentBeforeChange?: TSchema;
|
|
200
|
+
ns: {
|
|
201
|
+
db: string;
|
|
202
|
+
coll?: string;
|
|
203
|
+
};
|
|
204
|
+
documentKey?: {
|
|
205
|
+
_id: plugins.bson.ObjectId;
|
|
206
|
+
};
|
|
207
|
+
updateDescription?: {
|
|
208
|
+
updatedFields?: Document;
|
|
209
|
+
removedFields?: string[];
|
|
210
|
+
truncatedArrays?: Array<{
|
|
211
|
+
field: string;
|
|
212
|
+
newSize: number;
|
|
213
|
+
}>;
|
|
214
|
+
};
|
|
215
|
+
clusterTime?: plugins.bson.Timestamp;
|
|
216
|
+
txnNumber?: number;
|
|
217
|
+
lsid?: {
|
|
218
|
+
id: plugins.bson.Binary;
|
|
219
|
+
uid: plugins.bson.Binary;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
export interface IClientSession {
|
|
223
|
+
id: {
|
|
224
|
+
id: plugins.bson.Binary;
|
|
225
|
+
};
|
|
226
|
+
inTransaction(): boolean;
|
|
227
|
+
startTransaction(options?: ITransactionOptions): void;
|
|
228
|
+
commitTransaction(): Promise<void>;
|
|
229
|
+
abortTransaction(): Promise<void>;
|
|
230
|
+
withTransaction<T>(fn: () => Promise<T>, options?: ITransactionOptions): Promise<T>;
|
|
231
|
+
endSession(): Promise<void>;
|
|
232
|
+
}
|
|
233
|
+
export interface ITransactionOptions {
|
|
234
|
+
readConcern?: IReadConcern;
|
|
235
|
+
writeConcern?: IWriteConcern;
|
|
236
|
+
readPreference?: string;
|
|
237
|
+
maxCommitTimeMS?: number;
|
|
238
|
+
}
|
|
239
|
+
export interface IReadConcern {
|
|
240
|
+
level: 'local' | 'available' | 'majority' | 'linearizable' | 'snapshot';
|
|
241
|
+
}
|
|
242
|
+
export interface IBulkWriteOptions {
|
|
243
|
+
ordered?: boolean;
|
|
244
|
+
session?: IClientSession;
|
|
245
|
+
writeConcern?: IWriteConcern;
|
|
246
|
+
}
|
|
247
|
+
export interface IBulkWriteOperation<TSchema = Document> {
|
|
248
|
+
insertOne?: {
|
|
249
|
+
document: TSchema;
|
|
250
|
+
};
|
|
251
|
+
updateOne?: {
|
|
252
|
+
filter: Document;
|
|
253
|
+
update: Document;
|
|
254
|
+
upsert?: boolean;
|
|
255
|
+
arrayFilters?: Document[];
|
|
256
|
+
hint?: Document | string;
|
|
257
|
+
};
|
|
258
|
+
updateMany?: {
|
|
259
|
+
filter: Document;
|
|
260
|
+
update: Document;
|
|
261
|
+
upsert?: boolean;
|
|
262
|
+
arrayFilters?: Document[];
|
|
263
|
+
hint?: Document | string;
|
|
264
|
+
};
|
|
265
|
+
replaceOne?: {
|
|
266
|
+
filter: Document;
|
|
267
|
+
replacement: TSchema;
|
|
268
|
+
upsert?: boolean;
|
|
269
|
+
hint?: Document | string;
|
|
270
|
+
};
|
|
271
|
+
deleteOne?: {
|
|
272
|
+
filter: Document;
|
|
273
|
+
hint?: Document | string;
|
|
274
|
+
};
|
|
275
|
+
deleteMany?: {
|
|
276
|
+
filter: Document;
|
|
277
|
+
hint?: Document | string;
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
export interface IBulkWriteResult {
|
|
281
|
+
acknowledged: boolean;
|
|
282
|
+
insertedCount: number;
|
|
283
|
+
matchedCount: number;
|
|
284
|
+
modifiedCount: number;
|
|
285
|
+
deletedCount: number;
|
|
286
|
+
upsertedCount: number;
|
|
287
|
+
insertedIds: Record<number, plugins.bson.ObjectId>;
|
|
288
|
+
upsertedIds: Record<number, plugins.bson.ObjectId>;
|
|
289
|
+
}
|
|
290
|
+
export interface IStoredDocument extends Document {
|
|
291
|
+
_id: plugins.bson.ObjectId;
|
|
292
|
+
}
|
|
293
|
+
export interface IOpLogEntry {
|
|
294
|
+
ts: plugins.bson.Timestamp;
|
|
295
|
+
op: 'i' | 'u' | 'd' | 'c' | 'n';
|
|
296
|
+
ns: string;
|
|
297
|
+
o: Document;
|
|
298
|
+
o2?: Document;
|
|
299
|
+
txnNumber?: number;
|
|
300
|
+
lsid?: {
|
|
301
|
+
id: plugins.bson.Binary;
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
export interface IDatabaseInfo {
|
|
305
|
+
name: string;
|
|
306
|
+
sizeOnDisk: number;
|
|
307
|
+
empty: boolean;
|
|
308
|
+
}
|
|
309
|
+
export interface ICollectionInfo {
|
|
310
|
+
name: string;
|
|
311
|
+
type: 'collection' | 'view';
|
|
312
|
+
options: Document;
|
|
313
|
+
info: {
|
|
314
|
+
readOnly: boolean;
|
|
315
|
+
uuid?: plugins.bson.Binary;
|
|
316
|
+
};
|
|
317
|
+
idIndex?: IIndexInfo;
|
|
318
|
+
}
|
|
319
|
+
export interface IServerStatus {
|
|
320
|
+
host: string;
|
|
321
|
+
version: string;
|
|
322
|
+
process: string;
|
|
323
|
+
pid: number;
|
|
324
|
+
uptime: number;
|
|
325
|
+
uptimeMillis: number;
|
|
326
|
+
uptimeEstimate: number;
|
|
327
|
+
localTime: Date;
|
|
328
|
+
mem: {
|
|
329
|
+
resident: number;
|
|
330
|
+
virtual: number;
|
|
331
|
+
};
|
|
332
|
+
connections: {
|
|
333
|
+
current: number;
|
|
334
|
+
available: number;
|
|
335
|
+
totalCreated: number;
|
|
336
|
+
};
|
|
337
|
+
ok: 1;
|
|
338
|
+
}
|
|
339
|
+
export interface ICollectionStats {
|
|
340
|
+
ns: string;
|
|
341
|
+
count: number;
|
|
342
|
+
size: number;
|
|
343
|
+
avgObjSize: number;
|
|
344
|
+
storageSize: number;
|
|
345
|
+
totalIndexSize: number;
|
|
346
|
+
indexSizes: Record<string, number>;
|
|
347
|
+
nindexes: number;
|
|
348
|
+
ok: 1;
|
|
349
|
+
}
|
|
350
|
+
export interface ICountDocumentsOptions {
|
|
351
|
+
skip?: number;
|
|
352
|
+
limit?: number;
|
|
353
|
+
session?: IClientSession;
|
|
354
|
+
hint?: string | Document;
|
|
355
|
+
maxTimeMS?: number;
|
|
356
|
+
}
|
|
357
|
+
export interface IEstimatedDocumentCountOptions {
|
|
358
|
+
maxTimeMS?: number;
|
|
359
|
+
}
|
|
360
|
+
export interface IDistinctOptions {
|
|
361
|
+
session?: IClientSession;
|
|
362
|
+
maxTimeMS?: number;
|
|
363
|
+
}
|
package/dist_ts/index.d.ts
CHANGED
package/dist_ts/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { commitinfo } from './00_commitinfo_data.js';
|
|
2
2
|
import * as plugins from './smartmongo.plugins.js';
|
|
3
|
+
// Export CongoDB module
|
|
4
|
+
export * as congodb from './congodb/index.js';
|
|
3
5
|
export class SmartMongo {
|
|
4
6
|
// STATIC
|
|
5
7
|
static async createAndStart(replCountArg = 1) {
|
|
@@ -7,11 +9,11 @@ export class SmartMongo {
|
|
|
7
9
|
await smartMongoInstance.start(replCountArg);
|
|
8
10
|
return smartMongoInstance;
|
|
9
11
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
12
|
+
// INSTANCE
|
|
13
|
+
_readyDeferred = plugins.smartpromise.defer();
|
|
14
|
+
readyPromise = this._readyDeferred.promise;
|
|
15
|
+
mongoReplicaSet;
|
|
16
|
+
constructor() { }
|
|
15
17
|
async start(countArg = 1) {
|
|
16
18
|
this.mongoReplicaSet = await plugins.mongoPlugin.MongoMemoryReplSet.create({
|
|
17
19
|
replSet: { count: countArg },
|
|
@@ -56,4 +58,4 @@ export class SmartMongo {
|
|
|
56
58
|
await this.stop();
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCx3QkFBd0I7QUFDeEIsT0FBTyxLQUFLLE9BQU8sTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTO0lBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBdUIsQ0FBQztRQUN6RCxNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDNUMsTUFBTSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztJQUNILGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9DLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUMzQyxlQUFlLENBQXlDO0lBRS9ELGdCQUFlLENBQUM7SUFFVCxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQW1CLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQ3pFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDNUIsWUFBWSxFQUFFO2dCQUNaO29CQUNFLGFBQWEsRUFBRSxZQUFZO2lCQUM1QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixRQUFRLG9CQUFvQixDQUFDLENBQUM7UUFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3hCLE9BQU87WUFDTCxXQUFXLEVBQUUseUJBQXlCO1lBQ3RDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRTtTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQixDQUMzQixNQUFjLEVBQ2QsZUFBc0MsRUFDdEMsV0FBVyxHQUFHLElBQUk7UUFFbEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQywrQkFBK0IsQ0FDN0UsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FDaEMsQ0FBQztRQUNGLE1BQU0sZUFBZSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEYsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0YifQ==
|
package/npmextra.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"@git.zone/cli": {
|
|
3
3
|
"projectType": "npm",
|
|
4
4
|
"module": {
|
|
5
5
|
"githost": "code.foss.global",
|
|
@@ -18,13 +18,23 @@
|
|
|
18
18
|
"database management",
|
|
19
19
|
"typescript"
|
|
20
20
|
]
|
|
21
|
-
}
|
|
21
|
+
},
|
|
22
|
+
"release": {
|
|
23
|
+
"registries": [
|
|
24
|
+
"https://verdaccio.lossless.digital",
|
|
25
|
+
"https://registry.npmjs.org"
|
|
26
|
+
],
|
|
27
|
+
"accessLevel": "public"
|
|
28
|
+
},
|
|
29
|
+
"services": [
|
|
30
|
+
"mongodb",
|
|
31
|
+
"minio"
|
|
32
|
+
]
|
|
22
33
|
},
|
|
23
|
-
"
|
|
24
|
-
"npmGlobalTools": [],
|
|
25
|
-
"npmAccessLevel": "public"
|
|
26
|
-
},
|
|
27
|
-
"tsdoc": {
|
|
34
|
+
"@git.zone/tsdoc": {
|
|
28
35
|
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
36
|
+
},
|
|
37
|
+
"@ship.zone/szci": {
|
|
38
|
+
"npmGlobalTools": []
|
|
29
39
|
}
|
|
30
40
|
}
|