mongodb-data-service 21.18.0 → 21.21.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.
Files changed (41) hide show
  1. package/lib/connect-mongo-client.d.ts +7 -6
  2. package/lib/connect-mongo-client.d.ts.map +1 -1
  3. package/lib/connect-mongo-client.js +44 -11
  4. package/lib/connect-mongo-client.js.map +1 -1
  5. package/lib/connect.d.ts +1 -1
  6. package/lib/connect.d.ts.map +1 -1
  7. package/lib/connect.js +2 -5
  8. package/lib/connect.js.map +1 -1
  9. package/lib/connection-options.d.ts +7 -0
  10. package/lib/connection-options.d.ts.map +1 -1
  11. package/lib/connection-secrets.d.ts +2 -0
  12. package/lib/connection-secrets.d.ts.map +1 -1
  13. package/lib/connection-secrets.js +21 -1
  14. package/lib/connection-secrets.js.map +1 -1
  15. package/lib/connection-storage.d.ts +2 -1
  16. package/lib/connection-storage.d.ts.map +1 -1
  17. package/lib/connection-storage.js +56 -12
  18. package/lib/connection-storage.js.map +1 -1
  19. package/lib/connection-title.d.ts.map +1 -1
  20. package/lib/connection-title.js +0 -3
  21. package/lib/connection-title.js.map +1 -1
  22. package/lib/csfle-collection-tracker.d.ts +39 -0
  23. package/lib/csfle-collection-tracker.d.ts.map +1 -0
  24. package/lib/csfle-collection-tracker.js +205 -0
  25. package/lib/csfle-collection-tracker.js.map +1 -0
  26. package/lib/data-service.d.ts +129 -12
  27. package/lib/data-service.d.ts.map +1 -1
  28. package/lib/data-service.js +217 -68
  29. package/lib/data-service.js.map +1 -1
  30. package/lib/index.d.ts +3 -2
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +5 -3
  33. package/lib/index.js.map +1 -1
  34. package/lib/instance-detail-helper.d.ts +10 -2
  35. package/lib/instance-detail-helper.d.ts.map +1 -1
  36. package/lib/instance-detail-helper.js +31 -2
  37. package/lib/instance-detail-helper.js.map +1 -1
  38. package/lib/legacy/legacy-connection-model.d.ts.map +1 -1
  39. package/lib/legacy/legacy-connection-model.js +25 -1
  40. package/lib/legacy/legacy-connection-model.js.map +1 -1
  41. package/package.json +21 -17
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CSFLECollectionTrackerImpl = void 0;
7
+ const mongodb_ns_1 = __importDefault(require("mongodb-ns"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
10
+ const { log, mongoLogId } = (0, compass_logging_1.default)('COMPASS-DATA-SERVICE');
11
+ function extractEncryptedFieldsFromSchema(schema) {
12
+ var _a;
13
+ if (schema === null || schema === void 0 ? void 0 : schema.encrypt) {
14
+ return [[]];
15
+ }
16
+ const fields = [];
17
+ for (const [key, subschema] of Object.entries((_a = schema === null || schema === void 0 ? void 0 : schema.properties) !== null && _a !== void 0 ? _a : {})) {
18
+ for (const subfield of extractEncryptedFieldsFromSchema(subschema)) {
19
+ fields.push([key, ...subfield]);
20
+ }
21
+ }
22
+ return fields;
23
+ }
24
+ function extractEncryptedFieldsFromEncryptedFieldsConfig(encryptedFields) {
25
+ var _a;
26
+ return ((_a = encryptedFields === null || encryptedFields === void 0 ? void 0 : encryptedFields.fields) !== null && _a !== void 0 ? _a : []).map((field) => field.path.split('.'));
27
+ }
28
+ function extractEncrytedFieldFromAutoEncryptionOptions(ns, autoEncryption) {
29
+ var _a, _b;
30
+ return [
31
+ ...extractEncryptedFieldsFromSchema((_a = autoEncryption.schemaMap) === null || _a === void 0 ? void 0 : _a[ns]),
32
+ ...extractEncryptedFieldsFromEncryptedFieldsConfig((_b = autoEncryption === null || autoEncryption === void 0 ? void 0 : autoEncryption.encryptedFieldsMap) === null || _b === void 0 ? void 0 : _b[ns]),
33
+ ];
34
+ }
35
+ function extractEncryptedFieldsFromListCollectionsResult(options) {
36
+ var _a;
37
+ const schema = (_a = options === null || options === void 0 ? void 0 : options.validator) === null || _a === void 0 ? void 0 : _a.$jsonSchema;
38
+ const encryptedFieldsConfig = options === null || options === void 0 ? void 0 : options.encryptedFields;
39
+ return [
40
+ ...extractEncryptedFieldsFromSchema(schema),
41
+ ...extractEncryptedFieldsFromEncryptedFieldsConfig(encryptedFieldsConfig),
42
+ ];
43
+ }
44
+ function extractEncryptedFieldsFromDocument(doc) {
45
+ var _a;
46
+ const decryptedFields = ((_a = doc === null || doc === void 0 ? void 0 : doc[Symbol.for('@@mdb.decryptedKeys')]) !== null && _a !== void 0 ? _a : []).map((field) => [field]);
47
+ for (const [key, value] of Object.entries(doc)) {
48
+ if (!value || typeof value !== 'object') {
49
+ continue;
50
+ }
51
+ const nestedFields = extractEncryptedFieldsFromDocument(value);
52
+ decryptedFields.push(...nestedFields.map((path) => [key, ...path]));
53
+ }
54
+ return decryptedFields;
55
+ }
56
+ function isOlderThan1Minute(oldDate) {
57
+ return Date.now() - oldDate.getTime() >= 60000;
58
+ }
59
+ class CSFLECollectionTrackerImpl {
60
+ constructor(dataService, crudClient) {
61
+ this._nsToInfo = new Map();
62
+ this._dataService = dataService;
63
+ this._crudClient = crudClient;
64
+ this._dataService.on('collectionInfoFetched', this._updateCollectionInfoFromDataService.bind(this));
65
+ this._processClientSchemaDefinitions();
66
+ const { autoEncrypter } = this._crudClient.options;
67
+ if (autoEncrypter) {
68
+ log.info(mongoLogId(1001000118), 'CSFLECollectionTracker', 'Hooking AutoEncrypter metaDataClient property');
69
+ autoEncrypter._metaDataClient = this._createHookedMetadataClient(autoEncrypter._metaDataClient);
70
+ }
71
+ }
72
+ async isUpdateAllowed(ns, originalDocument) {
73
+ var _a, _b;
74
+ const originalDocEncryptedFields = extractEncryptedFieldsFromDocument(originalDocument);
75
+ if (originalDocEncryptedFields.length === 0) {
76
+ return true;
77
+ }
78
+ const info = await this._fetchCSFLECollectionInfo(ns);
79
+ const collectionEncryptedFields = [
80
+ ...((_a = info.serverEnforcedEncryptedFields) !== null && _a !== void 0 ? _a : []),
81
+ ...((_b = info.clientEnforcedEncryptedFields) !== null && _b !== void 0 ? _b : []),
82
+ ];
83
+ for (const originalDocPath of originalDocEncryptedFields) {
84
+ if (!collectionEncryptedFields.some((path) => lodash_1.default.isEqual(originalDocPath, path))) {
85
+ return false;
86
+ }
87
+ }
88
+ return true;
89
+ }
90
+ async knownSchemaForCollection(ns) {
91
+ var _a, _b, _c, _d;
92
+ const info = await this._fetchCSFLECollectionInfo(ns);
93
+ const hasSchema = !!(info.hasServerSchema ||
94
+ ((_a = info.clientEnforcedEncryptedFields) === null || _a === void 0 ? void 0 : _a.length) ||
95
+ ((_b = info.serverEnforcedEncryptedFields) === null || _b === void 0 ? void 0 : _b.length));
96
+ const encryptedFields = [
97
+ ...((_c = info.clientEnforcedEncryptedFields) !== null && _c !== void 0 ? _c : []),
98
+ ...((_d = info.serverEnforcedEncryptedFields) !== null && _d !== void 0 ? _d : []),
99
+ ].map((fieldPath) => fieldPath.join('.'));
100
+ return { hasSchema, encryptedFields };
101
+ }
102
+ _processClientSchemaDefinitions() {
103
+ var _a, _b;
104
+ const { autoEncryption } = this._crudClient.options;
105
+ for (const ns of [
106
+ ...Object.keys((_a = autoEncryption === null || autoEncryption === void 0 ? void 0 : autoEncryption.schemaMap) !== null && _a !== void 0 ? _a : {}),
107
+ ...Object.keys((_b = autoEncryption === null || autoEncryption === void 0 ? void 0 : autoEncryption.encryptedFieldsMap) !== null && _b !== void 0 ? _b : {}),
108
+ ]) {
109
+ log.info(mongoLogId(1001000119), 'CSFLECollectionTracker', 'Processing client-side schema information', { ns });
110
+ const info = this._getCSFLECollectionInfo(ns);
111
+ info.clientEnforcedEncryptedFields =
112
+ extractEncrytedFieldFromAutoEncryptionOptions(ns, autoEncryption);
113
+ }
114
+ }
115
+ async _fetchCSFLECollectionInfo(ns) {
116
+ const parsedNs = (0, mongodb_ns_1.default)(ns);
117
+ const info = this._getCSFLECollectionInfo(ns);
118
+ if (!info.serverEnforcedEncryptedFields ||
119
+ !info.lastUpdated ||
120
+ isOlderThan1Minute(info.lastUpdated)) {
121
+ log.info(mongoLogId(1001000120), 'CSFLECollectionTracker', 'Refreshing listCollections cache', { ns });
122
+ await this._dataService.listCollections(parsedNs.database, {
123
+ name: parsedNs.collection,
124
+ });
125
+ }
126
+ return info;
127
+ }
128
+ _getCSFLECollectionInfo(ns) {
129
+ const existing = this._nsToInfo.get(ns);
130
+ if (existing)
131
+ return existing;
132
+ const info = {};
133
+ this._nsToInfo.set(ns, info);
134
+ return info;
135
+ }
136
+ _updateCollectionInfoFromDataService(opts, result) {
137
+ var _a, _b;
138
+ if (opts.nameOnly) {
139
+ return;
140
+ }
141
+ const ns = `${opts.databaseName}.${result.name}`;
142
+ log.info(mongoLogId(1001000121), 'CSFLECollectionTracker', 'Processing listCollections update', { ns });
143
+ const info = this._getCSFLECollectionInfo(ns);
144
+ info.serverEnforcedEncryptedFields =
145
+ extractEncryptedFieldsFromListCollectionsResult(result.options);
146
+ info.hasServerSchema = !!((_b = (_a = result.options) === null || _a === void 0 ? void 0 : _a.validator) === null || _b === void 0 ? void 0 : _b.$jsonSchema);
147
+ info.lastUpdated = new Date();
148
+ }
149
+ _createHookedMetadataClient(wrappedClient) {
150
+ return {
151
+ db: (dbName) => {
152
+ return {
153
+ listCollections: (filter, opts) => {
154
+ return {
155
+ toArray: (callback) => {
156
+ wrappedClient
157
+ .db(dbName)
158
+ .listCollections(filter, opts)
159
+ .toArray((err, collectionInfos) => {
160
+ if (!err) {
161
+ err = this._checkListCollectionsForLibmongocryptResult(dbName, filter, (collectionInfos !== null && collectionInfos !== void 0 ? collectionInfos : []));
162
+ if (err) {
163
+ log.error(mongoLogId(1001000122), 'CSFLECollectionTracker', 'Rejecting listCollections in hooked metaDataClient', { error: err.message });
164
+ }
165
+ }
166
+ if (err) {
167
+ callback(err);
168
+ return;
169
+ }
170
+ callback(err, collectionInfos);
171
+ });
172
+ },
173
+ };
174
+ },
175
+ };
176
+ },
177
+ };
178
+ }
179
+ _checkListCollectionsForLibmongocryptResult(dbName, filter, collectionInfos) {
180
+ var _a, _b;
181
+ if (typeof (filter === null || filter === void 0 ? void 0 : filter.name) !== 'string' || collectionInfos.length > 1) {
182
+ return new Error(`[Compass] Unexpected listCollections request on '${dbName}' with name: '${filter === null || filter === void 0 ? void 0 : filter.name}'`);
183
+ }
184
+ const ns = `${dbName}.${filter.name}`;
185
+ const existingInfo = this._getCSFLECollectionInfo(ns);
186
+ if (collectionInfos.length === 0) {
187
+ if ((_a = existingInfo.serverEnforcedEncryptedFields) === null || _a === void 0 ? void 0 : _a.length) {
188
+ return new Error(`[Compass] Missing encrypted field information of collection '${ns}'`);
189
+ }
190
+ return;
191
+ }
192
+ const [info] = collectionInfos;
193
+ if (filter.name !== info.name) {
194
+ return new Error(`[Compass] Unexpected listCollections name mismatch: got ${info.name}, expected ${filter.name}`);
195
+ }
196
+ const newInfo = extractEncryptedFieldsFromListCollectionsResult(info.options);
197
+ for (const expectedEncryptedField of (_b = existingInfo.serverEnforcedEncryptedFields) !== null && _b !== void 0 ? _b : []) {
198
+ if (!newInfo.some((field) => lodash_1.default.isEqual(field, expectedEncryptedField))) {
199
+ return new Error(`[Compass] Missing encrypted field '${expectedEncryptedField.join('.')}' of collection '${ns}' in listCollections result`);
200
+ }
201
+ }
202
+ }
203
+ }
204
+ exports.CSFLECollectionTrackerImpl = CSFLECollectionTrackerImpl;
205
+ //# sourceMappingURL=csfle-collection-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csfle-collection-tracker.js","sourceRoot":"","sources":["../src/csfle-collection-tracker.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,132 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
- import type { AggregateOptions, AggregationCursor, BulkWriteOptions, ClientSession, Collection, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, DeleteOptions, DeleteResult, Document, EstimatedDocumentCountOptions, ExplainOptions, Filter, FindCursor, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexSpecification, InsertManyResult, InsertOneOptions, InsertOneResult, MongoClientOptions, ReadPreferenceLike, TopologyDescription, TopologyType, UpdateFilter, UpdateOptions, UpdateResult } from 'mongodb';
3
+ import type { AggregateOptions, AggregationCursor, BulkWriteOptions, ClientSession, Collection, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, DeleteOptions, DeleteResult, Document, EstimatedDocumentCountOptions, Filter, FindCursor, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexSpecification, InsertManyResult, InsertOneOptions, InsertOneResult, MongoClientOptions, ServerClosedEvent, ReadPreferenceLike, ServerDescriptionChangedEvent, ServerHeartbeatFailedEvent, ServerHeartbeatSucceededEvent, ServerOpeningEvent, TopologyClosedEvent, TopologyDescription, TopologyDescriptionChangedEvent, TopologyOpeningEvent, TopologyType, UpdateFilter, UpdateOptions, UpdateResult } from 'mongodb';
4
4
  import ConnectionStringUrl from 'mongodb-connection-string-url';
5
- import type { ConnectionOptions } from './connection-options';
5
+ import type { ConnectionFleOptions, ConnectionOptions } from './connection-options';
6
6
  import type { InstanceDetails } from './instance-detail-helper';
7
7
  import { adaptCollectionInfo, adaptDatabaseInfo } from './instance-detail-helper';
8
+ import type { CollectionInfo, CollectionInfoNameOnly } from './run-command';
8
9
  import type { Callback, CollectionStats } from './types';
9
10
  import type { ConnectionStatusWithPrivileges } from './run-command';
10
- declare class DataService extends EventEmitter {
11
+ import type { CSFLECollectionTracker } from './csfle-collection-tracker';
12
+ import type { ClientEncryption as ClientEncryptionType, ClientEncryptionDataKeyProvider, ClientEncryptionCreateDataKeyProviderOptions } from 'mongodb-client-encryption';
13
+ declare type ClientType = 'CRUD' | 'META';
14
+ declare const kSessionClientType: unique symbol;
15
+ interface CompassClientSession extends ClientSession {
16
+ [kSessionClientType]: ClientType;
17
+ }
18
+ export interface DataServiceEventMap {
19
+ serverDescriptionChanged: (evt: ServerDescriptionChangedEvent) => void;
20
+ serverOpening: (evt: ServerOpeningEvent) => void;
21
+ serverClosed: (evt: ServerClosedEvent) => void;
22
+ topologyOpening: (evt: TopologyOpeningEvent) => void;
23
+ topologyClosed: (evt: TopologyClosedEvent) => void;
24
+ topologyDescriptionChanged: (evt: TopologyDescriptionChangedEvent) => void;
25
+ serverHeartbeatSucceeded: (evt: ServerHeartbeatSucceededEvent) => void;
26
+ serverHeartbeatFailed: (evt: ServerHeartbeatFailedEvent) => void;
27
+ collectionInfoFetched: (opts: {
28
+ databaseName: string;
29
+ nameOnly?: boolean;
30
+ }, result: CollectionInfoNameOnly & Partial<CollectionInfo>) => void;
31
+ }
32
+ export interface DataService {
33
+ on<K extends keyof DataServiceEventMap>(event: K, listener: DataServiceEventMap[K]): this;
34
+ once<K extends keyof DataServiceEventMap>(event: K, listener: DataServiceEventMap[K]): this;
35
+ emit<K extends keyof DataServiceEventMap>(event: K, ...args: DataServiceEventMap[K] extends (...args: infer P) => any ? P : never): unknown;
36
+ getMongoClientConnectionOptions(): {
37
+ url: string;
38
+ options: MongoClientOptions;
39
+ } | undefined;
40
+ getConnectionOptions(): Readonly<ConnectionOptions>;
41
+ getConnectionString(): ConnectionStringUrl;
42
+ getReadPreference(): ReadPreferenceLike;
43
+ setCSFLEEnabled(enabled: boolean): void;
44
+ configuredKMSProviders(): string[];
45
+ collection(ns: string, options: unknown, callback: Callback<Document>): void;
46
+ collections(databaseName: string, callback: Callback<CollectionStats[]>): void;
47
+ collectionStats(databaseName: string, collectionName: string, callback: Callback<CollectionStats>): void;
48
+ collectionInfo(dbName: string, collName: string): Promise<ReturnType<typeof adaptCollectionInfo> | null>;
49
+ command(databaseName: string, comm: Document, callback: Callback<Document>): void;
50
+ isWritable(): boolean;
51
+ isMongos(): boolean;
52
+ currentTopologyType(): TopologyType;
53
+ connectionStatus(): Promise<ConnectionStatusWithPrivileges>;
54
+ listCollections(databaseName: string, filter?: Document, options?: {
55
+ nameOnly?: true;
56
+ privileges?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserPrivileges'] | null;
57
+ }): Promise<ReturnType<typeof adaptCollectionInfo>[]>;
58
+ listDatabases(options?: {
59
+ nameOnly?: true;
60
+ privileges?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserPrivileges'] | null;
61
+ roles?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserRoles'] | null;
62
+ }): Promise<{
63
+ _id: string;
64
+ name: string;
65
+ }[]>;
66
+ connect(): Promise<void>;
67
+ estimatedCount(ns: string, options: EstimatedDocumentCountOptions, callback: Callback<number>): void;
68
+ count(ns: string, filter: Filter<Document>, options: CountDocumentsOptions, callback: Callback<number>): void;
69
+ createCollection(ns: string, options: CreateCollectionOptions, callback: Callback<Collection<Document>>): void;
70
+ createIndex(ns: string, spec: IndexSpecification, options: CreateIndexesOptions, callback: Callback<string>): void;
71
+ database(name: string, options: unknown, callback: Callback<Document>): void;
72
+ deleteOne(ns: string, filter: Filter<Document>, options: DeleteOptions, callback: Callback<DeleteResult>): void;
73
+ deleteMany(ns: string, filter: Filter<Document>, options: DeleteOptions, callback: Callback<DeleteResult>): void;
74
+ disconnect(): Promise<void>;
75
+ dropCollection(ns: string, callback: Callback<boolean>): void;
76
+ dropDatabase(name: string, callback: Callback<boolean>): void;
77
+ dropIndex(ns: string, name: string, callback: Callback<Document>): void;
78
+ aggregate(ns: string, pipeline: Document[], options?: AggregateOptions): AggregationCursor;
79
+ aggregate(ns: string, pipeline: Document[], callback: Callback<AggregationCursor>): void;
80
+ aggregate(ns: string, pipeline: Document[], options: AggregateOptions | undefined, callback: Callback<AggregationCursor>): void;
81
+ find(ns: string, filter: Filter<Document>, options: FindOptions, callback: Callback<Document[]>): void;
82
+ fetch(ns: string, filter: Filter<Document>, options: FindOptions): FindCursor;
83
+ findOneAndReplace(ns: string, filter: Filter<Document>, replacement: Document, options: FindOneAndReplaceOptions, callback: Callback<Document>): void;
84
+ findOneAndUpdate(ns: string, filter: Filter<Document>, update: Document, options: FindOneAndUpdateOptions, callback: Callback<Document>): void;
85
+ explain(ns: string, filter: Filter<Document>, options: FindOptions, callback: Callback<Document>): void;
86
+ indexes(ns: string, options: unknown, callback: Callback<Document>): void;
87
+ instance(): Promise<InstanceDetails>;
88
+ insertOne(ns: string, doc: Document, options: InsertOneOptions, callback: Callback<InsertOneResult<Document>>): void;
89
+ insertMany(ns: string, docs: Document[], options: BulkWriteOptions, callback: Callback<InsertManyResult<Document>>): void;
90
+ putMany(ns: string, docs: Document[], options: BulkWriteOptions): Promise<InsertManyResult<Document>>;
91
+ updateCollection(ns: string, flags: Document & {
92
+ collMod?: never;
93
+ }, callback: Callback<Document>): void;
94
+ updateOne(ns: string, filter: Filter<Document>, update: Document | UpdateFilter<Document>, options: UpdateOptions, callback: Callback<Document>): void;
95
+ updateMany(ns: string, filter: Filter<Document>, update: UpdateFilter<Document>, options: UpdateOptions, callback: Callback<Document | UpdateResult>): void;
96
+ currentOp(includeAll: boolean, callback: Callback<Document>): void;
97
+ getLastSeenTopology(): null | TopologyDescription;
98
+ serverstats(callback: Callback<Document>): void;
99
+ top(callback: Callback<Document>): void;
100
+ createView(name: string, sourceNs: string, pipeline: Document[], options: CreateCollectionOptions, callback: Callback<Collection<Document>>): void;
101
+ updateView(name: string, sourceNs: string, pipeline: Document[], options: Document, callback: Callback<Document>): void;
102
+ dropView(ns: string, callback: Callback<boolean>): void;
103
+ sample(ns: string, args?: {
104
+ query?: Filter<Document>;
105
+ size?: number;
106
+ fields?: Document;
107
+ }, options?: AggregateOptions): AggregationCursor;
108
+ startSession(clientType: ClientType): CompassClientSession;
109
+ killSessions(sessions: CompassClientSession | CompassClientSession[]): Promise<Document>;
110
+ isConnected(): boolean;
111
+ databaseStats(name: string): Promise<ReturnType<typeof adaptDatabaseInfo> & {
112
+ name: string;
113
+ }>;
114
+ createDataKey(provider: string, options?: unknown): Promise<Document>;
115
+ }
116
+ export declare class DataServiceImpl extends EventEmitter implements DataService {
11
117
  private readonly _connectionOptions;
12
118
  private _isConnecting;
13
119
  private _mongoClientConnectionOptions?;
14
- private _client?;
120
+ private _metadataClient?;
121
+ private _crudClient?;
122
+ private _useCRUDClient;
123
+ private _csfleCollectionTracker?;
15
124
  private _tunnel?;
16
125
  private _lastSeenTopology;
17
126
  private _isWritable;
18
127
  private _topologyType;
19
128
  private _id;
20
- constructor(connectionOptions: ConnectionOptions);
129
+ constructor(connectionOptions: Readonly<ConnectionOptions>);
21
130
  getMongoClientConnectionOptions(): {
22
131
  url: string;
23
132
  options: MongoClientOptions;
@@ -26,6 +135,8 @@ declare class DataService extends EventEmitter {
26
135
  getConnectionOptions(): Readonly<ConnectionOptions>;
27
136
  getConnectionString(): ConnectionStringUrl;
28
137
  getReadPreference(): ReadPreferenceLike;
138
+ setCSFLEEnabled(enabled: boolean): void;
139
+ getCSFLEMode(): 'enabled' | 'disabled' | 'unavailable';
29
140
  collection(ns: string, options: unknown, callback: Callback<Document>): void;
30
141
  collections(databaseName: string, callback: Callback<CollectionStats[]>): void;
31
142
  collectionStats(databaseName: string, collectionName: string, callback: Callback<CollectionStats>): void;
@@ -36,13 +147,15 @@ declare class DataService extends EventEmitter {
36
147
  currentTopologyType(): TopologyType;
37
148
  connectionStatus(): Promise<ConnectionStatusWithPrivileges>;
38
149
  private _getPrivilegesOrFallback;
150
+ private _getRolesOrFallback;
39
151
  listCollections(databaseName: string, filter?: Document, { nameOnly, privileges, }?: {
40
152
  nameOnly?: true;
41
153
  privileges?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserPrivileges'] | null;
42
154
  }): Promise<ReturnType<typeof adaptCollectionInfo>[]>;
43
- listDatabases({ nameOnly, privileges, }?: {
155
+ listDatabases({ nameOnly, privileges, roles, }?: {
44
156
  nameOnly?: true;
45
157
  privileges?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserPrivileges'] | null;
158
+ roles?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserRoles'] | null;
46
159
  }): Promise<{
47
160
  _id: string;
48
161
  name: string;
@@ -66,7 +179,7 @@ declare class DataService extends EventEmitter {
66
179
  fetch(ns: string, filter: Filter<Document>, options: FindOptions): FindCursor;
67
180
  findOneAndReplace(ns: string, filter: Filter<Document>, replacement: Document, options: FindOneAndReplaceOptions, callback: Callback<Document>): void;
68
181
  findOneAndUpdate(ns: string, filter: Filter<Document>, update: Document, options: FindOneAndUpdateOptions, callback: Callback<Document>): void;
69
- explain(ns: string, filter: Filter<Document>, options: ExplainOptions, callback: Callback<Document>): void;
182
+ explain(ns: string, filter: Filter<Document>, options: FindOptions, callback: Callback<Document>): void;
70
183
  indexes(ns: string, options: unknown, callback: Callback<Document>): void;
71
184
  instance(): Promise<InstanceDetails>;
72
185
  insertOne(ns: string, doc: Document, options: InsertOneOptions, callback: Callback<InsertOneResult<Document>>): void;
@@ -89,19 +202,19 @@ declare class DataService extends EventEmitter {
89
202
  size?: number;
90
203
  fields?: Document;
91
204
  }, options?: AggregateOptions): AggregationCursor;
92
- startSession(): ClientSession;
93
- killSessions(sessions: ClientSession | ClientSession[]): Promise<Document>;
205
+ startSession(clientType: ClientType): CompassClientSession;
206
+ killSessions(sessions: CompassClientSession | CompassClientSession[]): Promise<Document>;
94
207
  isConnected(): boolean;
95
208
  private setupListeners;
96
- private get _initializedClient();
97
- private get _defaultDb();
209
+ private _initializedClient;
210
+ getCSFLECollectionTracker(): CSFLECollectionTracker;
98
211
  databaseStats(name: string): Promise<ReturnType<typeof adaptDatabaseInfo> & {
99
212
  name: string;
100
213
  }>;
101
214
  private _buildCollectionDetail;
102
215
  private _buildCollectionStats;
103
216
  private _buildDatabaseDetail;
104
- _collection(ns: string): Collection;
217
+ _collection(ns: string, type: ClientType): Collection;
105
218
  private _collectionNames;
106
219
  private _collectionName;
107
220
  private _databaseName;
@@ -109,6 +222,10 @@ declare class DataService extends EventEmitter {
109
222
  private _translateMessage;
110
223
  private _cleanup;
111
224
  private _startLogOp;
225
+ configuredKMSProviders(): string[];
226
+ _csfleLogInformation(fleOptions?: Readonly<ConnectionFleOptions>): null | Record<string, unknown>;
227
+ createDataKey(provider: ClientEncryptionDataKeyProvider, options?: ClientEncryptionCreateDataKeyProviderOptions): Promise<Document>;
228
+ _getClientEncryption(): ClientEncryptionType;
112
229
  }
113
230
  export default DataService;
114
231
  //# sourceMappingURL=data-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../src/data-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../src/data-service.ts"],"names":[],"mappings":"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"}