mongolite-ts 0.6.0 → 0.7.2
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/README.md +46 -610
- package/dist/collection.d.ts +91 -4
- package/dist/collection.js +796 -6
- package/dist/collection.js.map +1 -1
- package/dist/cursors/findCursor.d.ts +17 -2
- package/dist/cursors/findCursor.js +139 -3
- package/dist/cursors/findCursor.js.map +1 -1
- package/dist/db.js +26 -0
- package/dist/db.js.map +1 -1
- package/dist/types.d.ts +109 -0
- package/package.json +8 -6
- package/dist/database-manager.d.ts +0 -1
- package/dist/database-manager.js +0 -2
- package/dist/database-manager.js.map +0 -1
- package/dist/document-utils.d.ts +0 -34
- package/dist/document-utils.js +0 -101
- package/dist/document-utils.js.map +0 -1
- package/dist/find-cursor.d.ts +0 -51
- package/dist/find-cursor.js +0 -204
- package/dist/find-cursor.js.map +0 -1
- package/dist/plugins/mongodbSync.d.ts +0 -128
- package/dist/plugins/mongodbSync.js +0 -339
- package/dist/plugins/mongodbSync.js.map +0 -1
- package/dist/query-builder.d.ts +0 -18
- package/dist/query-builder.js +0 -358
- package/dist/query-builder.js.map +0 -1
- package/dist/update-operations.d.ts +0 -17
- package/dist/update-operations.js +0 -147
- package/dist/update-operations.js.map +0 -1
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
import { DocumentWithId, Filter, UpdateFilter, InsertOneResult, UpdateResult, DeleteResult } from '../types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Interface for MongoDB operations that can be performed
|
|
5
|
-
*/
|
|
6
|
-
interface MongoDBOperation<T extends DocumentWithId = DocumentWithId> {
|
|
7
|
-
type: 'insert' | 'update' | 'delete' | 'find';
|
|
8
|
-
collection: string;
|
|
9
|
-
data?: Partial<T> | Partial<T>[];
|
|
10
|
-
filter?: Filter<T>;
|
|
11
|
-
update?: UpdateFilter<T>;
|
|
12
|
-
options?: Record<string, unknown>;
|
|
13
|
-
timestamp: Date;
|
|
14
|
-
localId?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Configuration options for the MongoDB sync plugin
|
|
18
|
-
*/
|
|
19
|
-
export interface MongoDBSyncOptions {
|
|
20
|
-
/** MongoDB connection string */
|
|
21
|
-
connectionString: string;
|
|
22
|
-
/** Database name to sync to (if different from local) */
|
|
23
|
-
databaseName?: string;
|
|
24
|
-
/** Whether to enable dirty reads from MongoDB */
|
|
25
|
-
enableDirtyReads?: boolean;
|
|
26
|
-
/** Retry configuration for failed operations */
|
|
27
|
-
retryConfig?: {
|
|
28
|
-
maxRetries?: number;
|
|
29
|
-
initialDelayMs?: number;
|
|
30
|
-
maxDelayMs?: number;
|
|
31
|
-
};
|
|
32
|
-
/** Whether to enable verbose logging */
|
|
33
|
-
verbose?: boolean;
|
|
34
|
-
/** Batch size for operations */
|
|
35
|
-
batchSize?: number;
|
|
36
|
-
/** Queue timeout for batching operations */
|
|
37
|
-
queueTimeoutMs?: number;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Result of a sync operation
|
|
41
|
-
*/
|
|
42
|
-
export interface SyncResult {
|
|
43
|
-
success: boolean;
|
|
44
|
-
operation: MongoDBOperation;
|
|
45
|
-
error?: Error;
|
|
46
|
-
mongodbResult?: unknown;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* MongoDB Cloud Sync Plugin
|
|
50
|
-
*
|
|
51
|
-
* This plugin provides optional synchronization between MongoLite and MongoDB Cloud.
|
|
52
|
-
* It hooks into MongoLite operations and replicates them to a MongoDB instance.
|
|
53
|
-
*/
|
|
54
|
-
export declare class MongoDBSyncPlugin extends EventEmitter {
|
|
55
|
-
private options;
|
|
56
|
-
private operationQueue;
|
|
57
|
-
private isProcessing;
|
|
58
|
-
private queueTimer;
|
|
59
|
-
private mongoClient;
|
|
60
|
-
private mongoDb;
|
|
61
|
-
private isConnected;
|
|
62
|
-
constructor(options: MongoDBSyncOptions);
|
|
63
|
-
/**
|
|
64
|
-
* Initialize connection to MongoDB Cloud
|
|
65
|
-
*/
|
|
66
|
-
initialize(): Promise<void>;
|
|
67
|
-
/**
|
|
68
|
-
* Disconnect from MongoDB
|
|
69
|
-
*/
|
|
70
|
-
disconnect(): Promise<void>;
|
|
71
|
-
/**
|
|
72
|
-
* Check if the plugin is connected to MongoDB
|
|
73
|
-
*/
|
|
74
|
-
get connected(): boolean;
|
|
75
|
-
/**
|
|
76
|
-
* Hook for insert operations
|
|
77
|
-
*/
|
|
78
|
-
onInsert<T extends DocumentWithId>(collection: string, document: Partial<T>, result: InsertOneResult): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Hook for update operations
|
|
81
|
-
*/
|
|
82
|
-
onUpdate<T extends DocumentWithId>(collection: string, filter: Filter<T>, update: UpdateFilter<T>, _result: UpdateResult): Promise<void>;
|
|
83
|
-
/**
|
|
84
|
-
* Hook for delete operations
|
|
85
|
-
*/
|
|
86
|
-
onDelete<T extends DocumentWithId>(collection: string, filter: Filter<T>, _result: DeleteResult): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Perform a dirty read from MongoDB (optional functionality)
|
|
89
|
-
*/
|
|
90
|
-
getDirtyRead<T>(collection: string, filter?: Record<string, unknown>): Promise<T[]>;
|
|
91
|
-
/**
|
|
92
|
-
* Queue an operation for batch processing
|
|
93
|
-
*/
|
|
94
|
-
private queueOperation;
|
|
95
|
-
/**
|
|
96
|
-
* Process the operation queue
|
|
97
|
-
*/
|
|
98
|
-
private processQueue;
|
|
99
|
-
/**
|
|
100
|
-
* Process a batch of operations
|
|
101
|
-
*/
|
|
102
|
-
private processBatch;
|
|
103
|
-
/**
|
|
104
|
-
* Execute a single operation on MongoDB
|
|
105
|
-
*/
|
|
106
|
-
private executeOperation;
|
|
107
|
-
/**
|
|
108
|
-
* Get queue status
|
|
109
|
-
*/
|
|
110
|
-
getQueueStatus(): {
|
|
111
|
-
queueLength: number;
|
|
112
|
-
isProcessing: boolean;
|
|
113
|
-
isConnected: boolean;
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Flush the queue (process immediately)
|
|
117
|
-
*/
|
|
118
|
-
flush(): Promise<void>;
|
|
119
|
-
/**
|
|
120
|
-
* Log messages if verbose mode is enabled
|
|
121
|
-
*/
|
|
122
|
-
private log;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Factory function to create and initialize a MongoDB sync plugin
|
|
126
|
-
*/
|
|
127
|
-
export declare function createMongoDBSyncPlugin(options: MongoDBSyncOptions): Promise<MongoDBSyncPlugin>;
|
|
128
|
-
export {};
|
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
/**
|
|
3
|
-
* MongoDB Cloud Sync Plugin
|
|
4
|
-
*
|
|
5
|
-
* This plugin provides optional synchronization between MongoLite and MongoDB Cloud.
|
|
6
|
-
* It hooks into MongoLite operations and replicates them to a MongoDB instance.
|
|
7
|
-
*/
|
|
8
|
-
export class MongoDBSyncPlugin extends EventEmitter {
|
|
9
|
-
constructor(options) {
|
|
10
|
-
super();
|
|
11
|
-
this.operationQueue = [];
|
|
12
|
-
this.isProcessing = false;
|
|
13
|
-
this.queueTimer = null;
|
|
14
|
-
this.mongoClient = null;
|
|
15
|
-
this.mongoDb = null;
|
|
16
|
-
this.isConnected = false;
|
|
17
|
-
this.options = {
|
|
18
|
-
connectionString: options.connectionString,
|
|
19
|
-
databaseName: options.databaseName || 'mongolite_sync',
|
|
20
|
-
enableDirtyReads: options.enableDirtyReads || false,
|
|
21
|
-
retryConfig: {
|
|
22
|
-
maxRetries: 3,
|
|
23
|
-
initialDelayMs: 1000,
|
|
24
|
-
maxDelayMs: 10000,
|
|
25
|
-
...options.retryConfig,
|
|
26
|
-
},
|
|
27
|
-
verbose: options.verbose || false,
|
|
28
|
-
batchSize: options.batchSize || 100,
|
|
29
|
-
queueTimeoutMs: options.queueTimeoutMs || 1000,
|
|
30
|
-
};
|
|
31
|
-
this.log('MongoDB Sync Plugin initialized');
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Initialize connection to MongoDB Cloud
|
|
35
|
-
*/
|
|
36
|
-
async initialize() {
|
|
37
|
-
try {
|
|
38
|
-
// Dynamically import MongoDB driver to avoid making it a required dependency
|
|
39
|
-
let mongodb;
|
|
40
|
-
try {
|
|
41
|
-
// Use eval to avoid TypeScript module resolution at compile time
|
|
42
|
-
mongodb = await eval('import("mongodb")');
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
throw new Error('MongoDB driver not found. Install it with: npm install mongodb');
|
|
46
|
-
}
|
|
47
|
-
const mongoModule = mongodb;
|
|
48
|
-
const MongoClient = mongoModule.MongoClient;
|
|
49
|
-
this.mongoClient = new MongoClient(this.options.connectionString);
|
|
50
|
-
await this.mongoClient.connect();
|
|
51
|
-
this.mongoDb = this.mongoClient.db(this.options.databaseName);
|
|
52
|
-
this.isConnected = true;
|
|
53
|
-
this.log('Connected to MongoDB Cloud');
|
|
54
|
-
this.emit('connected');
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
this.log('Failed to connect to MongoDB:', error);
|
|
58
|
-
this.emit('error', {
|
|
59
|
-
type: 'connection_error',
|
|
60
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
61
|
-
});
|
|
62
|
-
throw error;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Disconnect from MongoDB
|
|
67
|
-
*/
|
|
68
|
-
async disconnect() {
|
|
69
|
-
if (this.queueTimer) {
|
|
70
|
-
clearTimeout(this.queueTimer);
|
|
71
|
-
this.queueTimer = null;
|
|
72
|
-
}
|
|
73
|
-
// Process any remaining operations
|
|
74
|
-
if (this.operationQueue.length > 0) {
|
|
75
|
-
await this.processQueue();
|
|
76
|
-
}
|
|
77
|
-
if (this.mongoClient) {
|
|
78
|
-
await this.mongoClient.close();
|
|
79
|
-
this.mongoClient = null;
|
|
80
|
-
this.mongoDb = null;
|
|
81
|
-
this.isConnected = false;
|
|
82
|
-
this.log('Disconnected from MongoDB Cloud');
|
|
83
|
-
this.emit('disconnected');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Check if the plugin is connected to MongoDB
|
|
88
|
-
*/
|
|
89
|
-
get connected() {
|
|
90
|
-
return this.isConnected;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Hook for insert operations
|
|
94
|
-
*/
|
|
95
|
-
async onInsert(collection, document, result) {
|
|
96
|
-
const operation = {
|
|
97
|
-
type: 'insert',
|
|
98
|
-
collection,
|
|
99
|
-
data: { ...document, _id: result.insertedId },
|
|
100
|
-
timestamp: new Date(),
|
|
101
|
-
localId: result.insertedId,
|
|
102
|
-
};
|
|
103
|
-
await this.queueOperation(operation);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Hook for update operations
|
|
107
|
-
*/
|
|
108
|
-
async onUpdate(collection, filter, update, _result) {
|
|
109
|
-
const operation = {
|
|
110
|
-
type: 'update',
|
|
111
|
-
collection,
|
|
112
|
-
filter,
|
|
113
|
-
update,
|
|
114
|
-
timestamp: new Date(),
|
|
115
|
-
};
|
|
116
|
-
await this.queueOperation(operation);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Hook for delete operations
|
|
120
|
-
*/
|
|
121
|
-
async onDelete(collection, filter, _result) {
|
|
122
|
-
const operation = {
|
|
123
|
-
type: 'delete',
|
|
124
|
-
collection,
|
|
125
|
-
filter,
|
|
126
|
-
timestamp: new Date(),
|
|
127
|
-
};
|
|
128
|
-
await this.queueOperation(operation);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Perform a dirty read from MongoDB (optional functionality)
|
|
132
|
-
*/
|
|
133
|
-
async getDirtyRead(collection, filter) {
|
|
134
|
-
if (!this.isConnected || !this.mongoDb) {
|
|
135
|
-
throw new Error('MongoDB sync is not initialized or not connected');
|
|
136
|
-
}
|
|
137
|
-
try {
|
|
138
|
-
const mongoCollection = this.mongoDb.collection(collection);
|
|
139
|
-
const results = await mongoCollection.find(filter || {}).toArray();
|
|
140
|
-
// Transform results and type cast with validation
|
|
141
|
-
return results;
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
this.emit('error', {
|
|
145
|
-
type: 'dirty_read_error',
|
|
146
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
147
|
-
details: { collection, filter },
|
|
148
|
-
});
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Queue an operation for batch processing
|
|
154
|
-
*/
|
|
155
|
-
async queueOperation(operation) {
|
|
156
|
-
if (!this.isConnected) {
|
|
157
|
-
this.log('Not connected to MongoDB, skipping operation:', operation.type);
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
this.operationQueue.push(operation);
|
|
161
|
-
this.log(`Queued ${operation.type} operation for collection ${operation.collection}`);
|
|
162
|
-
// Start queue timer if not already running
|
|
163
|
-
if (!this.queueTimer) {
|
|
164
|
-
this.queueTimer = setTimeout(() => {
|
|
165
|
-
this.processQueue().catch((error) => {
|
|
166
|
-
this.log('Error processing queue:', error);
|
|
167
|
-
this.emit('error', error);
|
|
168
|
-
});
|
|
169
|
-
}, this.options.queueTimeoutMs);
|
|
170
|
-
}
|
|
171
|
-
// Process immediately if queue is full
|
|
172
|
-
if (this.operationQueue.length >= this.options.batchSize) {
|
|
173
|
-
if (this.queueTimer) {
|
|
174
|
-
clearTimeout(this.queueTimer);
|
|
175
|
-
this.queueTimer = null;
|
|
176
|
-
}
|
|
177
|
-
await this.processQueue();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Process the operation queue
|
|
182
|
-
*/
|
|
183
|
-
async processQueue() {
|
|
184
|
-
if (this.isProcessing || this.operationQueue.length === 0) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
this.isProcessing = true;
|
|
188
|
-
this.queueTimer = null;
|
|
189
|
-
const operations = [...this.operationQueue];
|
|
190
|
-
this.operationQueue = [];
|
|
191
|
-
this.log(`Processing ${operations.length} queued operations`);
|
|
192
|
-
try {
|
|
193
|
-
const results = await this.processBatch(operations);
|
|
194
|
-
// Emit results
|
|
195
|
-
for (const result of results) {
|
|
196
|
-
if (result.success) {
|
|
197
|
-
this.emit('synced', result);
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
this.emit('syncError', result);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
this.log(`Successfully processed ${results.filter((r) => r.success).length}/${results.length} operations`);
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
this.log('Error processing operation batch:', error);
|
|
207
|
-
this.emit('error', error);
|
|
208
|
-
// Re-queue failed operations for retry
|
|
209
|
-
this.operationQueue.unshift(...operations);
|
|
210
|
-
}
|
|
211
|
-
finally {
|
|
212
|
-
this.isProcessing = false;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Process a batch of operations
|
|
217
|
-
*/
|
|
218
|
-
async processBatch(operations) {
|
|
219
|
-
if (!this.isConnected || !this.mongoDb) {
|
|
220
|
-
throw new Error('MongoDB is not connected');
|
|
221
|
-
}
|
|
222
|
-
const results = [];
|
|
223
|
-
// Group operations by collection for efficiency
|
|
224
|
-
const operationsByCollection = new Map();
|
|
225
|
-
for (const operation of operations) {
|
|
226
|
-
if (!operationsByCollection.has(operation.collection)) {
|
|
227
|
-
operationsByCollection.set(operation.collection, []);
|
|
228
|
-
}
|
|
229
|
-
operationsByCollection.get(operation.collection).push(operation);
|
|
230
|
-
}
|
|
231
|
-
// Process each collection's operations
|
|
232
|
-
for (const [collectionName, collectionOps] of operationsByCollection) {
|
|
233
|
-
const mongoCollection = this.mongoDb.collection(collectionName);
|
|
234
|
-
for (const operation of collectionOps) {
|
|
235
|
-
const result = await this.executeOperation(mongoCollection, operation);
|
|
236
|
-
results.push(result);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return results;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Execute a single operation on MongoDB
|
|
243
|
-
*/
|
|
244
|
-
async executeOperation(mongoCollection, operation) {
|
|
245
|
-
const { retryConfig } = this.options;
|
|
246
|
-
const maxRetries = retryConfig?.maxRetries ?? 3;
|
|
247
|
-
const initialDelayMs = retryConfig?.initialDelayMs ?? 1000;
|
|
248
|
-
const maxDelayMs = retryConfig?.maxDelayMs ?? 10000;
|
|
249
|
-
let lastError = null;
|
|
250
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
251
|
-
try {
|
|
252
|
-
let mongodbResult;
|
|
253
|
-
switch (operation.type) {
|
|
254
|
-
case 'insert':
|
|
255
|
-
if (!operation.data) {
|
|
256
|
-
throw new Error('Insert operation requires data');
|
|
257
|
-
}
|
|
258
|
-
if (Array.isArray(operation.data)) {
|
|
259
|
-
mongodbResult = await mongoCollection.insertMany(operation.data);
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
mongodbResult = await mongoCollection.insertOne(operation.data);
|
|
263
|
-
}
|
|
264
|
-
break;
|
|
265
|
-
case 'update':
|
|
266
|
-
if (!operation.filter || !operation.update) {
|
|
267
|
-
throw new Error('Update operation requires filter and update data');
|
|
268
|
-
}
|
|
269
|
-
mongodbResult = await mongoCollection.updateMany(operation.filter, operation.update);
|
|
270
|
-
break;
|
|
271
|
-
case 'delete':
|
|
272
|
-
if (!operation.filter) {
|
|
273
|
-
throw new Error('Delete operation requires filter');
|
|
274
|
-
}
|
|
275
|
-
mongodbResult = await mongoCollection.deleteMany(operation.filter);
|
|
276
|
-
break;
|
|
277
|
-
default:
|
|
278
|
-
throw new Error(`Unsupported operation type: ${operation.type}`);
|
|
279
|
-
}
|
|
280
|
-
this.log(`Successfully executed ${operation.type} on MongoDB collection ${operation.collection}`);
|
|
281
|
-
return {
|
|
282
|
-
success: true,
|
|
283
|
-
operation,
|
|
284
|
-
mongodbResult,
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
catch (error) {
|
|
288
|
-
lastError = error;
|
|
289
|
-
this.log(`Attempt ${attempt + 1} failed for ${operation.type} operation:`, error);
|
|
290
|
-
if (attempt < maxRetries) {
|
|
291
|
-
const delay = Math.min(initialDelayMs * Math.pow(2, attempt), maxDelayMs);
|
|
292
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
return {
|
|
297
|
-
success: false,
|
|
298
|
-
operation,
|
|
299
|
-
error: lastError || new Error('Unknown error'),
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Get queue status
|
|
304
|
-
*/
|
|
305
|
-
getQueueStatus() {
|
|
306
|
-
return {
|
|
307
|
-
queueLength: this.operationQueue.length,
|
|
308
|
-
isProcessing: this.isProcessing,
|
|
309
|
-
isConnected: this.isConnected,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Flush the queue (process immediately)
|
|
314
|
-
*/
|
|
315
|
-
async flush() {
|
|
316
|
-
if (this.queueTimer) {
|
|
317
|
-
clearTimeout(this.queueTimer);
|
|
318
|
-
this.queueTimer = null;
|
|
319
|
-
}
|
|
320
|
-
await this.processQueue();
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Log messages if verbose mode is enabled
|
|
324
|
-
*/
|
|
325
|
-
log(...args) {
|
|
326
|
-
if (this.options.verbose) {
|
|
327
|
-
console.log('[MongoDBSync]', ...args);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Factory function to create and initialize a MongoDB sync plugin
|
|
333
|
-
*/
|
|
334
|
-
export async function createMongoDBSyncPlugin(options) {
|
|
335
|
-
const plugin = new MongoDBSyncPlugin(options);
|
|
336
|
-
await plugin.initialize();
|
|
337
|
-
return plugin;
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=mongodbSync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mongodbSync.js","sourceRoot":"","sources":["../../src/plugins/mongodbSync.ts"],"names":[],"mappings":"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"}
|
package/dist/query-builder.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Filter, DocumentWithId } from './types.js';
|
|
2
|
-
export declare class QueryBuilder<T extends DocumentWithId> {
|
|
3
|
-
private readonly options;
|
|
4
|
-
constructor(options?: {
|
|
5
|
-
verbose?: boolean;
|
|
6
|
-
});
|
|
7
|
-
/**
|
|
8
|
-
* Converts a field path to a JSON path for SQLite's json_extract function.
|
|
9
|
-
*/
|
|
10
|
-
parseJsonPath(path: string): string;
|
|
11
|
-
/**
|
|
12
|
-
* Builds a WHERE clause for a filter object.
|
|
13
|
-
* @param filter The filter object.
|
|
14
|
-
* @param params An array to collect query parameters.
|
|
15
|
-
* @returns A SQL WHERE clause.
|
|
16
|
-
*/
|
|
17
|
-
buildWhereClause(filter: Filter<T>, params: unknown[]): string;
|
|
18
|
-
}
|