mongodb-data-service 21.11.0 → 21.15.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 (48) hide show
  1. package/README.md +7 -22
  2. package/lib/connect-mongo-client.d.ts +11 -0
  3. package/lib/connect-mongo-client.js +89 -0
  4. package/lib/connect-mongo-client.js.map +1 -0
  5. package/lib/connect.js +2 -15
  6. package/lib/connect.js.map +1 -1
  7. package/lib/connection-info.d.ts +12 -0
  8. package/lib/connection-info.js +3 -0
  9. package/lib/connection-info.js.map +1 -0
  10. package/lib/connection-options.d.ts +2 -11
  11. package/lib/connection-secrets.d.ts +13 -0
  12. package/lib/connection-secrets.js +98 -0
  13. package/lib/connection-secrets.js.map +1 -0
  14. package/lib/connection-storage.d.ts +4 -6
  15. package/lib/connection-storage.js +8 -8
  16. package/lib/connection-storage.js.map +1 -1
  17. package/lib/connection-title.d.ts +2 -0
  18. package/lib/connection-title.js +25 -0
  19. package/lib/connection-title.js.map +1 -0
  20. package/lib/data-service.d.ts +42 -21
  21. package/lib/data-service.js +440 -175
  22. package/lib/data-service.js.map +1 -1
  23. package/lib/index.d.ts +8 -1
  24. package/lib/index.js +15 -1
  25. package/lib/index.js.map +1 -1
  26. package/lib/instance-detail-helper.d.ts +77 -32
  27. package/lib/instance-detail-helper.js +143 -433
  28. package/lib/instance-detail-helper.js.map +1 -1
  29. package/lib/{legacy-connection-model.d.ts → legacy/legacy-connection-model.d.ts} +17 -8
  30. package/lib/legacy/legacy-connection-model.js +207 -0
  31. package/lib/legacy/legacy-connection-model.js.map +1 -0
  32. package/lib/redact.d.ts +4 -1
  33. package/lib/redact.js +23 -11
  34. package/lib/redact.js.map +1 -1
  35. package/lib/run-command.d.ts +209 -0
  36. package/lib/run-command.js +11 -0
  37. package/lib/run-command.js.map +1 -0
  38. package/lib/ssh-tunnel.d.ts +5 -0
  39. package/lib/ssh-tunnel.js +73 -0
  40. package/lib/ssh-tunnel.js.map +1 -0
  41. package/lib/types.d.ts +7 -98
  42. package/package.json +24 -25
  43. package/lib/.esm-wrapper.mjs +0 -3
  44. package/lib/legacy-connect.d.ts +0 -7
  45. package/lib/legacy-connect.js +0 -123
  46. package/lib/legacy-connect.js.map +0 -1
  47. package/lib/legacy-connection-model.js +0 -158
  48. package/lib/legacy-connection-model.js.map +0 -1
package/lib/types.d.ts CHANGED
@@ -1,102 +1,9 @@
1
- import { AnyError, CollStats, Db, Document, MongoClient } from 'mongodb';
1
+ import type { AnyError, CollStats } from 'mongodb';
2
2
  export interface Callback<R> {
3
3
  (err: Error | AnyError | {
4
4
  message: string;
5
5
  } | null | undefined, result: R): void;
6
6
  }
