@mongosh/service-provider-node-driver 3.12.0 → 3.16.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.
@@ -1,10 +1,10 @@
1
1
  import type { DevtoolsConnectOptions } from '../node-driver-service-provider';
2
2
  import { NodeDriverServiceProvider } from '../node-driver-service-provider';
3
- import type { MongoClient } from 'mongodb';
3
+ import type { MongoClient, TopologyDescription } from 'mongodb';
4
4
  import type { ReplPlatform } from '@mongosh/service-provider-core';
5
5
  import type ConnectionString from 'mongodb-connection-string-url';
6
6
  import type { EventEmitter } from 'events';
7
7
  export declare class CompassServiceProvider extends NodeDriverServiceProvider {
8
8
  readonly platform: ReplPlatform;
9
- constructor(mongoClient: MongoClient, bus: EventEmitter, driverOptions: DevtoolsConnectOptions, uri?: ConnectionString);
9
+ constructor(mongoClient: MongoClient, bus: EventEmitter, driverOptions: DevtoolsConnectOptions, uri?: ConnectionString, lastSeenTopology?: TopologyDescription);
10
10
  }
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CompassServiceProvider = void 0;
4
4
  const node_driver_service_provider_1 = require("../node-driver-service-provider");
5
5
  class CompassServiceProvider extends node_driver_service_provider_1.NodeDriverServiceProvider {
6
- constructor(mongoClient, bus, driverOptions, uri) {
7
- super(mongoClient, bus, driverOptions, uri);
6
+ constructor(mongoClient, bus, driverOptions, uri, lastSeenTopology) {
7
+ super(mongoClient, bus, driverOptions, uri, lastSeenTopology);
8
8
  this.platform = 'Compass';
9
9
  }
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compass-service-provider.js","sourceRoot":"","sources":["../../src/compass/compass-service-provider.ts"],"names":[],"mappings":";;;AACA,kFAA4E;AAS5E,MAAa,sBAAuB,SAAQ,wDAAyB;IAUnE,YACE,WAAwB,EACxB,GAAiB,EACjB,aAAqC,EACrC,GAAsB;QAEtB,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;CACF;AAnBD,wDAmBC"}
1
+ {"version":3,"file":"compass-service-provider.js","sourceRoot":"","sources":["../../src/compass/compass-service-provider.ts"],"names":[],"mappings":";;;AACA,kFAA4E;AAS5E,MAAa,sBAAuB,SAAQ,wDAAyB;IAUnE,YACE,WAAwB,EACxB,GAAiB,EACjB,aAAqC,EACrC,GAAsB,EACtB,gBAAsC;QAEtC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;CACF;AApBD,wDAoBC"}
@@ -1,11 +1,10 @@
1
- import type { ClientMetadata, ReadPreferenceFromOptions, ReadPreferenceLike, OperationOptions, RunCommandCursor, RunCursorCommandOptions, ClientEncryptionOptions, MongoClient, MongoMissingDependencyError, SearchIndexDescription, TopologyDescription } from 'mongodb';
1
+ import type { ReadPreferenceFromOptions, ReadPreferenceLike, OperationOptions, RunCommandCursor, RunCursorCommandOptions, ClientEncryptionOptions, MongoClient, MongoMissingDependencyError, SearchIndexDescription, TopologyDescription } from 'mongodb';
2
2
  import type { ServiceProvider, ReplPlatform, ShellAuthOptions, AggregateOptions, AggregationCursor, AnyBulkWriteOperation, AnyClientBulkWriteModel, BulkWriteOptions, BulkWriteResult, ClientBulkWriteResult, ClientBulkWriteOptions, ClientSessionOptions, Collection, CountDocumentsOptions, CountOptions, CreateCollectionOptions, CreateIndexesOptions, FindCursor, Db, DbOptions, DeleteOptions, DeleteResult, DistinctOptions, Document, DropCollectionOptions, DropDatabaseOptions, EstimatedDocumentCountOptions, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, InsertManyResult, InsertOneOptions, InsertOneResult, ListCollectionsOptions, ListDatabasesOptions, ListIndexesOptions, MongoClientOptions, ReadConcern, RenameOptions, ReplaceOptions, RunCommandOptions, ClientSession, UpdateOptions, UpdateResult, WriteConcern, ChangeStreamOptions, ChangeStream, AutoEncryptionOptions, ClientEncryption as MongoCryptClientEncryption, ConnectionInfo } from '@mongosh/service-provider-core';
3
3
  import { ServiceProviderCore } from '@mongosh/service-provider-core';
4
4
  import type { DevtoolsConnectOptions } from '@mongodb-js/devtools-connect';
5
5
  import type { MongoshBus } from '@mongosh/types';
6
6
  import { ConnectionString } from 'mongodb-connection-string-url';
7
7
  import type { CreateEncryptedCollectionOptions } from '@mongosh/service-provider-core';
8
- import type { DevtoolsConnectionState } from '@mongodb-js/devtools-connect';
9
8
  import { ReadPreference } from 'mongodb';
10
9
  export type DropDatabaseResult = {
11
10
  ok: 0 | 1;
@@ -32,11 +31,8 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
32
31
  private _lastSeenTopology;
33
32
  constructor(mongoClient: MongoClient, bus: MongoshBus, clientOptions: DevtoolsConnectOptions, uri?: ConnectionString, lastSeenTopology?: TopologyDescription);
34
33
  static getVersionInformation(): DependencyVersionInfo;
35
- maybeThrowBetterMissingOptionalDependencyError(err: MongoMissingDependencyError): never;
36
- connectMongoClient(connectionString: ConnectionString | string, clientOptions: DevtoolsConnectOptions): Promise<{
37
- client: MongoClient;
38
- state: DevtoolsConnectionState;
39
- }>;
34
+ static maybeThrowBetterMissingOptionalDependencyError(err: MongoMissingDependencyError): never;
35
+ private static connectMongoClient;
40
36
  getNewConnection(uri: string, options?: Partial<DevtoolsConnectOptions>): Promise<NodeDriverServiceProvider>;
41
37
  _getHostnameForConnection(topology?: TopologyDescription): string | undefined;
42
38
  getConnectionInfo(): Promise<ConnectionInfo>;
@@ -48,7 +44,7 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
48
44
  aggregateDb(database: string, pipeline?: Document[], options?: AggregateOptions, dbOptions?: DbOptions): AggregationCursor;
49
45
  bulkWrite(database: string, collection: string, requests: AnyBulkWriteOperation[], options?: BulkWriteOptions, dbOptions?: DbOptions): Promise<BulkWriteResult>;
50
46
  clientBulkWrite(models: AnyClientBulkWriteModel<Document>[], options?: ClientBulkWriteOptions): Promise<ClientBulkWriteResult>;
51
- close(force: boolean): Promise<void>;
47
+ close(): Promise<void>;
52
48
  suspend(): Promise<() => Promise<void>>;
53
49
  count(database: string, collection: string, query?: Document, options?: CountOptions, dbOptions?: DbOptions): Promise<number>;
54
50
  countDocuments(database: string, collection: string, filter?: Document, options?: CountDocumentsOptions, dbOptions?: DbOptions): Promise<number>;
@@ -69,7 +65,7 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
69
65
  listDatabases(database: string, options?: ListDatabasesOptions): Promise<Document>;
70
66
  updateMany(database: string, collection: string, filter?: Document, update?: Document, options?: UpdateOptions, dbOptions?: DbOptions): Promise<UpdateResult>;
71
67
  updateOne(database: string, collection: string, filter?: Document, update?: Document, options?: UpdateOptions, dbOptions?: DbOptions): Promise<UpdateResult>;
72
- getTopology(): any | undefined;
68
+ getTopologyDescription(): TopologyDescription | undefined;
73
69
  dropDatabase(db: string, options?: DropDatabaseOptions, dbOptions?: DbOptions): Promise<DropDatabaseResult>;
74
70
  createIndexes(database: string, collection: string, indexSpecs: IndexDescription[], options?: CreateIndexesOptions, dbOptions?: DbOptions): Promise<string[]>;
75
71
  getIndexes(database: string, collection: string, options?: ListIndexesOptions, dbOptions?: DbOptions): Promise<Document[]>;
@@ -93,7 +89,6 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
93
89
  resetConnectionOptions(options: MongoClientOptions): Promise<void>;
94
90
  startSession(options: ClientSessionOptions): ClientSession;
95
91
  watch(pipeline: Document[], options: ChangeStreamOptions, dbOptions?: DbOptions, db?: string, coll?: string): ChangeStream<Document>;
96
- get driverMetadata(): ClientMetadata | undefined;
97
92
  getRawClient(): MongoClient;
98
93
  getURI(): string | undefined;
99
94
  getFleOptions(): AutoEncryptionOptions | undefined;
@@ -36,7 +36,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.NodeDriverServiceProvider = void 0;
37
37
  const service_provider_core_1 = require("@mongosh/service-provider-core");
38
38
  const errors_1 = require("@mongosh/errors");
39
- const mongodb_patches_1 = require("./mongodb-patches");
40
39
  const mongodb_connection_string_url_1 = require("mongodb-connection-string-url");
41
40
  const events_1 = require("events");
42
41
  const util_1 = require("util");
@@ -63,7 +62,9 @@ const bsonlib = () => {
63
62
  BSONRegExp,
64
63
  };
65
64
  };
66
- const DEFAULT_DRIVER_OPTIONS = Object.freeze({});
65
+ const DEFAULT_DRIVER_OPTIONS = Object.freeze({
66
+ __skipPingOnConnect: false,
67
+ });
67
68
  const DEFAULT_BASE_OPTIONS = Object.freeze({
68
69
  serializeFunctions: true,
69
70
  promoteLongs: false,
@@ -99,14 +100,6 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
99
100
  let client;
100
101
  let state;
101
102
  let lastSeenTopology;
102
- class MongoshMongoClient extends mongodb_1.MongoClient {
103
- constructor(url, options) {
104
- super(url, options);
105
- this.on('topologyDescriptionChanged', (evt) => {
106
- lastSeenTopology = evt.newDescription;
107
- });
108
- }
109
- }
110
103
  if (cliOptions.nodb) {
111
104
  const clientOptionsCopy = {
112
105
  ...clientOptions,
@@ -118,15 +111,16 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
118
111
  delete clientOptionsCopy.parentState;
119
112
  delete clientOptionsCopy.proxy;
120
113
  delete clientOptionsCopy.applyProxyToOIDC;
121
- client = new MongoshMongoClient(connectionString.toString(), clientOptionsCopy);
114
+ client = new mongodb_1.MongoClient(connectionString.toString(), clientOptionsCopy);
122
115
  }
123
116
  else {
124
- ({ client, state } = await (0, devtools_connect_1.connectMongoClient)(connectionString.toString(), clientOptions, bus, MongoshMongoClient));
117
+ ({ client, state, lastSeenTopology } = await this.connectMongoClient(connectionString.toString(), clientOptions, bus));
125
118
  }
126
119
  clientOptions.parentState = state;
127
120
  return new this(client, bus, clientOptions, connectionString, lastSeenTopology);
128
121
  }
129
122
  constructor(mongoClient, bus, clientOptions, uri, lastSeenTopology) {
123
+ var _a, _b;
130
124
  super(bsonlib());
131
125
  this.bus = bus;
132
126
  this.mongoClient = mongoClient;
@@ -134,7 +128,7 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
134
128
  this._lastSeenTopology = lastSeenTopology;
135
129
  this.platform = 'CLI';
136
130
  try {
137
- this.initialDb = mongoClient.s.options.dbName || service_provider_core_1.DEFAULT_DB;
131
+ this.initialDb = mongoClient.options.dbName || service_provider_core_1.DEFAULT_DB;
138
132
  }
139
133
  catch (err) {
140
134
  this.initialDb = service_provider_core_1.DEFAULT_DB;
@@ -142,6 +136,9 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
142
136
  this.currentClientOptions = clientOptions;
143
137
  this.baseCmdOptions = { ...DEFAULT_BASE_OPTIONS };
144
138
  this.dbcache = new WeakMap();
139
+ (_b = (_a = this.mongoClient).on) === null || _b === void 0 ? void 0 : _b.call(_a, 'topologyDescriptionChanged', (evt) => {
140
+ this._lastSeenTopology = evt.newDescription;
141
+ });
145
142
  }
146
143
  static getVersionInformation() {
147
144
  function tryCall(fn) {
@@ -159,7 +156,7 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
159
156
  kerberosVersion: tryCall(() => require('kerberos/package.json').version),
160
157
  };
161
158
  }
162
- maybeThrowBetterMissingOptionalDependencyError(err) {
159
+ static maybeThrowBetterMissingOptionalDependencyError(err) {
163
160
  if (err.message.includes('kerberos')) {
164
161
  try {
165
162
  require('kerberos');
@@ -193,9 +190,19 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
193
190
  }
194
191
  throw err;
195
192
  }
196
- async connectMongoClient(connectionString, clientOptions) {
193
+ static async connectMongoClient(connectionString, clientOptions, bus) {
194
+ let lastSeenTopology;
195
+ class MongoshMongoClient extends mongodb_1.MongoClient {
196
+ constructor(url, options) {
197
+ super(url, options);
198
+ this.on('topologyDescriptionChanged', (evt) => {
199
+ lastSeenTopology = evt.newDescription;
200
+ });
201
+ }
202
+ }
197
203
  try {
198
- return await (0, devtools_connect_1.connectMongoClient)(connectionString.toString(), clientOptions, this.bus, mongodb_1.MongoClient);
204
+ const result = await (0, devtools_connect_1.connectMongoClient)(connectionString.toString(), clientOptions, bus, MongoshMongoClient);
205
+ return { ...result, lastSeenTopology };
199
206
  }
200
207
  catch (err) {
201
208
  if (typeof err === 'object' &&
@@ -210,9 +217,9 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
210
217
  async getNewConnection(uri, options = {}) {
211
218
  const connectionString = new mongodb_connection_string_url_1.ConnectionString(uri);
212
219
  const clientOptions = this.processDriverOptions(connectionString, options);
213
- const { client, state } = await this.connectMongoClient(connectionString.toString(), clientOptions);
220
+ const { client, state, lastSeenTopology } = await NodeDriverServiceProvider.connectMongoClient(connectionString.toString(), clientOptions, this.bus);
214
221
  clientOptions.parentState = state;
215
- return new NodeDriverServiceProvider(client, this.bus, clientOptions, connectionString, this._lastSeenTopology);
222
+ return new NodeDriverServiceProvider(client, this.bus, clientOptions, connectionString, lastSeenTopology !== null && lastSeenTopology !== void 0 ? lastSeenTopology : this._lastSeenTopology);
216
223
  }
217
224
  _getHostnameForConnection(topology) {
218
225
  var _a, _b;
@@ -292,17 +299,12 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
292
299
  options = { ...this.baseCmdOptions, ...options };
293
300
  return this.mongoClient.bulkWrite(models, options);
294
301
  }
295
- async close(force) {
302
+ async close() {
296
303
  this.dbcache.set(this.mongoClient, new Map());
297
- if (force) {
298
- await (0, mongodb_patches_1.forceCloseMongoClient)(this.mongoClient);
299
- }
300
- else {
301
- await this.mongoClient.close();
302
- }
304
+ await this.mongoClient.close();
303
305
  }
304
306
  async suspend() {
305
- await this.close(true);
307
+ await this.close();
306
308
  return async () => {
307
309
  await this.resetConnectionOptions({});
308
310
  };
@@ -434,8 +436,8 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
434
436
  .collection(collection)
435
437
  .updateOne(filter, update, options);
436
438
  }
437
- getTopology() {
438
- return this.mongoClient.topology;
439
+ getTopologyDescription() {
440
+ return this._lastSeenTopology;
439
441
  }
440
442
  async dropDatabase(db, options = {}, dbOptions = {}) {
441
443
  const opts = { ...this.baseCmdOptions, ...options };
@@ -517,13 +519,15 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
517
519
  ...options,
518
520
  };
519
521
  const clientOptions = this.processDriverOptions(this.uri, this.currentClientOptions);
520
- const { client, state } = await this.connectMongoClient(this.uri.toString(), clientOptions);
522
+ const { client, state, lastSeenTopology } = await NodeDriverServiceProvider.connectMongoClient(this.uri.toString(), clientOptions, this.bus);
521
523
  try {
522
524
  await this.mongoClient.close();
523
525
  }
524
526
  catch (_a) { }
525
527
  this.mongoClient = client;
526
528
  this.currentClientOptions.parentState = state;
529
+ if (lastSeenTopology)
530
+ this._lastSeenTopology = lastSeenTopology;
527
531
  }
528
532
  startSession(options) {
529
533
  return this.mongoClient.startSession(options);
@@ -540,10 +544,6 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
540
544
  }
541
545
  throw new errors_1.MongoshInternalError('Cannot call watch with defined collection but undefined db');
542
546
  }
543
- get driverMetadata() {
544
- var _a;
545
- return (_a = this.getTopology()) === null || _a === void 0 ? void 0 : _a.clientMetadata;
546
- }
547
547
  getRawClient() {
548
548
  return this.mongoClient;
549
549
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-driver-service-provider.js","sourceRoot":"","sources":["../src/node-driver-service-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-driver-service-provider.js","sourceRoot":"","sources":["../src/node-driver-service-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,0EAIwC;AAGxC,4CAA6E;AAE7E,iFAGuC;AACvC,mCAAsC;AAGtC,+BAAyC;AACzC,gDAAkC;AAClC,qCAIiB;AACjB,mEAAkE;AAElE,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,MAAM,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,IAAI,GACL,GAAG,MAAM,CAAC;IACX,OAAO;QACL,MAAM;QACN,IAAI;QACJ,KAAK;QACL,MAAM;QACN,KAAK;QACL,IAAI;QACJ,MAAM;QACN,MAAM;QACN,QAAQ;QACR,SAAS;QACT,UAAU;QACV,UAAU;QACV,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAUF,MAAM,sBAAsB,GAAuB,MAAM,CAAC,MAAM,CAAC;IAS/D,mBAAmB,EAAE,KAAK;CACL,CAAC,CAAC;AAKzB,MAAM,oBAAoB,GAAqB,MAAM,CAAC,MAAM,CAAC;IAC3D,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE,KAAK;CACpB,CAAC,CAAC;AAcH,SAAS,qCAAqC,CAC5C,GAAqB,EACrB,IAA4B;;IAE5B,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,EAA0B,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAI,4DAA4B,CACpD,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CACtC,CAAC;IAEF,OAAO;QACL,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,KAAK;QACT,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,QAAQ,mCAAI,GAAG,CAAC,QAAQ;QACnC,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,QAAQ,mCAAI,GAAG,CAAC,QAAQ;QACnC,MAAA,IAAI,CAAC,aAAa,mCAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QACjD,MAAA,IAAI,CAAC,UAAU,mCAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3C,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,EAAE;KAC1E,CAAC;AACJ,CAAC;AAYD,MAAa,yBACX,SAAQ,2CAAmB;IAY3B,MAAM,CAAC,KAAK,CAAC,OAAO,CAElB,GAAW,EACX,aAAqC,EACrC,aAAiC,EAAE,EACnC,MAAkB,IAAI,qBAAY,EAAE;;QAEpC,MAAM,gBAAgB,GAAG,IAAI,gDAAgB,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAC7C,IAAI,EACJ,gBAAgB,EAChB,aAAa,CACd,CAAC;QACF,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;YAC9C,aAAa,CAAC,SAAS,GAAG;gBACxB,OAAO,EACL,OAAO,aAAa,CAAC,SAAS,KAAK,QAAQ;oBACzC,CAAC,CAAC,aAAa,CAAC,SAAS;oBACzB,CAAC,CAAC,MAAA,MAAA,aAAa,CAAC,SAAS,0CAAE,OAAO,mCAAI,GAAG;gBAC7C,MAAM,EAAE,IAAI;gBACZ,iBAAiB,EAAE,IAAI;aACxB,CAAC;QACJ,CAAC;QAED,IAAI,MAAmB,CAAC;QACxB,IAAI,KAA0C,CAAC;QAC/C,IAAI,gBAAiD,CAAC;QAEtD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,iBAAiB,GACa;gBAClC,GAAG,aAAa;aACjB,CAAC;YACF,OAAO,iBAAiB,CAAC,WAAW,CAAC;YACrC,OAAO,iBAAiB,CAAC,eAAe,CAAC;YACzC,OAAO,iBAAiB,CAAC,IAAI,CAAC;YAC9B,OAAO,iBAAiB,CAAC,YAAY,CAAC;YACtC,OAAO,iBAAiB,CAAC,WAAW,CAAC;YACrC,OAAO,iBAAiB,CAAC,KAAK,CAAC;YAC/B,OAAO,iBAAiB,CAAC,gBAAgB,CAAC;YAC1C,MAAM,GAAG,IAAI,qBAAe,CAC1B,gBAAgB,CAAC,QAAQ,EAAE,EAC3B,iBAAiB,CAClB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAClE,gBAAgB,CAAC,QAAQ,EAAE,EAC3B,aAAa,EACb,GAAG,CACJ,CAAC,CAAC;QACL,CAAC;QACD,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC;QAElC,OAAO,IAAI,IAAI,CACb,MAAM,EACN,GAAG,EACH,aAAa,EACb,gBAAgB,EAChB,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAwBD,YACE,WAAwB,EACxB,GAAe,EACf,aAAqC,EACrC,GAAsB,EACtB,gBAAsC;;QAEtC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,kCAAU,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,kCAAU,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,oBAAoB,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE7B,MAAA,MAAA,IAAI,CAAC,WAAW,EAAC,EAAE,mDACjB,4BAA4B,EAC5B,CAAC,GAAoC,EAAE,EAAE;YACvC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,cAAc,CAAC;QAC9C,CAAC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB;QAC1B,SAAS,OAAO,CAAuB,EAAM;YAC3C,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,CAAC;YACd,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;QACD,OAAO;YACL,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;YACzE,oBAAoB,EAAE,OAAO,CAC3B,GAAG,EAAE,CAAC,0BAAgB,CAAC,oBAAoB,CAC5C;YACD,gCAAgC,EAAE,OAAO,CACvC,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,OAAO,CAChE;YACD,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,8CAA8C,CACnD,GAAgC;QAEhC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IACE,OAAO,KAAK,KAAK,QAAQ;oBACzB,KAAK;oBACL,SAAS,IAAI,KAAK;oBAClB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EACjC,CAAC;oBAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,EAAE;wBACnE,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,OAAO,CAAC,2BAA2B,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IACE,OAAO,KAAK,KAAK,QAAQ;oBACzB,KAAK;oBACL,SAAS,IAAI,KAAK;oBAClB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EACjC,CAAC;oBAED,MAAM,KAAK,GACT,WAAW,IAAI,OAAO;wBACpB,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,gJAAgJ,CAAC;oBACvJ,MAAM,IAAI,KAAK,CACb,qDAAqD,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,EAE5E,EAAE,KAAK,EAAE,CACV,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,gBAA2C,EAC3C,aAAqC,EACrC,GAAe;QAMf,IAAI,gBAAiD,CAAC;QAEtD,MAAM,kBAAmB,SAAQ,qBAAe;YAC9C,YAAY,GAAW,EAAE,OAA4B;gBACnD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpB,IAAI,CAAC,EAAE,CACL,4BAA4B,EAC5B,CAAC,GAAoC,EAAE,EAAE;oBACvC,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC;gBACxC,CAAC,CACF,CAAC;YACJ,CAAC;SACF;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,qCAAkB,EACrC,gBAAgB,CAAC,QAAQ,EAAE,EAC3B,aAAa,EACb,GAAG,EACH,kBAAkB,CACnB,CAAC;YACF,OAAO,EAAE,GAAG,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IACE,OAAO,GAAG,KAAK,QAAQ;gBACvB,GAAG;gBACH,MAAM,IAAI,GAAG;gBACb,GAAG,CAAC,IAAI,KAAK,6BAA6B,EAC1C,CAAC;gBACD,IAAI,CAAC,8CAA8C,CACjD,GAAkC,CACnC,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAW,EACX,UAA2C,EAAE;QAE7C,MAAM,gBAAgB,GAAG,IAAI,gDAAgB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE3E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GACvC,MAAM,yBAAyB,CAAC,kBAAkB,CAChD,gBAAgB,CAAC,QAAQ,EAAE,EAC3B,aAAa,EACb,IAAI,CAAC,GAAG,CACT,CAAC;QACJ,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC;QAClC,OAAO,IAAI,yBAAyB,CAClC,MAAM,EACN,IAAI,CAAC,GAAG,EACR,aAAa,EACb,gBAAgB,EAChB,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,IAAI,CAAC,iBAAiB,CAC3C,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,QAA8B;;QAE9B,OAAO,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAE,MAAM,GAAG,IAAI,GAAG,KAAK,0CAAE,WAAW,CAAC,IAAI,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,iBAAiB;;QACrB,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,YAAY,CAAC,GACrE,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,mBAAmB,CACtB,OAAO,EACP,EAAE,SAAS,EAAE,CAAC,EAAE,EAChB,IAAI,CAAC,cAAc,CACpB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACjB,IAAI,CAAC,mBAAmB,CACtB,OAAO,EACP,EAAE,YAAY,EAAE,CAAC,EAAE,EACnB,IAAI,CAAC,cAAc,CACpB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACjB,IAAI,CAAC,mBAAmB,CACtB,OAAO,EACP,EAAE,YAAY,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,EACnD,IAAI,CAAC,cAAc,CACpB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE;gBACvC,kBAAkB,EAAE,yBAAyB;aAC9C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAClB,CAAC,CAAC;QAEL,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CACrD,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAEF,MAAM,mBAAmB,GAAG,IAAA,2CAAmB,EAAC;YAC9C,gBAAgB,EAAE,IAAI,CAAC,GAAG;YAC1B,SAAS;YACT,YAAY;YACZ,gBAAgB;YAChB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC;QAEH,OAAO;YACL,SAAS;YACT,gBAAgB;YAChB,SAAS,EAAE;gBACT,GAAG,mBAAmB;gBACtB,GAAG,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,2BAA2B,0CAAE,OAAO;aAC/C;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,OAAe,EACf,OAAe,EACf,UAAyB,EAAE,EAC3B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,gBAAgB,CACxD,OAAO,EACP,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC;IAUO,EAAE,CAAC,IAAY,EAAE,YAAuB,EAAE;QAChD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAKD,cAAc,CAAC,IAAY,EAAE,SAAqB;QAChD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;IAKO,UAAU;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAqBD,SAAS,CACP,QAAgB,EAChB,UAAkB,EAClB,WAAuB,EAAE,EACzB,UAA4B,EAAE,EAC9B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAoBD,WAAW,CACT,QAAgB,EAChB,WAAuB,EAAE,EACzB,UAA4B,EAAE,EAC9B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,EAAE,GAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAQ,CAAC;QACpD,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAiBD,SAAS,CACP,QAAgB,EAChB,UAAkB,EAClB,QAAiC,EACjC,UAA4B,EAAE,EAC9B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAKD,eAAe,CACb,MAA2C,EAC3C,UAAkC,EAAE;QAEpC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAKD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;IACJ,CAAC;IAmBD,KAAK,CACH,QAAgB,EAChB,UAAkB,EAClB,QAAkB,EAAE,EACpB,UAAwB,EAAE,EAC1B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IAgBD,cAAc,CACZ,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,UAAiC,EAAE,EACnC,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAaD,UAAU,CACR,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,UAAyB,EAAE,EAC3B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAaD,SAAS,CACP,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,UAAyB,EAAE,EAC3B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAcD,QAAQ,CACN,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,SAAmB,EAAE,EACrB,UAA2B,EAAE,EAC7B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAYD,sBAAsB,CACpB,QAAgB,EAChB,UAAkB,EAClB,UAAyC,EAAE,EAC3C,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAaD,IAAI,CACF,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,UAAuB,EAAE,EACzB,SAAqB;QAErB,MAAM,WAAW,GAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QAChE,IAAI,qBAAqB,IAAI,WAAW,EAAE,CAAC;YACzC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,mBAAmB,CAAC;QACxD,CAAC;QACD,IAAI,iBAAiB,IAAI,WAAW,EAAE,CAAC;YACrC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/B,CAAC;IAaD,gBAAgB,CACd,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,UAAmC,EAAE,EACrC,SAAqB;QAIrB,OAAO,GAAG;YACR,qBAAqB,EAAE,IAAI;YAC3B,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,OAAO;SACX,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAcD,iBAAiB,CACf,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,cAAwB,EAAE,EAC1B,UAAoC,EAAE,EACtC,SAAqB;QAErB,MAAM,wBAAwB,GAAQ;YACpC,qBAAqB,EAAE,IAAI;YAC3B,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,OAAO;SACX,CAAC;QAEF,OACE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU,CACnD,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACrE,CAAC;IAcD,gBAAgB,CACd,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,SAAgC,EAAE,EAClC,UAAmC,EAAE,EACrC,SAAqB;QAErB,MAAM,uBAAuB,GAAG;YAC9B,qBAAqB,EAAE,IAAI;YAC3B,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,OAAO;SACX,CAAC;QAEF,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAQ,CAAC;IACtE,CAAC;IAaD,UAAU,CACR,QAAgB,EAChB,UAAkB,EAClB,OAAmB,EAAE,EACrB,UAA4B,EAAE,EAC9B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAaD,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,UAAkB,EAClB,MAAgB,EAAE,EAClB,UAA4B,EAAE,EAC9B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAcD,UAAU,CACR,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,cAAwB,EAAE,EAC1B,UAA0B,EAAE,EAC5B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAE9C,CAAC;IAYD,UAAU,CACR,QAAgB,EAChB,OAAiB,EAAE,EACnB,UAA6B,EAAE,EAC/B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAYD,KAAK,CAAC,mBAAmB,CACvB,QAAgB,EAChB,OAAiB,EAAE,EACnB,UAA6B,EAAE,EAC/B,SAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,6BAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAmB,CAAC;IAC7B,CAAC;IAUD,gBAAgB,CACd,QAAgB,EAChB,OAAiB,EAAE,EACnB,UAAmC,EAAE,EACrC,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IASD,aAAa,CACX,QAAgB,EAChB,UAAgC,EAAE;QAElC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAcD,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,SAAmB,EAAE,EACrB,UAAyB,EAAE,EAC3B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aACtC,UAAU,CAAC,UAAU,CAAC;aACtB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAcD,SAAS,CACP,QAAgB,EAChB,UAAkB,EAClB,SAAmB,EAAE,EACrB,SAAmB,EAAE,EACrB,UAAyB,EAAE,EAC3B,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAKD,sBAAsB;QACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAWD,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAA+B,EAAE,EACjC,YAAuB,EAAE;QAEzB,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAyB,CAAC;QAC3E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAErE,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO;YACL,EAAE;YACF,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;IAYD,KAAK,CAAC,aAAa,CACjB,QAAgB,EAChB,UAAkB,EAClB,UAA8B,EAC9B,UAAgC,EAAE,EAClC,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAcD,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,UAAkB,EAClB,UAA8B,EAAE,EAChC,SAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aACtC,UAAU,CAAC,UAAU,CAAC;aACtB,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;aACnD,OAAO,EAAE,CAAC;IACf,CAAC;IAaD,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,SAAmB,EAAE,EACrB,UAAkC,EAAE,EACpC,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aACtC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;aAChC,OAAO,EAAE,CAAC;IACf,CAAC;IAYD,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,UAAkB,EAClB,UAAiC,EAAE,EACnC,SAAqB;QAErB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAOD,KAAK,CAAC,YAAY,CAAC,OAAyB;QAE1C,MAAM,IAAI,GAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QACrE,MAAM,IAAI,CAAC,sBAAsB,CAAC;YAChC,IAAI;YACJ,GAAG,CAAC,OAAO,CAAC,SAAS;gBACnB,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,SAA0B,EAAE;gBACvD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,QAAgB,EAChB,UAAmC,EAAE,EACrC,SAAqB;QAErB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,MAAc,EACd,QAAgB,EAChB,OAAyC,EACzC,aAAyC;QAEzC,OAAO,MAAM,aAAa,CAAC,yBAAyB,CAClD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EACf,QAAQ,EACR,OAAO,CACR,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,QAAgB,EAChB,OAAgB,EAChB,UAA4B,EAAE,EAC9B,SAAqB;QAGrB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;iBAC9B,UAAU,CAAC,QAAQ,CAAC;iBACpB,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;aAC9B,UAAU,CAAC,QAAQ,CAAC;aACpB,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;IACzC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IACvC,CAAC;IAED,yBAAyB,CACvB,OAAoD;QAEpD,OAAO,wBAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAOD,KAAK,CAAC,sBAAsB,CAAC,OAA2B;QACtD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG;YAC1B,GAAG,IAAI,CAAC,oBAAoB;YAC5B,GAAG,OAAO;SACX,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAC7C,IAAI,CAAC,GAAuB,EAC5B,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GACvC,MAAM,yBAAyB,CAAC,kBAAkB,CAC/C,IAAI,CAAC,GAAwB,CAAC,QAAQ,EAAE,EACzC,aAAa,EACb,IAAI,CAAC,GAAG,CACT,CAAC;QACJ,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEjC,CAAC;QAAC,WAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,KAAK,CAAC;QAC9C,IAAI,gBAAgB;YAAE,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,OAA6B;QACxC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CACH,QAAoB,EACpB,OAA4B,EAC5B,YAAuB,EAAE,EACzB,EAAW,EACX,IAAa;QAEb,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,6BAAoB,CAC5B,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM;;QACJ,OAAO,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC;IACxB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;IAClD,CAAC;IAGD,MAAM,CAAC,oBAAoB,CACzB,uBAAyD,EACzD,GAAqB,EACrB,IAA4B;;QAE5B,MAAM,gBAAgB,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,IAAI,EAAE,CAAC;QAEhE,IAAI,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,oBAAoB,EAAE,CAAC;YAClD,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAU,EAAE,CAAC;gBAC9D,gBAAgB,CAAC,GAAG,CAAC;oBACnB,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACtD,CAAC;YAED,MAAA,gBAAgB,CAAC,IAAI,oCAArB,gBAAgB,CAAC,IAAI,GAAK,EAAE,EAAC;YAC7B,KAAK,MAAM,GAAG,IAAI;gBAChB,aAAa;gBACb,aAAa;gBACb,oBAAoB;gBACpB,kBAAkB;gBAClB,cAAc;aACN,EAAE,CAAC;gBAEX,CAAC,CAA+C,GAAM,EAAE,EAAE;;oBACxD,MAAM,KAAK,GACT,MAAA,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,0CAAG,GAAG,CAAC,CAAC;oBAC3D,IAAI,KAAK,EAAE,CAAC;wBACV,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACrC,CAAC;gBACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,IACE,gBAAgB,CAAC,WAAW;YAC5B,gBAAgB,CAAC,YAAY;YAC7B,CAAC,uBAAuB,EACxB,CAAC;YAGD,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,WAAW,GAAG,uBAAuB,CAAC,oBAAoB,CAAC;QACjE,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC;QAC/C,IACE,UAAU;YACV,IAAA,wBAAiB,EACf,qCAAqC,CAAC,UAAU,EAAE,WAAW,CAAC,EAC9D,qCAAqC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAC7D,EACD,CAAC;YACD,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBAC5B,gBAAgB,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;YACzD,CAAC;iBAAM,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBACpC,gBAAgB,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAGD,oBAAoB,CAClB,GAAqB,EACrB,IAAqC;QAErC,OAAO,yBAAyB,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE;YAC/D,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW;YAClD,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe;YAC1D,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CACd,QAAgB,EAChB,UAAkB,EAClB,SAAkB,EAElB,OAAkB,EAClB,SAAqB;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,mBAAmB,CACjB,QAAgB,EAChB,UAAkB,EAClB,KAA+B,EAC/B,SAAqB;QAErB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,SAAqB;QAErB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,eAAe,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,iBAAiB,CACf,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,UAAkC,EAClC,SAAqB;QAErB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAChC,UAAU,CAAC,UAAU,CAAC;aACtB,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,sBAAsB,CACpB,OAAgC;QAEhC,OAAO,IAAI,0BAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF;AA/0CD,8DA+0CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongosh/service-provider-node-driver",
3
- "version": "3.12.0",
3
+ "version": "3.16.0",
4
4
  "description": "MongoDB Shell Server Service Provider Package",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -47,21 +47,21 @@
47
47
  }
48
48
  },
49
49
  "dependencies": {
50
- "@mongodb-js/devtools-connect": "^3.4.1",
51
- "@mongodb-js/oidc-plugin": "^1.1.8",
52
- "@mongosh/errors": "2.4.2",
53
- "@mongosh/service-provider-core": "3.3.5",
54
- "@mongosh/types": "3.10.0",
50
+ "@mongodb-js/devtools-connect": "^3.9.4",
51
+ "@mongodb-js/oidc-plugin": "^2.0.3",
52
+ "@mongosh/errors": "2.4.4",
53
+ "@mongosh/service-provider-core": "3.5.0",
54
+ "@mongosh/types": "^3.14.0",
55
55
  "aws4": "^1.12.0",
56
56
  "kerberos": "2.1.0",
57
- "mongodb": "^6.16.0",
58
- "mongodb-client-encryption": "^6.3.0",
57
+ "mongodb": "^6.19.0",
58
+ "mongodb-client-encryption": "^6.5.0",
59
59
  "mongodb-connection-string-url": "^3.0.1",
60
60
  "socks": "^2.8.3"
61
61
  },
62
62
  "optionalDependencies": {
63
63
  "kerberos": "2.1.0",
64
- "mongodb-client-encryption": "^6.3.0"
64
+ "mongodb-client-encryption": "^6.5.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@mongodb-js/eslint-config-mongosh": "^1.0.0",
@@ -72,5 +72,5 @@
72
72
  "eslint": "^7.25.0",
73
73
  "prettier": "^2.8.8"
74
74
  },
75
- "gitHead": "511befbaf032b589d7f3e81325e5e389d360cc3f"
75
+ "gitHead": "e019a30c3021026ff8db296171d7d7f68cdac05e"
76
76
  }
@@ -1,6 +1,6 @@
1
1
  import type { DevtoolsConnectOptions } from '../node-driver-service-provider';
2
2
  import { NodeDriverServiceProvider } from '../node-driver-service-provider';
3
- import type { MongoClient } from 'mongodb';
3
+ import type { MongoClient, TopologyDescription } from 'mongodb';
4
4
  import type { ReplPlatform } from '@mongosh/service-provider-core';
5
5
  import type ConnectionString from 'mongodb-connection-string-url';
6
6
  import type { EventEmitter } from 'events';
@@ -22,9 +22,10 @@ export class CompassServiceProvider extends NodeDriverServiceProvider {
22
22
  mongoClient: MongoClient,
23
23
  bus: EventEmitter,
24
24
  driverOptions: DevtoolsConnectOptions,
25
- uri?: ConnectionString
25
+ uri?: ConnectionString,
26
+ lastSeenTopology?: TopologyDescription
26
27
  ) {
27
- super(mongoClient, bus, driverOptions, uri);
28
+ super(mongoClient, bus, driverOptions, uri, lastSeenTopology);
28
29
  this.platform = 'Compass';
29
30
  }
30
31
  }
@@ -55,7 +55,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
55
55
  });
56
56
 
57
57
  afterEach(async function () {
58
- await serviceProvider.close(true);
58
+ await serviceProvider.close();
59
59
  });
60
60
 
61
61
  describe('.connect', function () {
@@ -70,7 +70,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
70
70
  });
71
71
 
72
72
  afterEach(async function () {
73
- await instance.close(true);
73
+ await instance.close();
74
74
  });
75
75
 
76
76
  it('returns a NodeDriverServiceProvider', function () {
@@ -86,7 +86,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
86
86
  });
87
87
 
88
88
  afterEach(async function () {
89
- await instance.close(true);
89
+ await instance.close();
90
90
  });
91
91
 
92
92
  it('returns a NodeDriverServiceProvider', function () {
@@ -807,12 +807,6 @@ describe('NodeDriverServiceProvider [integration]', function () {
807
807
  });
808
808
  });
809
809
 
810
- describe('#driverMetadata', function () {
811
- it('returns information about the driver instance', function () {
812
- expect(serviceProvider.driverMetadata?.driver.name).to.equal('nodejs');
813
- });
814
- });
815
-
816
810
  describe('#getURI', function () {
817
811
  it('returns the current URI', function () {
818
812
  expect(serviceProvider.getURI()).to.equal(connectionString);
@@ -823,7 +817,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
823
817
  let instance: NodeDriverServiceProvider;
824
818
 
825
819
  afterEach(async function () {
826
- await instance?.close(true);
820
+ await instance?.close();
827
821
  });
828
822
 
829
823
  it('.connect() returns a CompassServiceProvider instance', async function () {
@@ -1098,6 +1098,7 @@ describe('NodeDriverServiceProvider', function () {
1098
1098
  ).to.deep.equal({
1099
1099
  oidc: { ...cloneableOidcOptions },
1100
1100
  ...productInfo,
1101
+ __skipPingOnConnect: false,
1101
1102
  });
1102
1103
  });
1103
1104
 
@@ -1,7 +1,6 @@
1
1
  import type {
2
2
  Auth,
3
3
  AuthMechanism,
4
- ClientMetadata,
5
4
  ReadPreferenceFromOptions,
6
5
  ReadPreferenceLike,
7
6
  OperationOptions,
@@ -79,7 +78,6 @@ import {
79
78
  import type { DevtoolsConnectOptions } from '@mongodb-js/devtools-connect';
80
79
  import { MongoshCommandFailed, MongoshInternalError } from '@mongosh/errors';
81
80
  import type { MongoshBus } from '@mongosh/types';
82
- import { forceCloseMongoClient } from './mongodb-patches';
83
81
  import {
84
82
  ConnectionString,
85
83
  CommaAndColonSeparatedRecord,
@@ -140,7 +138,17 @@ export type DropDatabaseResult = {
140
138
  /**
141
139
  * Default driver options we always use.
142
140
  */
143
- const DEFAULT_DRIVER_OPTIONS: MongoClientOptions = Object.freeze({});
141
+ const DEFAULT_DRIVER_OPTIONS: MongoClientOptions = Object.freeze({
142
+ // In COMPASS-9455 / https://github.com/mongodb-js/devtools-shared/pull/557,
143
+ // we turned on the driver-internal `__skipPingOnConnect` option on by default
144
+ // for devtools-connect usage, turning off an extra `ping` rountrip when auth
145
+ // options have been provided. In mongosh, we do require this ping check,
146
+ // because we only print a warning rather than throwing an exception
147
+ // if a follow-up ping fails (e.g. in load-balanced mode). So setting this
148
+ // flag to `false` here restores mongosh's existing behavior, and we can
149
+ // revisit this in the next major version of mongosh.
150
+ __skipPingOnConnect: false,
151
+ } as MongoClientOptions);
144
152
 
145
153
  /**
146
154
  * Default driver method options we always use.
@@ -233,18 +241,6 @@ export class NodeDriverServiceProvider
233
241
  let state: DevtoolsConnectionState | undefined;
234
242
  let lastSeenTopology: TopologyDescription | undefined;
235
243
 
236
- class MongoshMongoClient extends MongoClientCtor {
237
- constructor(url: string, options?: MongoClientOptions) {
238
- super(url, options);
239
- this.on(
240
- 'topologyDescriptionChanged',
241
- (evt: TopologyDescriptionChangedEvent) => {
242
- lastSeenTopology = evt.newDescription;
243
- }
244
- );
245
- }
246
- }
247
-
248
244
  if (cliOptions.nodb) {
249
245
  const clientOptionsCopy: MongoClientOptions &
250
246
  Partial<DevtoolsConnectOptions> = {
@@ -257,16 +253,15 @@ export class NodeDriverServiceProvider
257
253
  delete clientOptionsCopy.parentState;
258
254
  delete clientOptionsCopy.proxy;
259
255
  delete clientOptionsCopy.applyProxyToOIDC;
260
- client = new MongoshMongoClient(
256
+ client = new MongoClientCtor(
261
257
  connectionString.toString(),
262
258
  clientOptionsCopy
263
259
  );
264
260
  } else {
265
- ({ client, state } = await connectMongoClient(
261
+ ({ client, state, lastSeenTopology } = await this.connectMongoClient(
266
262
  connectionString.toString(),
267
263
  clientOptions,
268
- bus,
269
- MongoshMongoClient
264
+ bus
270
265
  ));
271
266
  }
272
267
  clientOptions.parentState = state;
@@ -290,13 +285,13 @@ export class NodeDriverServiceProvider
290
285
  private bus: MongoshBus;
291
286
 
292
287
  /**
293
- * Stores the last seen topology at the time when .connect() finishes.
288
+ * Stores the last known topology for the MongoClient instance.
294
289
  */
295
290
  private _lastSeenTopology: TopologyDescription | undefined;
296
291
 
297
292
  /**
298
293
  * Instantiate a new NodeDriverServiceProvider with the Node driver's connected
299
- * MongoClient instance.
294
+ * MongoClient instance. Do not call this directly, it is only public for testing.
300
295
  *
301
296
  * @param {MongoClient} mongoClient - The Node drivers' MongoClient instance.
302
297
  * @param {DevtoolsConnectOptions} clientOptions
@@ -317,13 +312,20 @@ export class NodeDriverServiceProvider
317
312
  this._lastSeenTopology = lastSeenTopology;
318
313
  this.platform = 'CLI';
319
314
  try {
320
- this.initialDb = (mongoClient as any).s.options.dbName || DEFAULT_DB;
315
+ this.initialDb = mongoClient.options.dbName || DEFAULT_DB;
321
316
  } catch (err: any) {
322
317
  this.initialDb = DEFAULT_DB;
323
318
  }
324
319
  this.currentClientOptions = clientOptions;
325
320
  this.baseCmdOptions = { ...DEFAULT_BASE_OPTIONS }; // currently do not have any user-specified connection-wide command options, but I imagine we will eventually
326
321
  this.dbcache = new WeakMap();
322
+
323
+ this.mongoClient.on?.(
324
+ 'topologyDescriptionChanged',
325
+ (evt: TopologyDescriptionChangedEvent) => {
326
+ this._lastSeenTopology = evt.newDescription;
327
+ }
328
+ );
327
329
  }
328
330
 
329
331
  static getVersionInformation(): DependencyVersionInfo {
@@ -346,7 +348,7 @@ export class NodeDriverServiceProvider
346
348
  };
347
349
  }
348
350
 
349
- maybeThrowBetterMissingOptionalDependencyError(
351
+ static maybeThrowBetterMissingOptionalDependencyError(
350
352
  err: MongoMissingDependencyError
351
353
  ): never {
352
354
  if (err.message.includes('kerberos')) {
@@ -392,17 +394,37 @@ export class NodeDriverServiceProvider
392
394
  throw err;
393
395
  }
394
396
 
395
- async connectMongoClient(
397
+ private static async connectMongoClient(
396
398
  connectionString: ConnectionString | string,
397
- clientOptions: DevtoolsConnectOptions
398
- ): Promise<{ client: MongoClient; state: DevtoolsConnectionState }> {
399
+ clientOptions: DevtoolsConnectOptions,
400
+ bus: MongoshBus
401
+ ): Promise<{
402
+ client: MongoClient;
403
+ state: DevtoolsConnectionState;
404
+ lastSeenTopology: TopologyDescription | undefined;
405
+ }> {
406
+ let lastSeenTopology: TopologyDescription | undefined;
407
+
408
+ class MongoshMongoClient extends MongoClientCtor {
409
+ constructor(url: string, options?: MongoClientOptions) {
410
+ super(url, options);
411
+ this.on(
412
+ 'topologyDescriptionChanged',
413
+ (evt: TopologyDescriptionChangedEvent) => {
414
+ lastSeenTopology = evt.newDescription;
415
+ }
416
+ );
417
+ }
418
+ }
419
+
399
420
  try {
400
- return await connectMongoClient(
421
+ const result = await connectMongoClient(
401
422
  connectionString.toString(),
402
423
  clientOptions,
403
- this.bus,
404
- MongoClientCtor
424
+ bus,
425
+ MongoshMongoClient
405
426
  );
427
+ return { ...result, lastSeenTopology };
406
428
  } catch (err: unknown) {
407
429
  if (
408
430
  typeof err === 'object' &&
@@ -425,17 +447,19 @@ export class NodeDriverServiceProvider
425
447
  const connectionString = new ConnectionString(uri);
426
448
  const clientOptions = this.processDriverOptions(connectionString, options);
427
449
 
428
- const { client, state } = await this.connectMongoClient(
429
- connectionString.toString(),
430
- clientOptions
431
- );
450
+ const { client, state, lastSeenTopology } =
451
+ await NodeDriverServiceProvider.connectMongoClient(
452
+ connectionString.toString(),
453
+ clientOptions,
454
+ this.bus
455
+ );
432
456
  clientOptions.parentState = state;
433
457
  return new NodeDriverServiceProvider(
434
458
  client,
435
459
  this.bus,
436
460
  clientOptions,
437
461
  connectionString,
438
- this._lastSeenTopology
462
+ lastSeenTopology ?? this._lastSeenTopology
439
463
  );
440
464
  }
441
465
 
@@ -646,20 +670,15 @@ export class NodeDriverServiceProvider
646
670
 
647
671
  /**
648
672
  * Close the connection.
649
- *
650
- * @param {boolean} force - Whether to force close the connection.
651
673
  */
652
- async close(force: boolean): Promise<void> {
674
+ async close(): Promise<void> {
653
675
  this.dbcache.set(this.mongoClient, new Map());
654
- if (force) {
655
- await forceCloseMongoClient(this.mongoClient);
656
- } else {
657
- await this.mongoClient.close();
658
- }
676
+
677
+ await this.mongoClient.close();
659
678
  }
660
679
 
661
680
  async suspend(): Promise<() => Promise<void>> {
662
- await this.close(true);
681
+ await this.close();
663
682
  return async () => {
664
683
  await this.resetConnectionOptions({});
665
684
  };
@@ -1148,8 +1167,8 @@ export class NodeDriverServiceProvider
1148
1167
  /**
1149
1168
  * Get currently known topology information.
1150
1169
  */
1151
- getTopology(): any | undefined {
1152
- return (this.mongoClient as any).topology;
1170
+ getTopologyDescription(): TopologyDescription | undefined {
1171
+ return this._lastSeenTopology;
1153
1172
  }
1154
1173
 
1155
1174
  /**
@@ -1361,16 +1380,19 @@ export class NodeDriverServiceProvider
1361
1380
  this.uri as ConnectionString,
1362
1381
  this.currentClientOptions
1363
1382
  );
1364
- const { client, state } = await this.connectMongoClient(
1365
- (this.uri as ConnectionString).toString(),
1366
- clientOptions
1367
- );
1383
+ const { client, state, lastSeenTopology } =
1384
+ await NodeDriverServiceProvider.connectMongoClient(
1385
+ (this.uri as ConnectionString).toString(),
1386
+ clientOptions,
1387
+ this.bus
1388
+ );
1368
1389
  try {
1369
1390
  await this.mongoClient.close();
1370
1391
  // eslint-disable-next-line no-empty
1371
1392
  } catch {}
1372
1393
  this.mongoClient = client;
1373
1394
  this.currentClientOptions.parentState = state;
1395
+ if (lastSeenTopology) this._lastSeenTopology = lastSeenTopology;
1374
1396
  }
1375
1397
 
1376
1398
  startSession(options: ClientSessionOptions): ClientSession {
@@ -1385,25 +1407,17 @@ export class NodeDriverServiceProvider
1385
1407
  coll?: string
1386
1408
  ): ChangeStream<Document> {
1387
1409
  if (db === undefined && coll === undefined) {
1388
- // TODO: watch not exported, see NODE-2934
1389
- return (this.mongoClient as any).watch(pipeline, options);
1410
+ return this.mongoClient.watch(pipeline, options);
1390
1411
  } else if (db !== undefined && coll === undefined) {
1391
- return (this.db(db, dbOptions) as any).watch(pipeline, options);
1412
+ return this.db(db, dbOptions).watch(pipeline, options);
1392
1413
  } else if (db !== undefined && coll !== undefined) {
1393
- return (this.db(db, dbOptions).collection(coll) as any).watch(
1394
- pipeline,
1395
- options
1396
- );
1414
+ return this.db(db, dbOptions).collection(coll).watch(pipeline, options);
1397
1415
  }
1398
1416
  throw new MongoshInternalError(
1399
1417
  'Cannot call watch with defined collection but undefined db'
1400
1418
  );
1401
1419
  }
1402
1420
 
1403
- get driverMetadata(): ClientMetadata | undefined {
1404
- return this.getTopology()?.clientMetadata;
1405
- }
1406
-
1407
1421
  getRawClient(): MongoClient {
1408
1422
  return this.mongoClient;
1409
1423
  }
@@ -1,4 +0,0 @@
1
- import type { MongoClient } from 'mongodb';
2
- export declare function forceCloseMongoClient(client: MongoClient): Promise<{
3
- forceClosedConnections: number;
4
- }>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.forceCloseMongoClient = forceCloseMongoClient;
4
- function forceCloseMongoClient(client) {
5
- var _a, _b, _c, _d;
6
- let forceClosedConnections = 0;
7
- for (const server of (_c = (_b = (_a = client.topology) === null || _a === void 0 ? void 0 : _a.s) === null || _b === void 0 ? void 0 : _b.servers) === null || _c === void 0 ? void 0 : _c.values()) {
8
- const checkedOutConnections = (_d = server === null || server === void 0 ? void 0 : server.pool) === null || _d === void 0 ? void 0 : _d.checkedOutConnections;
9
- for (const connection of checkedOutConnections !== null && checkedOutConnections !== void 0 ? checkedOutConnections : []) {
10
- forceClosedConnections++;
11
- connection.destroy({ force: true });
12
- connection.onError(new Error('connection canceled by force close'));
13
- }
14
- }
15
- return client.close(true).then(() => ({ forceClosedConnections }));
16
- }
17
- //# sourceMappingURL=mongodb-patches.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mongodb-patches.js","sourceRoot":"","sources":["../src/mongodb-patches.ts"],"names":[],"mappings":";;AAGA,sDAqBC;AArBD,SAAgB,qBAAqB,CACnC,MAAmB;;IAEnB,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,MAAA,MAAA,MAAC,MAAc,CAAC,QAAQ,0CAAE,CAAC,0CAAE,OAAO,0CAAE,MAAM,EAAE,EAAE,CAAC;QACpE,MAAM,qBAAqB,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,qBAAqB,CAAC;QAClE,KAAK,MAAM,UAAU,IAAI,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,EAAE,EAAE,CAAC;YACrD,sBAAsB,EAAE,CAAC;YACzB,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YASpC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC"}
@@ -1,67 +0,0 @@
1
- import { expect } from 'chai';
2
- import { MongoClient } from 'mongodb';
3
- import {
4
- skipIfServerVersion,
5
- startSharedTestServer,
6
- } from '../../../testing/integration-testing-hooks';
7
- import { forceCloseMongoClient } from './mongodb-patches';
8
- import { promisify } from 'util';
9
-
10
- const delay = promisify(setTimeout);
11
-
12
- describe('forceCloseMongoClient [integration]', function () {
13
- const testServer = startSharedTestServer();
14
-
15
- context('for server >= 4.1', function () {
16
- skipIfServerVersion(testServer, '< 4.1');
17
-
18
- it('force-closes connections that are currently checked out', async function () {
19
- if (process.env.MONGOSH_TEST_FORCE_API_STRICT) {
20
- return this.skip(); // $currentOp is unversioned
21
- }
22
-
23
- let client = await MongoClient.connect(
24
- await testServer.connectionString()
25
- );
26
- const testDbName = `test-db-${Date.now()}`;
27
- const testDb = client.db(testDbName);
28
-
29
- await testDb.collection('ctrlc').insertOne({});
30
- let err: any;
31
- testDb
32
- .collection('ctrlc')
33
- .find({
34
- $where: 'while(true) { /* loop1 */ }',
35
- })
36
- .toArray()
37
- .catch((e) => {
38
- err = e;
39
- });
40
- await delay(100);
41
- const result = await forceCloseMongoClient(client);
42
- expect(result.forceClosedConnections).to.equal(1);
43
- await delay(1);
44
- expect(err.message).to.include('Topology is closed');
45
-
46
- client = await MongoClient.connect(await testServer.connectionString());
47
- for (let i = 0; ; i++) {
48
- const [out] = await client
49
- .db('admin')
50
- .aggregate([
51
- { $currentOp: {} },
52
- { $match: { 'command.find': 'ctrlc' } },
53
- { $count: 'waitingCommands' },
54
- ])
55
- .toArray();
56
- if (i === 100 || !out?.waitingCommands) {
57
- expect(out?.waitingCommands || 0).to.equal(0);
58
- break;
59
- }
60
- await delay(100);
61
- }
62
-
63
- await client.db(testDbName).dropDatabase();
64
- await client.close();
65
- });
66
- });
67
- });
@@ -1,25 +0,0 @@
1
- import type { MongoClient } from 'mongodb';
2
-
3
- // Close a MongoClient + abort currently ongoing operations.
4
- export function forceCloseMongoClient(
5
- client: MongoClient
6
- ): Promise<{ forceClosedConnections: number }> {
7
- let forceClosedConnections = 0;
8
- for (const server of (client as any).topology?.s?.servers?.values()) {
9
- const checkedOutConnections = server?.pool?.checkedOutConnections;
10
- for (const connection of checkedOutConnections ?? []) {
11
- forceClosedConnections++;
12
- connection.destroy({ force: true });
13
- // Immediately after destroying, act as if the close had happened,
14
- // but *not* as an actual 'close' event on the socket itself --
15
- // a close on the socket is communicated as a network error, which
16
- // is considered an retryable error by operations which are currently
17
- // running on this connection, but the whole point here is that these
18
- // operations should *not* be retried. So, we just act as if something
19
- // had happened that interrupts all ongoing operations and also is
20
- // supposed to destroy the connection (which is a no-op at this point).
21
- connection.onError(new Error('connection canceled by force close'));
22
- }
23
- }
24
- return client.close(true).then(() => ({ forceClosedConnections }));
25
- }