mongodb-data-service 21.10.0 → 21.14.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 (51) 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 +88 -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 -10
  11. package/lib/connection-secrets.d.ts +13 -0
  12. package/lib/connection-secrets.js +96 -0
  13. package/lib/connection-secrets.js.map +1 -0
  14. package/lib/connection-storage.d.ts +6 -0
  15. package/lib/connection-storage.js +45 -0
  16. package/lib/connection-storage.js.map +1 -0
  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 +62 -18
  21. package/lib/data-service.js +784 -75
  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 +78 -32
  27. package/lib/instance-detail-helper.js +144 -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} +25 -8
  30. package/lib/legacy/legacy-connection-model.js +203 -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 +2 -95
  42. package/package.json +26 -22
  43. package/lib/.esm-wrapper.mjs +0 -3
  44. package/lib/legacy-connect.d.ts +0 -7
  45. package/lib/legacy-connect.js +0 -97
  46. package/lib/legacy-connect.js.map +0 -1
  47. package/lib/legacy-connection-model.js +0 -62
  48. package/lib/legacy-connection-model.js.map +0 -1
  49. package/lib/native-client.d.ts +0 -92
  50. package/lib/native-client.js +0 -640
  51. package/lib/native-client.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,7 +12,7 @@ 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
17
  storage_size?: CollStats['storageSize'];
111
18
  index_count?: CollStats['nindexes'];
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.10.0",
10
+ "version": "21.14.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,46 +53,49 @@
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/ssh-tunnel": "^1.2.0",
60
+ "@mongodb-js/compass-logging": "^0.5.0",
61
+ "@mongodb-js/ssh-tunnel": "^1.2.1",
60
62
  "async": "^3.2.0",
61
- "debug": "^4.2.0",
63
+ "debug": "4.3.0",
64
+ "get-port": "^5.1.1",
62
65
  "lodash": "^4.17.20",
63
- "mongodb-build-info": "^1.1.1",
64
- "mongodb-connection-string-url": "^1.0.1",
65
- "mongodb-index-model": "^3.5.0",
66
- "mongodb-js-errors": "^0.5.0",
66
+ "mongodb-build-info": "^1.3.0",
67
+ "mongodb-connection-string-url": "^2.3.2",
68
+ "mongodb-index-model": "^3.7.0",
67
69
  "mongodb-ns": "^2.2.0",
68
- "mongodb-security": "^1.3.0"
70
+ "resolve-mongodb-srv": "^1.1.1",
71
+ "uuid": "^8.3.2"
69
72
  },
70
73
  "devDependencies": {
71
- "@mongodb-js/devtools-docker-test-envs": "^1.0.1",
72
- "@mongodb-js/eslint-config-compass": "^0.2.0",
73
- "@mongodb-js/mocha-config-compass": "^0.3.0",
74
- "@mongodb-js/prettier-config-compass": "^0.2.0",
75
- "@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.6.0",
77
+ "@mongodb-js/prettier-config-compass": "^0.4.0",
78
+ "@mongodb-js/tsconfig-compass": "^0.4.0",
76
79
  "@types/async": "^3.2.7",
77
80
  "@types/debug": "^4.1.7",
78
81
  "@types/lodash": "^4.14.172",
82
+ "@types/uuid": "^8.3.1",
79
83
  "@types/whatwg-url": "^8.2.1",
80
84
  "bson": "^4.4.1",
81
85
  "chai": "^4.2.0",
82
86
  "depcheck": "^1.4.1",
83
87
  "eslint": "^7.25.0",
88
+ "kerberos": "^2.0.0-beta.0",
84
89
  "mocha": "^8.4.0",
85
- "mock-require": "^3.0.3",
86
- "mongodb": "^4.1.0",
87
- "mongodb-connection-model": "^21.7.0",
90
+ "mongodb": "^4.2.1",
91
+ "mongodb-connection-model": "^21.10.0",
88
92
  "mongodb-runner": "^4.8.3",
89
93
  "nyc": "^15.0.0",
90
94
  "prettier": "2.3.2",
91
95
  "rimraf": "^3.0.2",
92
96
  "sinon": "^9.2.3",
93
- "sinon-chai": "^3.5.0",
97
+ "storage-mixin": "^4.9.0",
94
98
  "typescript": "^4.3.5"
95
99
  },