7
- export interface ResolvedInstanceTaskData {
8
- client: MongoClient;
9
- db: Db;
10
- userInfo: Document;
11
- host: HostInfoDetails;
12
- build: BuildInfoDetails;
13
- cmdLineOpts: Document;
14
- genuineMongoDB: GenuineMongoDBDetails;
15
- dataLake: DataLakeDetails;
16
- listDatabases: string[];
17
- allowedDatabases: string[];
18
- databases: InstanceDatabaseDetails[];
19
- listCollections: InstanceCollectionDetails[];
20
- allowedCollections: InstanceCollectionDetails[];
21
- collections: InstanceCollectionDetails[];
22
- hierarchy: never;
23
- stats: InstanceDatabaseStats;
24
- }
25
- export declare type InstanceDetails = Omit<ResolvedInstanceTaskData, 'db' | 'listDatabases' | 'allowedDatabases' | 'userInfo' | 'listCollections' | 'allowedCollections' | 'cmdLineOpts'>;
26
- export interface Instance extends InstanceDetails {
27
- _id?: string;
28
- hostname: string;
29
- port: number;
30
- }
31
- export interface InstanceCollectionDetails {
32
- _id: string;
33
- name: string;
34
- database: string;
35
- readonly: boolean;
36
- collation: string | null;
37
- type: string;
38
- view_on?: string;
39
- pipeline?: Document[];
40
- }
41
- export interface InstanceDatabaseDetails {
42
- _id: string;
43
- name: string;
44
- document_count: number;
45
- storage_size: number;
46
- index_count: number;
47
- index_size: number;
48
- collections?: InstanceCollectionDetails[];
49
- }
50
- export interface HostInfoDetails {
51
- system_time?: any;
52
- hostname?: string;
53
- os?: string;
54
- os_family?: string;
55
- kernel_version?: string;
56
- kernel_version_string?: string;
57
- memory_bits?: number;
58
- memory_page_size?: number;
59
- arch?: string;
60
- cpu_cores?: number;
61
- cpu_cores_physical?: number;
62
- cpu_scheduler?: string;
63
- cpu_frequency?: number;
64
- cpu_string?: string;
65
- cpu_bits?: number;
66
- machine_model?: string;
67
- feature_numa?: boolean;
68
- feature_always_full_sync?: number;
69
- feature_nfs_async?: number;
70
- }
71
- export interface GenuineMongoDBDetails {
72
- isGenuine: boolean;
73
- dbType: string;
74
- }
75
- export interface BuildInfoDetails {
76
- version: string;
77
- commit: string;
78
- commit_url: string;
79
- flags_loader: any;
80
- flags_compiler: any;
81
- allocator: string;
82
- javascript_engine: string;
83
- debug: boolean;
84
- for_bits: number;
85
- max_bson_object_size: number;
86
- enterprise_module: boolean;
87
- query_engine: any;
88
- raw: Document;
89
- }
90
- export interface InstanceDatabaseStats {
91
- document_count: number;
92
- storage_size: number;
93
- index_count: number;
94
- index_size: number;
95
- }
96
- export interface DataLakeDetails {
97
- isDataLake: boolean;
98
- version: string;
99
- }
100
7
  export interface CollectionStats {
101
8
  ns: string;
102
9
  name: string;
@@ -105,11 +12,13 @@ export interface CollectionStats {
105
12
  max?: number;
106
13
  is_power_of_two: boolean;
107
14
  index_sizes?: CollStats['indexSizes'];
108
- document_count: CollStats['documentCount'];
15
+ document_count: CollStats['count'];
109
16
  document_size?: CollStats['size'];
110
- storage_size?: CollStats['storageSize'];
111
- index_count?: CollStats['nindexes'];
112
- index_size?: CollStats['totalIndexSize'];
17
+ avg_document_size: number;
18
+ storage_size: number;
19
+ free_storage_size: number;
20
+ index_count: number;
21
+ index_size: number;
113
22
  padding_factor?: CollStats['paddingFactor'];
114
23
  extent_count?: CollStats['numExtents'];
115
24
  extent_last_size?: CollStats['lastExtentSize'];
package/package.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "email": "compass@mongodb.com"
8
8
  },
9
9
  "homepage": "https://github.com/mongodb-js/compass",
10
- "version": "21.11.0",
10
+ "version": "21.15.0",
11
11
  "repository": {
12
12
  "type": "git",
13
13
  "url": "https://github.com/mongodb-js/compass.git"
14
14
  },
15
15
  "engines": {
16
- "node": ">=12"
16
+ "node": ">=14.17.5"
17
17
  },
18
18
  "license": "SSPL",
19
19
  "keywords": [
@@ -21,6 +21,7 @@
21
21
  ],
22
22
  "main": "lib/index.js",
23
23
  "exports": {
24
+ "webpack": "./src/index.ts",
24
25
  "require": "./lib/index.js",
25
26
  "import": "./lib/.esm-wrapper.mjs"
26
27
  },
@@ -35,14 +36,14 @@
35
36
  "prepublishOnly": "npm run compile",
36
37
  "clean": "rimraf lib",
37
38
  "precompile": "npm run clean",
38
- "compile": "tsc -p tsconfig.json && gen-esm-wrapper . ./lib/.esm-wrapper.mjs",
39
+ "compile": "tsc -p tsconfig.json",
39
40
  "depcheck": "depcheck",
40
41
  "eslint": "eslint",
41
42
  "prettier": "prettier",
42
43
  "lint": "npm run eslint . && npm run prettier -- --check .",
43
44
  "check": "npm run lint && npm run depcheck",
44
45
  "check-ci": "npm run check",
45
- "pretest": "npm run compile && mongodb-runner start --port=27018 && node ../../scripts/rebuild.js keytar",
46
+ "pretest": "mongodb-runner start --port=27018 && node ../../scripts/rebuild.js keytar",
46
47
  "test": "mocha",
47
48
  "posttest": "mongodb-runner stop --port=27018",
48
49
  "test-cov": "nyc -x \"**/*.spec.*\" npm run test",
@@ -52,30 +53,29 @@
52
53
  "reformat": "npm run prettier -- --write ."
53
54
  },
