@mongosh/service-provider-node-driver 2.3.3

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.
@@ -0,0 +1,622 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.NodeDriverServiceProvider = void 0;
27
+ const service_provider_core_1 = require("@mongosh/service-provider-core");
28
+ const errors_1 = require("@mongosh/errors");
29
+ const mongodb_patches_1 = require("./mongodb-patches");
30
+ const mongodb_connection_string_url_1 = require("mongodb-connection-string-url");
31
+ const events_1 = require("events");
32
+ const util_1 = require("util");
33
+ const driver = __importStar(require("mongodb"));
34
+ const mongodb_1 = require("mongodb");
35
+ const devtools_connect_1 = require("@mongodb-js/devtools-connect");
36
+ const bsonlib = () => {
37
+ const { Binary, Code, DBRef, Double, Int32, Long, MinKey, MaxKey, ObjectId, Timestamp, Decimal128, BSONSymbol, BSONRegExp, BSON, } = driver;
38
+ return {
39
+ Binary,
40
+ Code,
41
+ DBRef,
42
+ Double,
43
+ Int32,
44
+ Long,
45
+ MinKey,
46
+ MaxKey,
47
+ ObjectId,
48
+ Timestamp,
49
+ Decimal128,
50
+ BSONSymbol,
51
+ calculateObjectSize: BSON.calculateObjectSize,
52
+ EJSON: BSON.EJSON,
53
+ BSONRegExp,
54
+ };
55
+ };
56
+ const DEFAULT_DRIVER_OPTIONS = Object.freeze({});
57
+ const DEFAULT_BASE_OPTIONS = Object.freeze({
58
+ serializeFunctions: true,
59
+ promoteLongs: false,
60
+ });
61
+ function normalizeEndpointAndAuthConfiguration(uri, opts) {
62
+ var _a, _b, _c, _d, _e, _f;
63
+ const search = uri.typedSearchParams();
64
+ const authMechProps = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(search.get('authMechanismProperties'));
65
+ return [
66
+ uri.protocol,
67
+ uri.hosts,
68
+ (_b = (_a = opts.auth) === null || _a === void 0 ? void 0 : _a.username) !== null && _b !== void 0 ? _b : uri.username,
69
+ (_d = (_c = opts.auth) === null || _c === void 0 ? void 0 : _c.password) !== null && _d !== void 0 ? _d : uri.password,
70
+ (_e = opts.authMechanism) !== null && _e !== void 0 ? _e : search.get('authMechanism'),
71
+ (_f = opts.authSource) !== null && _f !== void 0 ? _f : search.get('authSource'),
72
+ { ...Object.fromEntries(authMechProps), ...opts.authMechanismProperties },
73
+ ];
74
+ }
75
+ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderCore {
76
+ static async connect(uri, driverOptions, cliOptions = {}, bus = new events_1.EventEmitter()) {
77
+ var _a, _b;
78
+ const connectionString = new mongodb_connection_string_url_1.ConnectionString(uri || 'mongodb://nodb/');
79
+ const clientOptions = this.processDriverOptions(null, connectionString, driverOptions);
80
+ if (process.env.MONGOSH_TEST_FORCE_API_STRICT) {
81
+ clientOptions.serverApi = {
82
+ version: typeof clientOptions.serverApi === 'string'
83
+ ? clientOptions.serverApi
84
+ : (_b = (_a = clientOptions.serverApi) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : '1',
85
+ strict: true,
86
+ deprecationErrors: true,
87
+ };
88
+ }
89
+ let client;
90
+ let state;
91
+ let lastSeenTopology;
92
+ class MongoshMongoClient extends mongodb_1.MongoClient {
93
+ constructor(url, options) {
94
+ super(url, options);
95
+ this.on('topologyDescriptionChanged', (evt) => {
96
+ lastSeenTopology = evt.newDescription;
97
+ });
98
+ }
99
+ }
100
+ if (cliOptions.nodb) {
101
+ const clientOptionsCopy = {
102
+ ...clientOptions,
103
+ };
104
+ delete clientOptionsCopy.productName;
105
+ delete clientOptionsCopy.productDocsLink;
106
+ delete clientOptionsCopy.oidc;
107
+ delete clientOptionsCopy.parentHandle;
108
+ delete clientOptionsCopy.parentState;
109
+ delete clientOptionsCopy.proxy;
110
+ delete clientOptionsCopy.applyProxyToOIDC;
111
+ client = new MongoshMongoClient(connectionString.toString(), clientOptionsCopy);
112
+ }
113
+ else {
114
+ ({ client, state } = await (0, devtools_connect_1.connectMongoClient)(connectionString.toString(), clientOptions, bus, MongoshMongoClient));
115
+ }
116
+ clientOptions.parentState = state;
117
+ return new this(client, bus, clientOptions, connectionString, lastSeenTopology);
118
+ }
119
+ constructor(mongoClient, bus, clientOptions, uri, lastSeenTopology) {
120
+ super(bsonlib());
121
+ this.bus = bus;
122
+ this.mongoClient = mongoClient;
123
+ this.uri = uri;
124
+ this._lastSeenTopology = lastSeenTopology;
125
+ this.platform = 'CLI';
126
+ try {
127
+ this.initialDb = mongoClient.s.options.dbName || service_provider_core_1.DEFAULT_DB;
128
+ }
129
+ catch (err) {
130
+ this.initialDb = service_provider_core_1.DEFAULT_DB;
131
+ }
132
+ this.currentClientOptions = clientOptions;
133
+ this.baseCmdOptions = { ...DEFAULT_BASE_OPTIONS };
134
+ this.dbcache = new WeakMap();
135
+ }
136
+ static getVersionInformation() {
137
+ function tryCall(fn) {
138
+ try {
139
+ return fn();
140
+ }
141
+ catch (_a) {
142
+ return;
143
+ }
144
+ }
145
+ return {
146
+ nodeDriverVersion: tryCall(() => require('mongodb/package.json').version),
147
+ libmongocryptVersion: tryCall(() => mongodb_1.ClientEncryption.libmongocryptVersion),
148
+ libmongocryptNodeBindingsVersion: tryCall(() => require('mongodb-client-encryption/package.json').version),
149
+ kerberosVersion: tryCall(() => require('kerberos/package.json').version),
150
+ };
151
+ }
152
+ maybeThrowBetterMissingOptionalDependencyError(err) {
153
+ if (err.message.includes('kerberos')) {
154
+ try {
155
+ require('kerberos');
156
+ }
157
+ catch (cause) {
158
+ if (typeof cause === 'object' &&
159
+ cause &&
160
+ 'message' in cause &&
161
+ typeof cause.message === 'string') {
162
+ throw new Error(`Could not load kerberos package: ${cause.message}`, {
163
+ cause,
164
+ });
165
+ }
166
+ }
167
+ }
168
+ if (err.message.includes('mongodb-client-encryption')) {
169
+ try {
170
+ require('mongodb-client-encryption');
171
+ }
172
+ catch (cause) {
173
+ if (typeof cause === 'object' &&
174
+ cause &&
175
+ 'message' in cause &&
176
+ typeof cause.message === 'string') {
177
+ const extra = 'boxednode' in process
178
+ ? ''
179
+ : '\n(If you are installing mongosh through homebrew or npm, consider downlading mongosh from https://www.mongodb.com/try/download/shell instead)';
180
+ throw new Error(`Could not load mongodb-client-encryption package: ${cause.message}${extra}`, { cause });
181
+ }
182
+ }
183
+ }
184
+ throw err;
185
+ }
186
+ async connectMongoClient(connectionString, clientOptions) {
187
+ try {
188
+ return await (0, devtools_connect_1.connectMongoClient)(connectionString.toString(), clientOptions, this.bus, mongodb_1.MongoClient);
189
+ }
190
+ catch (err) {
191
+ if (typeof err === 'object' &&
192
+ err &&
193
+ 'name' in err &&
194
+ err.name === 'MongoMissingDependencyError') {
195
+ this.maybeThrowBetterMissingOptionalDependencyError(err);
196
+ }
197
+ throw err;
198
+ }
199
+ }
200
+ async getNewConnection(uri, options = {}) {
201
+ const connectionString = new mongodb_connection_string_url_1.ConnectionString(uri);
202
+ const clientOptions = this.processDriverOptions(connectionString, options);
203
+ const { client, state } = await this.connectMongoClient(connectionString.toString(), clientOptions);
204
+ clientOptions.parentState = state;
205
+ return new NodeDriverServiceProvider(client, this.bus, clientOptions, connectionString, this._lastSeenTopology);
206
+ }
207
+ _getHostnameForConnection(topology) {
208
+ var _a;
209
+ return (_a = topology === null || topology === void 0 ? void 0 : topology.servers) === null || _a === void 0 ? void 0 : _a.values().next().value.hostAddress.host;
210
+ }
211
+ async getConnectionInfo() {
212
+ var _a;
213
+ const [buildInfo = null, atlasVersion = null, fcv = null, atlascliInfo] = await Promise.all([
214
+ this.runCommandWithCheck('admin', { buildInfo: 1 }, this.baseCmdOptions).catch(() => { }),
215
+ this.runCommandWithCheck('admin', { atlasVersion: 1 }, this.baseCmdOptions).catch(() => { }),
216
+ this.runCommandWithCheck('admin', { getParameter: 1, featureCompatibilityVersion: 1 }, this.baseCmdOptions).catch(() => { }),
217
+ this.countDocuments('admin', 'atlascli', {
218
+ managedClusterType: 'atlasCliLocalDevCluster',
219
+ }).catch(() => 0),
220
+ ]);
221
+ const resolvedHostname = this._getHostnameForConnection(this._lastSeenTopology);
222
+ const extraConnectionInfo = (0, service_provider_core_1.getConnectExtraInfo)({
223
+ connectionString: this.uri,
224
+ buildInfo,
225
+ atlasVersion,
226
+ resolvedHostname,
227
+ isLocalAtlas: !!atlascliInfo,
228
+ });
229
+ return {
230
+ buildInfo,
231
+ resolvedHostname,
232
+ extraInfo: {
233
+ ...extraConnectionInfo,
234
+ fcv: (_a = fcv === null || fcv === void 0 ? void 0 : fcv.featureCompatibilityVersion) === null || _a === void 0 ? void 0 : _a.version,
235
+ },
236
+ };
237
+ }
238
+ async renameCollection(database, oldName, newName, options = {}, dbOptions) {
239
+ options = { ...this.baseCmdOptions, ...options };
240
+ return await this.db(database, dbOptions).renameCollection(oldName, newName, options);
241
+ }
242
+ db(name, dbOptions = {}) {
243
+ const key = `${name}-${JSON.stringify(dbOptions)}`;
244
+ const dbcache = this.getDBCache();
245
+ const cached = dbcache.get(key);
246
+ if (cached) {
247
+ return cached;
248
+ }
249
+ const db = this.mongoClient.db(name, dbOptions);
250
+ dbcache.set(key, db);
251
+ return db;
252
+ }
253
+ _dbTestWrapper(name, dbOptions) {
254
+ return this.db(name, dbOptions);
255
+ }
256
+ getDBCache() {
257
+ const existing = this.dbcache.get(this.mongoClient);
258
+ if (existing) {
259
+ return existing;
260
+ }
261
+ this.dbcache.set(this.mongoClient, new Map());
262
+ return this.getDBCache();
263
+ }
264
+ aggregate(database, collection, pipeline = [], options = {}, dbOptions) {
265
+ options = { ...this.baseCmdOptions, ...options };
266
+ return this.db(database, dbOptions)
267
+ .collection(collection)
268
+ .aggregate(pipeline, options);
269
+ }
270
+ aggregateDb(database, pipeline = [], options = {}, dbOptions) {
271
+ options = { ...this.baseCmdOptions, ...options };
272
+ const db = this.db(database, dbOptions);
273
+ return db.aggregate(pipeline, options);
274
+ }
275
+ bulkWrite(database, collection, requests, options = {}, dbOptions) {
276
+ options = { ...this.baseCmdOptions, ...options };
277
+ return this.db(database, dbOptions)
278
+ .collection(collection)
279
+ .bulkWrite(requests, options);
280
+ }
281
+ async close(force) {
282
+ this.dbcache.set(this.mongoClient, new Map());
283
+ if (force) {
284
+ await (0, mongodb_patches_1.forceCloseMongoClient)(this.mongoClient);
285
+ }
286
+ else {
287
+ await this.mongoClient.close();
288
+ }
289
+ }
290
+ async suspend() {
291
+ await this.close(true);
292
+ return async () => {
293
+ await this.resetConnectionOptions({});
294
+ };
295
+ }
296
+ count(database, collection, query = {}, options = {}, dbOptions) {
297
+ options = { ...this.baseCmdOptions, ...options };
298
+ return this.db(database, dbOptions)
299
+ .collection(collection)
300
+ .count(query, options);
301
+ }
302
+ countDocuments(database, collection, filter = {}, options = {}, dbOptions) {
303
+ options = { ...this.baseCmdOptions, ...options };
304
+ return this.db(database, dbOptions)
305
+ .collection(collection)
306
+ .countDocuments(filter, options);
307
+ }
308
+ deleteMany(database, collection, filter = {}, options = {}, dbOptions) {
309
+ options = { ...this.baseCmdOptions, ...options };
310
+ return this.db(database, dbOptions)
311
+ .collection(collection)
312
+ .deleteMany(filter, options);
313
+ }
314
+ deleteOne(database, collection, filter = {}, options = {}, dbOptions) {
315
+ options = { ...this.baseCmdOptions, ...options };
316
+ return this.db(database, dbOptions)
317
+ .collection(collection)
318
+ .deleteOne(filter, options);
319
+ }
320
+ distinct(database, collection, fieldName, filter = {}, options = {}, dbOptions) {
321
+ options = { ...this.baseCmdOptions, ...options };
322
+ return this.db(database, dbOptions)
323
+ .collection(collection)
324
+ .distinct(fieldName, filter, options);
325
+ }
326
+ estimatedDocumentCount(database, collection, options = {}, dbOptions) {
327
+ options = { ...this.baseCmdOptions, ...options };
328
+ return this.db(database, dbOptions)
329
+ .collection(collection)
330
+ .estimatedDocumentCount(options);
331
+ }
332
+ find(database, collection, filter = {}, options = {}, dbOptions) {
333
+ const findOptions = { ...this.baseCmdOptions, ...options };
334
+ if ('allowPartialResults' in findOptions) {
335
+ findOptions.partial = findOptions.allowPartialResults;
336
+ }
337
+ if ('noCursorTimeout' in findOptions) {
338
+ findOptions.timeout = findOptions.noCursorTimeout;
339
+ }
340
+ return this.db(database, dbOptions)
341
+ .collection(collection)
342
+ .find(filter, findOptions);
343
+ }
344
+ findOneAndDelete(database, collection, filter = {}, options = {}, dbOptions) {
345
+ options = {
346
+ includeResultMetadata: true,
347
+ ...this.baseCmdOptions,
348
+ ...options,
349
+ };
350
+ return this.db(database, dbOptions)
351
+ .collection(collection)
352
+ .findOneAndDelete(filter, options);
353
+ }
354
+ findOneAndReplace(database, collection, filter = {}, replacement = {}, options = {}, dbOptions) {
355
+ const findOneAndReplaceOptions = {
356
+ includeResultMetadata: true,
357
+ ...this.baseCmdOptions,
358
+ ...options,
359
+ };
360
+ return this.db(database, dbOptions).collection(collection).findOneAndReplace(filter, replacement, findOneAndReplaceOptions);
361
+ }
362
+ findOneAndUpdate(database, collection, filter = {}, update = {}, options = {}, dbOptions) {
363
+ const findOneAndUpdateOptions = {
364
+ includeResultMetadata: true,
365
+ ...this.baseCmdOptions,
366
+ ...options,
367
+ };
368
+ return this.db(database, dbOptions)
369
+ .collection(collection)
370
+ .findOneAndUpdate(filter, update, findOneAndUpdateOptions);
371
+ }
372
+ insertMany(database, collection, docs = [], options = {}, dbOptions) {
373
+ options = { ...this.baseCmdOptions, ...options };
374
+ return this.db(database, dbOptions)
375
+ .collection(collection)
376
+ .insertMany(docs, options);
377
+ }
378
+ async insertOne(database, collection, doc = {}, options = {}, dbOptions) {
379
+ options = { ...this.baseCmdOptions, ...options };
380
+ return this.db(database, dbOptions)
381
+ .collection(collection)
382
+ .insertOne(doc, options);
383
+ }
384
+ replaceOne(database, collection, filter = {}, replacement = {}, options = {}, dbOptions) {
385
+ options = { ...this.baseCmdOptions, ...options };
386
+ return this.db(database, dbOptions)
387
+ .collection(collection)
388
+ .replaceOne(filter, replacement, options);
389
+ }
390
+ runCommand(database, spec = {}, options = {}, dbOptions) {
391
+ options = { ...this.baseCmdOptions, ...options };
392
+ const db = this.db(database, dbOptions);
393
+ return db.command(spec, options);
394
+ }
395
+ async runCommandWithCheck(database, spec = {}, options = {}, dbOptions) {
396
+ const result = await this.runCommand(database, spec, options, dbOptions);
397
+ if (result.ok === 0) {
398
+ throw new errors_1.MongoshCommandFailed(JSON.stringify(spec));
399
+ }
400
+ return result;
401
+ }
402
+ runCursorCommand(database, spec = {}, options = {}, dbOptions) {
403
+ options = { ...this.baseCmdOptions, ...options };
404
+ const db = this.db(database, dbOptions);
405
+ return db.runCursorCommand(spec, options);
406
+ }
407
+ listDatabases(database, options = {}) {
408
+ options = { ...this.baseCmdOptions, ...options };
409
+ return this.db(database).admin().listDatabases(options);
410
+ }
411
+ async updateMany(database, collection, filter = {}, update = {}, options = {}, dbOptions) {
412
+ options = { ...this.baseCmdOptions, ...options };
413
+ return await this.db(database, dbOptions)
414
+ .collection(collection)
415
+ .updateMany(filter, update, options);
416
+ }
417
+ updateOne(database, collection, filter = {}, update = {}, options = {}, dbOptions) {
418
+ options = { ...this.baseCmdOptions, ...options };
419
+ return this.db(database, dbOptions)
420
+ .collection(collection)
421
+ .updateOne(filter, update, options);
422
+ }
423
+ getTopology() {
424
+ return this.mongoClient.topology;
425
+ }
426
+ async dropDatabase(db, options = {}, dbOptions = {}) {
427
+ const opts = { ...this.baseCmdOptions, ...options };
428
+ const nativeResult = await this.db(db, dbOptions).dropDatabase(opts);
429
+ const ok = nativeResult ? 1 : 0;
430
+ return {
431
+ ok,
432
+ ...(ok ? { dropped: db } : {}),
433
+ };
434
+ }
435
+ async createIndexes(database, collection, indexSpecs, options = {}, dbOptions) {
436
+ options = { ...this.baseCmdOptions, ...options };
437
+ return this.db(database, dbOptions)
438
+ .collection(collection)
439
+ .createIndexes(indexSpecs, options);
440
+ }
441
+ async getIndexes(database, collection, options = {}, dbOptions) {
442
+ return await this.db(database, dbOptions)
443
+ .collection(collection)
444
+ .listIndexes({ ...this.baseCmdOptions, ...options })
445
+ .toArray();
446
+ }
447
+ async listCollections(database, filter = {}, options = {}, dbOptions) {
448
+ options = { ...this.baseCmdOptions, ...options };
449
+ return await this.db(database, dbOptions)
450
+ .listCollections(filter, options)
451
+ .toArray();
452
+ }
453
+ async dropCollection(database, collection, options = {}, dbOptions) {
454
+ return this.db(database, dbOptions)
455
+ .collection(collection)
456
+ .drop({ ...this.baseCmdOptions, ...options });
457
+ }
458
+ async authenticate(authDoc) {
459
+ const auth = { username: authDoc.user, password: authDoc.pwd };
460
+ await this.resetConnectionOptions({
461
+ auth,
462
+ ...(authDoc.mechanism
463
+ ? { authMechanism: authDoc.mechanism }
464
+ : {}),
465
+ ...(authDoc.authDb ? { authSource: authDoc.authDb } : {}),
466
+ });
467
+ return { ok: 1 };
468
+ }
469
+ async createCollection(dbName, collName, options = {}, dbOptions) {
470
+ options = { ...this.baseCmdOptions, ...options };
471
+ await this.db(dbName, dbOptions).createCollection(collName, options);
472
+ return { ok: 1 };
473
+ }
474
+ async createEncryptedCollection(dbName, collName, options, libmongocrypt) {
475
+ return await libmongocrypt.createEncryptedCollection(this.db(dbName), collName, options);
476
+ }
477
+ async initializeBulkOp(dbName, collName, ordered, options = {}, dbOptions) {
478
+ if (ordered) {
479
+ return this.db(dbName, dbOptions)
480
+ .collection(collName)
481
+ .initializeOrderedBulkOp(options);
482
+ }
483
+ return this.db(dbName, dbOptions)
484
+ .collection(collName)
485
+ .initializeUnorderedBulkOp(options);
486
+ }
487
+ getReadPreference() {
488
+ return this.mongoClient.readPreference;
489
+ }
490
+ getReadConcern() {
491
+ return this.mongoClient.readConcern;
492
+ }
493
+ getWriteConcern() {
494
+ return this.mongoClient.writeConcern;
495
+ }
496
+ readPreferenceFromOptions(options) {
497
+ return mongodb_1.ReadPreference.fromOptions(options);
498
+ }
499
+ async resetConnectionOptions(options) {
500
+ this.bus.emit('mongosh-sp:reset-connection-options');
501
+ this.currentClientOptions = {
502
+ ...this.currentClientOptions,
503
+ ...options,
504
+ };
505
+ const clientOptions = this.processDriverOptions(this.uri, this.currentClientOptions);
506
+ const { client, state } = await this.connectMongoClient(this.uri.toString(), clientOptions);
507
+ try {
508
+ await this.mongoClient.close();
509
+ }
510
+ catch (_a) { }
511
+ this.mongoClient = client;
512
+ this.currentClientOptions.parentState = state;
513
+ }
514
+ startSession(options) {
515
+ return this.mongoClient.startSession(options);
516
+ }
517
+ watch(pipeline, options, dbOptions = {}, db, coll) {
518
+ if (db === undefined && coll === undefined) {
519
+ return this.mongoClient.watch(pipeline, options);
520
+ }
521
+ else if (db !== undefined && coll === undefined) {
522
+ return this.db(db, dbOptions).watch(pipeline, options);
523
+ }
524
+ else if (db !== undefined && coll !== undefined) {
525
+ return this.db(db, dbOptions).collection(coll).watch(pipeline, options);
526
+ }
527
+ throw new errors_1.MongoshInternalError('Cannot call watch with defined collection but undefined db');
528
+ }
529
+ get driverMetadata() {
530
+ var _a;
531
+ return (_a = this.getTopology()) === null || _a === void 0 ? void 0 : _a.clientMetadata;
532
+ }
533
+ getRawClient() {
534
+ return this.mongoClient;
535
+ }
536
+ getURI() {
537
+ var _a;
538
+ return (_a = this.uri) === null || _a === void 0 ? void 0 : _a.href;
539
+ }
540
+ getFleOptions() {
541
+ return this.currentClientOptions.autoEncryption;
542
+ }
543
+ static processDriverOptions(currentProviderInstance, uri, opts) {
544
+ var _a;
545
+ const processedOptions = { ...DEFAULT_DRIVER_OPTIONS, ...opts };
546
+ if (currentProviderInstance === null || currentProviderInstance === void 0 ? void 0 : currentProviderInstance.currentClientOptions) {
547
+ for (const key of ['productName', 'productDocsLink']) {
548
+ processedOptions[key] =
549
+ currentProviderInstance.currentClientOptions[key];
550
+ }
551
+ (_a = processedOptions.oidc) !== null && _a !== void 0 ? _a : (processedOptions.oidc = {});
552
+ for (const key of [
553
+ 'redirectURI',
554
+ 'openBrowser',
555
+ 'openBrowserTimeout',
556
+ 'notifyDeviceFlow',
557
+ 'allowedFlows',
558
+ ]) {
559
+ ((key) => {
560
+ var _a;
561
+ const value = (_a = currentProviderInstance.currentClientOptions.oidc) === null || _a === void 0 ? void 0 : _a[key];
562
+ if (value) {
563
+ processedOptions.oidc[key] = value;
564
+ }
565
+ })(key);
566
+ }
567
+ }
568
+ if (processedOptions.parentState ||
569
+ processedOptions.parentHandle ||
570
+ !currentProviderInstance) {
571
+ return processedOptions;
572
+ }
573
+ const currentOpts = currentProviderInstance.currentClientOptions;
574
+ const currentUri = currentProviderInstance.uri;
575
+ if (currentUri &&
576
+ (0, util_1.isDeepStrictEqual)(normalizeEndpointAndAuthConfiguration(currentUri, currentOpts), normalizeEndpointAndAuthConfiguration(uri, processedOptions))) {
577
+ if (currentOpts.parentState) {
578
+ processedOptions.parentState = currentOpts.parentState;
579
+ }
580
+ else if (currentOpts.parentHandle) {
581
+ processedOptions.parentHandle = currentOpts.parentHandle;
582
+ }
583
+ }
584
+ return processedOptions;
585
+ }
586
+ processDriverOptions(uri, opts) {
587
+ return NodeDriverServiceProvider.processDriverOptions(this, uri, {
588
+ productName: this.currentClientOptions.productName,
589
+ productDocsLink: this.currentClientOptions.productDocsLink,
590
+ ...opts,
591
+ });
592
+ }
593
+ getSearchIndexes(database, collection, indexName, options, dbOptions) {
594
+ const col = this.db(database, dbOptions).collection(collection);
595
+ if (indexName === undefined) {
596
+ return col.listSearchIndexes(options).toArray();
597
+ }
598
+ else {
599
+ return col.listSearchIndexes(indexName, options).toArray();
600
+ }
601
+ }
602
+ createSearchIndexes(database, collection, specs, dbOptions) {
603
+ return this.db(database, dbOptions)
604
+ .collection(collection)
605
+ .createSearchIndexes(specs);
606
+ }
607
+ dropSearchIndex(database, collection, indexName, dbOptions) {
608
+ return this.db(database, dbOptions)
609
+ .collection(collection)
610
+ .dropSearchIndex(indexName);
611
+ }
612
+ updateSearchIndex(database, collection, indexName, definition, dbOptions) {
613
+ return this.db(database, dbOptions)
614
+ .collection(collection)
615
+ .updateSearchIndex(indexName, definition);
616
+ }
617
+ createClientEncryption(options) {
618
+ return new mongodb_1.ClientEncryption(this.mongoClient, options);
619
+ }
620
+ }
621
+ exports.NodeDriverServiceProvider = NodeDriverServiceProvider;
622
+ //# sourceMappingURL=node-driver-service-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-driver-service-provider.js","sourceRoot":"","sources":["../src/node-driver-service-provider.ts"],"names":[],"mappings":"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"}