96
- "gitHead": "53d12240166d7650ddcb66a7bf6864147b5e36cb"
100
+ "gitHead": "77166e3754e36e95c7ff7efb5a0ce5e0990b0ff7"
97
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,97 +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 redact_1 = require("./redact");
11
- const debug_1 = __importDefault(require("debug"));
12
- const debug = debug_1.default('mongodb-data-service:connect');
13
- function removeGssapiServiceName(url) {
14
- const uri = new mongodb_connection_string_url_1.default(url);
15
- uri.searchParams.delete('gssapiServiceName');
16
- return uri.toString();
17
- }
18
- async function openSshTunnel(model) {
19
- if (!model.sshTunnel ||
20
- model.sshTunnel === 'NONE' ||
21
- !model.sshTunnelOptions) {
22
- return null;
23
- }
24
- debug('creating ssh tunnel with options', model.sshTunnel, redact_1.redactSshTunnelOptions(model.sshTunnelOptions));
25
- const tunnel = new ssh_tunnel_1.default(model.sshTunnelOptions);
26
- debug('ssh tunnel listen ...');
27
- await tunnel.listen();
28
- debug('ssh tunnel opened');
29
- return tunnel;
30
- }
31
- async function forceCloseTunnel(tunnelToClose) {
32
- if (tunnelToClose) {
33
- try {
34
- await tunnelToClose.close();
35
- debug('ssh tunnel stopped');
36
- }
37
- catch (err) {
38
- debug('ssh tunnel stopped with error: %s', err.message);
39
- }
40
- }
41
- }
42
- async function waitForTunnelError(tunnel) {
43
- const [error] = await events_1.once(tunnel || new events_1.EventEmitter(), 'error');
44
- throw error;
45
- }
46
- function addDirectConnectionWhenNeeded(options, model) {
47
- var _a;
48
- if (model.directConnection === undefined &&
49
- ((_a = model.hosts) === null || _a === void 0 ? void 0 : _a.length) === 1 &&
50
- !model.isSrvRecord &&
51
- !model.loadBalanced &&
52
- (model.replicaSet === undefined || model.replicaSet === '')) {
53
- return {
54
- ...options,
55
- directConnection: true,
56
- };
57
- }
58
- return options;
59
- }
60
- async function connect(model, setupListeners) {
61
- debug('connecting ...');
62
- const url = removeGssapiServiceName(model.driverUrlWithSsh);
63
- const options = {
64
- ...addDirectConnectionWhenNeeded(model.driverOptions, model),
65
- };
66
- delete options.auth;
67
- const tunnel = await openSshTunnel(model);
68
- debug('creating MongoClient', {
69
- url: redact_1.redactConnectionString(url),
70
- options,
71
- });
72
- const mongoClient = new mongodb_1.MongoClient(url, options);
73
- if (setupListeners) {
74
- setupListeners(mongoClient);
75
- }
76
- try {
77
- debug('waiting for MongoClient to connect ...');
78
- const client = (await Promise.race([
79
- mongoClient.connect(),
80
- waitForTunnelError(tunnel),
81
- ]));
82
- return [client, tunnel, { url, options }];
83
- }
84
- catch (err) {
85
- debug('connection error', err);
86
- debug('force shutting down ssh tunnel ...');
87
- await forceCloseTunnel(tunnel);
88
- throw err;
89
- }
90
- }
91
- function connectCallback(model, setupListeners, done) {
92
- connect(model, setupListeners).then(([client, tunnel, options]) => process.nextTick(() => done(null, client, tunnel, options)), (err) => process.nextTick(() => {
93
- return done(err);
94
- }));
95
- }
96
- exports.default = connectCallback;
97
- //# 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,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertConnectionOptionsToModel = exports.convertConnectionModelToOptions = void 0;
4
- const util_1 = require("util");
5
- const ConnectionModel = require('mongodb-connection-model');
6
- function convertConnectionModelToOptions(model) {
7
- const options = {
8
- connectionString: model.driverUrl,
9
- };
10
- if (model.sshTunnel !== 'NONE' &&
11
- model.sshTunnelHostname &&
12
- model.sshTunnelUsername) {
13
- options.sshTunnel = {
14
- host: model.sshTunnelHostname,
15
- port: model.sshTunnelPort,
16
- username: model.sshTunnelUsername,
17
- };
18
- if (model.sshTunnelPassword !== undefined) {
19
- options.sshTunnel.password = model.sshTunnelPassword;
20
- }
21
- if (model.sshTunnelIdentityFile !== undefined) {
22
- options.sshTunnel.privateKeyFile = model.sshTunnelIdentityFile;
23
- }
24
- if (model.sshTunnelPassphrase !== undefined) {
25
- options.sshTunnel.privateKeyPassphrase = model.sshTunnelPassphrase;
26
- }
27
- }
28
- if (model.isFavorite) {
29
- options.favorite = {
30
- name: model.name,
31
- color: model.color,
32
- };
33
- }
34
- return options;
35
- }
36
- exports.convertConnectionModelToOptions = convertConnectionModelToOptions;
37
- async function convertConnectionOptionsToModel(options) {
38
- const connection = await util_1.promisify(ConnectionModel.from)(options.connectionString);
39
- const additionalOptions = {};
40
- if (options.sshTunnel) {
41
- additionalOptions.sshTunnel = !options.sshTunnel.privateKeyFile
42
- ? 'USER_PASSWORD'
43
- : 'IDENTITY_FILE';
44
- additionalOptions.sshTunnelHostname = options.sshTunnel.host;
45
- additionalOptions.sshTunnelUsername = options.sshTunnel.username;
46
- additionalOptions.sshTunnelPassword = options.sshTunnel.password;
47
- additionalOptions.sshTunnelIdentityFile = options.sshTunnel.privateKeyFile;
48
- additionalOptions.sshTunnelPassphrase =
49
- options.sshTunnel.privateKeyPassphrase;
50
- }
51
- if (options.favorite) {
52
- additionalOptions.isFavorite = true;
53
- additionalOptions.name = options.favorite.name;
54
- additionalOptions.color = options.favorite.color;
55
- }
56
- return new ConnectionModel({
57
- ...connection.toJSON(),
58
- ...additionalOptions,
59
- });
60
- }
61
- exports.convertConnectionOptionsToModel = convertConnectionOptionsToModel;
62
- //# 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":";;;AAEA,+BAAiC;AAIjC,MAAM,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAsH5D,SAAgB,+BAA+B,CAC7C,KAA4B;IAE5B,MAAM,OAAO,GAAsB;QACjC,gBAAgB,EAAE,KAAK,CAAC,SAAS;KAClC,CAAC;IAEF,IACE,KAAK,CAAC,SAAS,KAAK,MAAM;QAC1B,KAAK,CAAC,iBAAiB;QACvB,KAAK,CAAC,iBAAiB,EACvB;QACA,OAAO,CAAC,SAAS,GAAG;YAClB,IAAI,EAAE,KAAK,CAAC,iBAAiB;YAC7B,IAAI,EAAE,KAAK,CAAC,aAAa;YACzB,QAAQ,EAAE,KAAK,CAAC,iBAAiB;SAClC,CAAC;QACF,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACzC,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC;SACtD;QACD,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE;YAC7C,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC,qBAAqB,CAAC;SAChE;QACD,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,EAAE;YAC3C,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,KAAK,CAAC,mBAAmB,CAAC;SACpE;KACF;IAED,IAAI,KAAK,CAAC,UAAU,EAAE;QACpB,OAAO,CAAC,QAAQ,GAAG;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;KACH;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AApCD,0EAoCC;AAEM,KAAK,UAAU,+BAA+B,CACnD,OAA0B;IAE1B,MAAM,UAAU,GAA0B,MAAM,gBAAS,CACvD,eAAe,CAAC,IAAI,CACrB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5B,MAAM,iBAAiB,GAA6C,EAAE,CAAC;IAEvE,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,iBAAiB,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc;YAC7D,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,eAAe,CAAC;QACpB,iBAAiB,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7D,iBAAiB,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjE,iBAAiB,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjE,iBAAiB,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;QAC3E,iBAAiB,CAAC,mBAAmB;YACnC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC;KAC1C;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;QACpC,iBAAiB,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/C,iBAAiB,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;KAClD;IAED,OAAO,IAAI,eAAe,CAAC;QACzB,GAAG,UAAU,CAAC,MAAM,EAAE;QACtB,GAAG,iBAAiB;KACrB,CAAC,CAAC;AACL,CAAC;AA/BD,0EA+BC"}
@@ -1,92 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import { AggregateOptions, AggregationCursor, BulkWriteOptions, ClientSession, Collection, CollectionInfo, CollStats, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, Db, DeleteOptions, DeleteResult, Document, EstimatedDocumentCountOptions, Filter, FindCursor, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexSpecification, InsertManyResult, InsertOneOptions, InsertOneResult, MongoClient, MongoClientOptions, TopologyDescriptionChangedEvent, UpdateFilter, UpdateOptions, UpdateResult } from 'mongodb';
4
- import { LegacyConnectionModel } from './legacy-connection-model';
5
- import SSHTunnel from '@mongodb-js/ssh-tunnel';
6
- import { Callback, CollectionDetails, CollectionStats, Instance, IndexDetails } from './types';
7
- export declare type NativeClientConnectionOptions = {
8
- url: string;
9
- options: MongoClientOptions;
10
- };
11
- declare class NativeClient extends EventEmitter {
12
- readonly model: LegacyConnectionModel;
13
- connectionOptions?: NativeClientConnectionOptions;
14
- tunnel?: SSHTunnel | null;
15
- isWritable: boolean;
16
- isMongos: boolean;
17
- _isConnecting: boolean;
18
- private _client?;
19
- private _database?;
20
- constructor(model: LegacyConnectionModel);
21
- get database(): Db;
22
- get client(): MongoClient;
23
- isConnected(): boolean;
24
- connect(done: Callback<NativeClient>): NativeClient;
25
- setupListeners(client: MongoClient): void;
26
- command(databaseName: string, comm: Document, callback: Callback<Document>): void;
27
- estimatedCount(ns: string, options: EstimatedDocumentCountOptions, callback: Callback<number>): void;
28
- count(ns: string, filter: Filter<Document>, options: CountDocumentsOptions, callback: Callback<number>): void;
29
- collectionDetail(ns: string, callback: Callback<CollectionDetails>): void;
30
- listCollections(databaseName: string, filter: Document, callback: Callback<CollectionInfo[]>): void;
31
- listDatabases(callback: Callback<Document>): void;
32
- collections(databaseName: string, callback: Callback<CollectionStats[]>): void;
33
- collectionNames(databaseName: string, callback: Callback<string[]>): void;
34
- currentOp(includeAll: boolean, callback: Callback<Document>): void;
35
- serverStats(callback: Callback<Document>): void;
36
- top(callback: Callback<Document>): void;
37
- collectionStats(databaseName: string, collectionName: string, callback: Callback<CollectionStats>): void;
38
- createCollection(ns: string, options: CreateCollectionOptions, callback: Callback<Collection<Document>>): void;
39
- createIndex(ns: string, spec: IndexSpecification, options: CreateIndexesOptions, callback: Callback<string>): void;
40
- databaseDetail(name: string, callback: Callback<Document>): void;
41
- databaseStats(name: string, callback: Callback<Document>): void;
42
- deleteOne(ns: string, filter: Filter<Document>, options: DeleteOptions, callback: Callback<DeleteResult>): void;
43
- deleteMany(ns: string, filter: Filter<Document>, options: DeleteOptions, callback: Callback<DeleteResult>): void;
44
- disconnect(callback: Callback<never>): void;
45
- dropCollection(ns: string, callback: Callback<boolean>): void;
46
- dropDatabase(name: string, callback: Callback<boolean>): void;
47
- dropIndex(ns: string, name: string, callback: Callback<Document>): void;
48
- aggregate(ns: string, pipeline: Document[], options?: AggregateOptions): AggregationCursor;
49
- aggregate(ns: string, pipeline: Document[], callback: Callback<AggregationCursor>): void;
50
- aggregate(ns: string, pipeline: Document[], options: AggregateOptions | undefined, callback: Callback<AggregationCursor>): void;
51
- find(ns: string, filter: Filter<Document> | undefined, options: FindOptions<Document> | undefined, callback: Callback<Document[]>): void;
52
- fetch(ns: string, filter: Filter<Document>, options: FindOptions): FindCursor;
53
- findOneAndReplace(ns: string, filter: Filter<Document>, replacement: Document, options: FindOneAndReplaceOptions, callback: Callback<Document>): void;
54
- findOneAndUpdate(ns: string, filter: Filter<Document>, update: Document, options: FindOneAndUpdateOptions, callback: Callback<Document>): void;
55
- explain(ns: string, filter: Filter<Document>, options: FindOptions, callback: Callback<Document>): void;
56
- indexes(ns: string, callback: Callback<IndexDetails[]>): void;
57
- insertOne(ns: string, doc: Document, options: InsertOneOptions, callback: Callback<InsertOneResult<Document>>): void;
58
- insertMany(ns: string, docs: Document[], options: BulkWriteOptions, callback: Callback<InsertManyResult<Document>>): void;
59
- putMany(ns: string, docs: Document[], options: BulkWriteOptions): Promise<InsertManyResult<Document>>;
60
- instance(callback: Callback<Instance>): void;
61
- sample(ns: string, { query, size, fields, }?: {
62
- query?: Filter<Document>;
63
- size?: number;
64
- fields?: Document;
65
- }, options?: AggregateOptions): AggregationCursor;
66
- startSession(): ClientSession;
67
- killSession(clientSession: ClientSession): Promise<Document>;
68
- updateCollection(ns: string, flags: Document & {
69
- collMod?: never;
70
- }, callback: Callback<Document>): void;
71
- updateOne(ns: string, filter: Filter<Document>, update: UpdateFilter<Document> | Document, options: UpdateOptions, callback: Callback<Document | UpdateResult>): void;
72
- updateMany(ns: string, filter: Filter<Document>, update: UpdateFilter<Document>, options: UpdateOptions, callback: Callback<Document | UpdateResult>): void;
73
- createView(name: string, sourceNs: string, pipeline: Document[], options: CreateCollectionOptions, callback: Callback<Collection<Document>>): void;
74
- updateView(name: string, sourceNs: string, pipeline: Document[], options: Document, callback: Callback<Document>): void;
75
- dropView(ns: string, callback: Callback<boolean>): void;
76
- private _buildCollectionDetail;
77
- _buildCollectionStats(databaseName: string, collectionName: string, data: Partial<CollStats>): CollectionStats;
78
- _buildDatabaseDetail(name: string, db: Document): Document;
79
- _buildDatabaseStats(data: Document): Document;
80
- _collection(ns: string): Collection;
81
- _collectionName(ns: string): string;
82
- _databaseName(ns: string): string;
83
- _isWritable(evt: TopologyDescriptionChangedEvent): boolean;
84
- _isMongos(evt: TopologyDescriptionChangedEvent): boolean;
85
- _translateMessage(error: any): Error | {
86
- message: string;
87
- };
88
- _cleanup(): void;
89
- }
90
- export type { NativeClient };
91
- declare const WrappedClient: typeof NativeClient;
92
- export default WrappedClient;