54
55
  "peerDependencies": {
55
- "mongodb": "^4.1.0",
56
+ "mongodb": "^4.2.2",
56
57
  "mongodb-connection-model": "*"
57
58
  },
58
59
  "dependencies": {
59
- "@mongodb-js/compass-logging": "^0.2.0",
60
- "@mongodb-js/ssh-tunnel": "^1.2.0",
60
+ "@mongodb-js/compass-logging": "^0.6.0",
61
+ "@mongodb-js/ssh-tunnel": "^1.2.1",
61
62
  "async": "^3.2.0",
62
- "debug": "^4.2.0",
63
+ "debug": "4.3.0",
64
+ "get-port": "^5.1.1",
63
65
  "lodash": "^4.17.20",
64
- "mongodb-build-info": "^1.1.1",
65
- "mongodb-connection-string-url": "^1.0.1",
66
- "mongodb-index-model": "^3.5.0",
67
- "mongodb-js-errors": "^0.5.0",
66
+ "mongodb-build-info": "^1.3.0",
67
+ "mongodb-connection-string-url": "^2.4.1",
68
+ "mongodb-index-model": "^3.7.0",
68
69
  "mongodb-ns": "^2.2.0",
69
- "mongodb-security": "^1.3.0",
70
- "resolve-mongodb-srv": "^1.1.0",
70
+ "resolve-mongodb-srv": "^1.1.1",
71
71
  "uuid": "^8.3.2"
72
72
  },
73
73
  "devDependencies": {
74
- "@mongodb-js/devtools-docker-test-envs": "^1.0.1",
75
- "@mongodb-js/eslint-config-compass": "^0.3.0",
76
- "@mongodb-js/mocha-config-compass": "^0.3.0",
77
- "@mongodb-js/prettier-config-compass": "^0.2.0",
78
- "@mongodb-js/tsconfig-compass": "^0.2.0",
74
+ "@mongodb-js/devtools-docker-test-envs": "^1.2.2",
75
+ "@mongodb-js/eslint-config-compass": "^0.5.0",
76
+ "@mongodb-js/mocha-config-compass": "^0.7.0",
77
+ "@mongodb-js/prettier-config-compass": "^0.4.0",
78
+ "@mongodb-js/tsconfig-compass": "^0.4.0",
79
79
  "@types/async": "^3.2.7",
80
80
  "@types/debug": "^4.1.7",
81
81
  "@types/lodash": "^4.14.172",
@@ -85,18 +85,17 @@
85
85
  "chai": "^4.2.0",
86
86
  "depcheck": "^1.4.1",
87
87
  "eslint": "^7.25.0",
88
+ "kerberos": "^2.0.0-beta.0",
88
89
  "mocha": "^8.4.0",
89
- "mock-require": "^3.0.3",
90
- "mongodb": "^4.1.0",
91
- "mongodb-connection-model": "^21.8.0",
90
+ "mongodb": "^4.2.1",
91
+ "mongodb-connection-model": "^21.11.0",
92
92
  "mongodb-runner": "^4.8.3",
93
93
  "nyc": "^15.0.0",
94
94
  "prettier": "2.3.2",
95
95
  "rimraf": "^3.0.2",
96
96
  "sinon": "^9.2.3",
97
- "sinon-chai": "^3.5.0",
98
- "storage-mixin": "^4.7.0",
97
+ "storage-mixin": "^4.9.0",
99
98
  "typescript": "^4.3.5"
100
99
  },
101
- "gitHead": "455c6523f99a08c6796480d59727b53bdfa441f0"
100
+ "gitHead": "542e3fa07d48435b1a7acc21c96de20562b843b3"
102
101
  }
@@ -1,3 +0,0 @@
1
- import mod from "./index.js";
2
-
3
- export default mod;
@@ -1,7 +0,0 @@
1
- import { MongoClientOptions, MongoClient } from 'mongodb';
2
- import SSHTunnel from '@mongodb-js/ssh-tunnel';
3
- import { LegacyConnectionModel } from './legacy-connection-model';
4
- export default function connectCallback(model: LegacyConnectionModel, setupListeners: (client: MongoClient) => void, done: (err: Error | null, client: MongoClient, tunnel: SSHTunnel | null, options: {
5
- url: string;
6
- options: MongoClientOptions;
7
- }) => void): void;
@@ -1,123 +0,0 @@
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
- const events_1 = require("events");
7
- const mongodb_1 = require("mongodb");
8
- const ssh_tunnel_1 = __importDefault(require("@mongodb-js/ssh-tunnel"));
9
- const mongodb_connection_string_url_1 = __importDefault(require("mongodb-connection-string-url"));
10
- const resolve_mongodb_srv_1 = __importDefault(require("resolve-mongodb-srv"));
11
- const redact_1 = require("./redact");
12
- const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
13
- const debug_1 = __importDefault(require("debug"));
14
- const debug = debug_1.default('mongodb-data-service:connect');
15
- const { log, mongoLogId } = compass_logging_1.default('COMPASS-CONNECT');
16
- function removeGssapiServiceName(url) {
17
- const uri = new mongodb_connection_string_url_1.default(url);
18
- uri.searchParams.delete('gssapiServiceName');
19
- return uri.toString();
20
- }
21
- async function openSshTunnel(model) {
22
- if (!model.sshTunnel ||
23
- model.sshTunnel === 'NONE' ||
24
- !model.sshTunnelOptions) {
25
- return null;
26
- }
27
- log.info(mongoLogId(1001000006), 'SSHTunnel', 'Creating SSH tunnel', redact_1.redactSshTunnelOptions(model.sshTunnelOptions));
28
- debug('creating ssh tunnel with options', model.sshTunnel, redact_1.redactSshTunnelOptions(model.sshTunnelOptions));
29
- const tunnel = new ssh_tunnel_1.default(model.sshTunnelOptions);
30
- debug('ssh tunnel listen ...');
31
- await tunnel.listen();
32
- debug('ssh tunnel opened');
33
- log.info(mongoLogId(1001000007), 'SSHTunnel', 'SSH tunnel opened');
34
- return tunnel;
35
- }
36
- async function forceCloseTunnel(tunnelToClose) {
37
- if (tunnelToClose) {
38
- log.info(mongoLogId(1001000008), 'SSHTunnel', 'Closing SSH tunnel');
39
- try {
40
- await tunnelToClose.close();
41
- debug('ssh tunnel stopped');
42
- }
43
- catch (err) {
44
- debug('ssh tunnel stopped with error: %s', err.message);
45
- }
46
- }
47
- }
48
- async function waitForTunnelError(tunnel) {
49
- const [error] = await events_1.once(tunnel || new events_1.EventEmitter(), 'error');
50
- throw error;
51
- }
52
- function addDirectConnectionWhenNeeded(options, model) {
53
- var _a;
54
- if (model.directConnection === undefined &&
55
- ((_a = model.hosts) === null || _a === void 0 ? void 0 : _a.length) === 1 &&
56
- !model.isSrvRecord &&
57
- !model.loadBalanced &&
58
- (model.replicaSet === undefined || model.replicaSet === '')) {
59
- return {
60
- ...options,
61
- directConnection: true,
62
- };
63
- }
64
- return options;
65
- }
66
- async function connect(model, setupListeners) {
67
- debug('connecting ...');
68
- const url = removeGssapiServiceName(model.driverUrlWithSsh);
69
- const options = {
70
- ...addDirectConnectionWhenNeeded(model.driverOptions, model),
71
- };
72
- delete options.auth;
73
- const tunnel = await openSshTunnel(model);
74
- debug('creating MongoClient', {
75
- url: redact_1.redactConnectionString(url),
76
- options,
77
- });
78
- log.info(mongoLogId(1001000009), 'Connect', 'Initiating connection', {
79
- url: redact_1.redactConnectionString(url),
80
- options,
81
- });
82
- let resolvedUrl;
83
- try {
84
- resolvedUrl = await resolve_mongodb_srv_1.default(url);
85
- log.info(mongoLogId(1001000010), 'Connect', 'Resolved SRV record', {
86
- from: redact_1.redactConnectionString(url),
87
- to: redact_1.redactConnectionString(resolvedUrl),
88
- });
89
- }
90
- catch (error) {
91
- log.error(mongoLogId(1001000011), 'Connect', 'Resolving SRV record failed', { from: redact_1.redactConnectionString(url), error: error.message });
92
- throw error;
93
- }
94
- const mongoClient = new mongodb_1.MongoClient(resolvedUrl, options);
95
- if (setupListeners) {
96
- setupListeners(mongoClient);
97
- }
98
- try {
99
- debug('waiting for MongoClient to connect ...');
100
- const client = (await Promise.race([
101
- mongoClient.connect(),
102
- waitForTunnelError(tunnel),
103
- ]));
104
- log.info(mongoLogId(1001000012), 'Connect', 'Connection established', {
105
- url: redact_1.redactConnectionString(url),
106
- });
107
- return [client, tunnel, { url, options }];
108
- }
109
- catch (err) {
110
- log.error(mongoLogId(1001000013), 'Connect', 'Connection attempt failed', { error: err.message });
111
- debug('connection error', err);
112
- debug('force shutting down ssh tunnel ...');
113
- await forceCloseTunnel(tunnel);
114
- throw err;
115
- }
116
- }
117
- function connectCallback(model, setupListeners, done) {
118
- connect(model, setupListeners).then(([client, tunnel, options]) => process.nextTick(() => done(null, client, tunnel, options)), (err) => process.nextTick(() => {
119
- return done(err);
120
- }));
121
- }
122
- exports.default = connectCallback;
123
- //# sourceMappingURL=legacy-connect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"legacy-connect.js","sourceRoot":"","sources":["../src/legacy-connect.ts"],"names":[],"mappings":"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"}
@@ -1,158 +0,0 @@
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.convertConnectionOptionsToModel = exports.convertConnectionModelToOptions = void 0;
7
- const mongodb_connection_string_url_1 = __importDefault(require("mongodb-connection-string-url"));
8
- const util_1 = require("util");
9
- const ConnectionModel = require('mongodb-connection-model');
10
- function convertConnectionModelToOptions(model) {
11
- const options = {
12
- id: model._id,
13
- connectionString: model.driverUrl,
14
- };
15
- convertSslPropertiesToConnectionOptions(model, options);
16
- if (model.sslCert && model.sslCert !== model.sslKey) {
17
- options.tlsCertificateFile = model.sslCert;
18
- }
19
- if (model.sshTunnel !== 'NONE' &&
20
- model.sshTunnelHostname &&
21
- model.sshTunnelUsername) {
22
- options.sshTunnel = {
23
- host: model.sshTunnelHostname,
24
- port: model.sshTunnelPort,
25
- username: model.sshTunnelUsername,
26
- };
27
- if (model.sshTunnelPassword !== undefined) {
28
- options.sshTunnel.password = model.sshTunnelPassword;
29
- }
30
- if (model.sshTunnelIdentityFile !== undefined) {
31
- options.sshTunnel.privateKeyFile = model.sshTunnelIdentityFile;
32
- }
33
- if (model.sshTunnelPassphrase !== undefined) {
34
- options.sshTunnel.privateKeyPassphrase = model.sshTunnelPassphrase;
35
- }
36
- }
37
- if (model.isFavorite) {
38
- options.favorite = {
39
- name: model.name,
40
- color: model.color,
41
- };
42
- }
43
- return options;
44
- }
45
- exports.convertConnectionModelToOptions = convertConnectionModelToOptions;
46
- function convertSslPropertiesToConnectionOptions(model, options) {
47
- const url = new mongodb_connection_string_url_1.default(options.connectionString);
48
- switch (model.sslMethod) {
49
- case 'SERVER':
50
- url.searchParams.set('tlsAllowInvalidCertificates', 'false');
51
- convertSslCAToConnectionString(model.sslCA, url);
52
- break;
53
- case 'ALL':
54
- url.searchParams.set('tlsAllowInvalidCertificates', 'false');
55
- convertSslCAToConnectionString(model.sslCA, url);
56
- if (model.sslCert && model.sslCert !== model.sslKey) {
57
- options.tlsCertificateFile = model.sslCert;
58
- }
59
- if (model.sslKey) {
60
- url.searchParams.set('tlsCertificateKeyFile', model.sslKey);
61
- }
62
- if (model.sslPass) {
63
- url.searchParams.set('tlsCertificateKeyFilePassword', model.sslPass);
64
- }
65
- break;
66
- case 'UNVALIDATED':
67
- url.searchParams.set('tlsAllowInvalidCertificates', 'true');
68
- url.searchParams.set('tlsAllowInvalidHostnames', 'true');
69
- break;
70
- case 'SYSTEMCA':
71
- url.searchParams.set('tlsAllowInvalidCertificates', 'false');
72
- url.searchParams.set('tlsAllowInvalidHostnames', 'false');
73
- break;
74
- case 'IFAVAILABLE':
75
- url.searchParams.set('tlsAllowInvalidCertificates', 'false');
76
- url.searchParams.set('tlsAllowInvalidHostnames', 'true');
77
- break;
78
- }
79
- options.connectionString = url.toString();
80
- }
81
- function convertSslCAToConnectionString(sslCA, url) {
82
- if (!sslCA) {
83
- return;
84
- }
85
- if (typeof sslCA === 'string') {
86
- url.searchParams.set('tlsCAFile', sslCA);
87
- }
88
- else if (Array.isArray(sslCA) && sslCA.length > 0) {
89
- url.searchParams.set('tlsCAFile', sslCA[0]);
90
- }
91
- }
92
- async function convertConnectionOptionsToModel(options) {
93
- const connection = await util_1.promisify(ConnectionModel.from)(options.connectionString);
94
- const additionalOptions = {
95
- _id: options.id,
96
- };
97
- convertSslOptionsToLegacyProperties(options, additionalOptions);
98
- if (options.sshTunnel) {
99
- additionalOptions.sshTunnel = !options.sshTunnel.privateKeyFile
100
- ? 'USER_PASSWORD'
101
- : 'IDENTITY_FILE';
102
- additionalOptions.sshTunnelHostname = options.sshTunnel.host;
103
- additionalOptions.sshTunnelUsername = options.sshTunnel.username;
104
- additionalOptions.sshTunnelPassword = options.sshTunnel.password;
105
- additionalOptions.sshTunnelIdentityFile = options.sshTunnel.privateKeyFile;
106
- additionalOptions.sshTunnelPassphrase =
107
- options.sshTunnel.privateKeyPassphrase;
108
- }
109
- if (options.favorite) {
110
- additionalOptions.isFavorite = true;
111
- additionalOptions.name = options.favorite.name;
112
- additionalOptions.color = options.favorite.color;
113
- }
114
- return new ConnectionModel({
115
- ...connection.toJSON(),
116
- ...additionalOptions,
117
- });
118
- }
119
- exports.convertConnectionOptionsToModel = convertConnectionOptionsToModel;
120
- function convertSslOptionsToLegacyProperties(options, properties) {
121
- var _a;
122
- const url = new mongodb_connection_string_url_1.default(options.connectionString);
123
- const tlsAllowInvalidCertificates = url.searchParams.get('tlsAllowInvalidCertificates');
124
- const tlsAllowInvalidHostnames = url.searchParams.get('tlsAllowInvalidHostnames');
125
- const tlsCAFile = url.searchParams.get('tlsCAFile');
126
- const tlsCertificateKeyFile = url.searchParams.get('tlsCertificateKeyFile');
127
- const tlsCertificateKeyFilePassword = url.searchParams.get('tlsCertificateKeyFilePassword');
128
- if (tlsAllowInvalidCertificates === 'false' && tlsCAFile) {
129
- properties.sslMethod = 'SERVER';
130
- properties.sslCert = undefined;
131
- properties.sslKey = undefined;
132
- if (options.tlsCertificateFile || tlsCertificateKeyFile) {
133
- properties.sslMethod = 'ALL';
134
- properties.sslCert = (_a = options.tlsCertificateFile) !== null && _a !== void 0 ? _a : tlsCertificateKeyFile;
135
- properties.sslKey = tlsCertificateKeyFile !== null && tlsCertificateKeyFile !== void 0 ? tlsCertificateKeyFile : undefined;
136
- properties.sslPass = tlsCertificateKeyFilePassword !== null && tlsCertificateKeyFilePassword !== void 0 ? tlsCertificateKeyFilePassword : undefined;
137
- }
138
- }
139
- else {
140
- properties.sslCA = undefined;
141
- properties.sslCert = undefined;
142
- properties.sslKey = undefined;
143
- properties.sslPass = undefined;
144
- if (tlsAllowInvalidCertificates === 'true' &&
145
- tlsAllowInvalidHostnames === 'true') {
146
- properties.sslMethod = 'UNVALIDATED';
147
- }
148
- else if (tlsAllowInvalidCertificates === 'false' &&
149
- tlsAllowInvalidHostnames === 'false') {
150
- properties.sslMethod = 'SYSTEMCA';
151
- }
152
- else if (tlsAllowInvalidCertificates === 'false' &&
153
- tlsAllowInvalidHostnames === 'true') {
154
- properties.sslMethod = 'IFAVAILABLE';
155
- }
156
- }
157
- }
158
- //# sourceMappingURL=legacy-connection-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"legacy-connection-model.js","sourceRoot":"","sources":["../src/legacy-connection-model.ts"],"names":[],"mappings":"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"}