mongodb-data-service 21.15.1 → 21.16.2
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.
- package/lib/connect-mongo-client.d.ts +6 -4
- package/lib/connect-mongo-client.d.ts.map +1 -0
- package/lib/connect-mongo-client.js +26 -62
- package/lib/connect-mongo-client.js.map +1 -1
- package/lib/connect.d.ts +2 -1
- package/lib/connect.d.ts.map +1 -0
- package/lib/connection-info.d.ts +3 -3
- package/lib/connection-info.d.ts.map +1 -0
- package/lib/connection-options.d.ts +1 -0
- package/lib/connection-options.d.ts.map +1 -0
- package/lib/connection-secrets.d.ts +3 -1
- package/lib/connection-secrets.d.ts.map +1 -0
- package/lib/connection-secrets.js +9 -2
- package/lib/connection-secrets.js.map +1 -1
- package/lib/connection-storage.d.ts +4 -1
- package/lib/connection-storage.d.ts.map +1 -0
- package/lib/connection-storage.js +4 -3
- package/lib/connection-storage.js.map +1 -1
- package/lib/connection-title.d.ts +2 -1
- package/lib/connection-title.d.ts.map +1 -0
- package/lib/data-service.d.ts +9 -7
- package/lib/data-service.d.ts.map +1 -0
- package/lib/data-service.js +18 -18
- package/lib/data-service.js.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/instance-detail-helper.d.ts +3 -2
- package/lib/instance-detail-helper.d.ts.map +1 -0
- package/lib/instance-detail-helper.js +1 -1
- package/lib/instance-detail-helper.js.map +1 -1
- package/lib/legacy/legacy-connection-model.d.ts +5 -3
- package/lib/legacy/legacy-connection-model.d.ts.map +1 -0
- package/lib/legacy/legacy-connection-model.js +64 -31
- package/lib/legacy/legacy-connection-model.js.map +1 -1
- package/lib/redact.d.ts +3 -2
- package/lib/redact.d.ts.map +1 -0
- package/lib/run-command.d.ts +2 -1
- package/lib/run-command.d.ts.map +1 -0
- package/lib/run-command.js.map +1 -1
- package/lib/ssh-tunnel.d.ts +6 -2
- package/lib/ssh-tunnel.d.ts.map +1 -0
- package/lib/ssh-tunnel.js +20 -14
- package/lib/ssh-tunnel.js.map +1 -1
- package/lib/types.d.ts +1 -0
- package/lib/types.d.ts.map +1 -0
- package/package.json +17 -19
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { MongoClientOptions
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import type { MongoClientOptions } from 'mongodb';
|
|
2
|
+
import { MongoClient } from 'mongodb';
|
|
3
|
+
import type SSHTunnel from '@mongodb-js/ssh-tunnel';
|
|
4
|
+
import type { ConnectionOptions } from './connection-options';
|
|
5
|
+
export default function connectMongoClientCompass(connectionOptions: ConnectionOptions, setupListeners: (client: MongoClient) => void): Promise<[
|
|
5
6
|
MongoClient,
|
|
6
7
|
SSHTunnel | undefined,
|
|
7
8
|
{
|
|
@@ -9,3 +10,4 @@ export default function connectMongoClient(connectionOptions: ConnectionOptions,
|
|
|
9
10
|
options: MongoClientOptions;
|
|
10
11
|
}
|
|
11
12
|
]>;
|
|
13
|
+
//# sourceMappingURL=connect-mongo-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-mongo-client.d.ts","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAKpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAS9D,wBAA8B,yBAAyB,CACrD,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAC5C,OAAO,CACR;IACE,WAAW;IACX,SAAS,GAAG,SAAS;IACrB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAA;KAAE;CAC7C,CACF,CA6DA"}
|
|
@@ -4,86 +4,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const mongodb_1 = require("mongodb");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const devtools_connect_1 = require("@mongodb-js/devtools-connect");
|
|
8
|
+
const events_1 = __importDefault(require("events"));
|
|
9
9
|
const redact_1 = require("./redact");
|
|
10
10
|
const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
|
|
11
11
|
const ssh_tunnel_1 = require("./ssh-tunnel");
|
|
12
|
-
const { debug, log
|
|
13
|
-
async function
|
|
14
|
-
var _a, _b;
|
|
12
|
+
const { debug, log } = (0, compass_logging_1.default)('COMPASS-CONNECT');
|
|
13
|
+
async function connectMongoClientCompass(connectionOptions, setupListeners) {
|
|
15
14
|
debug('connectMongoClient invoked', (0, redact_1.redactConnectionOptions)(connectionOptions));
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const [tunnel,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
options: driverOptions,
|
|
22
|
-
});
|
|
23
|
-
const mongoClient = new mongodb_1.MongoClient(urlWithSshTunnel, driverOptions);
|
|
24
|
-
if (setupListeners) {
|
|
25
|
-
setupListeners(mongoClient);
|
|
15
|
+
const url = connectionOptions.connectionString;
|
|
16
|
+
const options = { monitorCommands: true };
|
|
17
|
+
const [tunnel, socks5Options] = await (0, ssh_tunnel_1.openSshTunnel)(connectionOptions.sshTunnel);
|
|
18
|
+
if (socks5Options) {
|
|
19
|
+
Object.assign(options, socks5Options);
|
|
26
20
|
}
|
|
21
|
+
class CompassMongoClient extends mongodb_1.MongoClient {
|
|
22
|
+
constructor(url, options) {
|
|
23
|
+
super(url, options);
|
|
24
|
+
if (setupListeners) {
|
|
25
|
+
setupListeners(this);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const connectLogger = new events_1.default();
|
|
30
|
+
(0, devtools_connect_1.hookLogger)(connectLogger, log.unbound, 'compass', redact_1.redactConnectionString);
|
|
31
|
+
let mongoClient;
|
|
27
32
|
try {
|
|
28
33
|
debug('waiting for MongoClient to connect ...');
|
|
29
|
-
await Promise.race([
|
|
34
|
+
mongoClient = await Promise.race([
|
|
30
35
|
(async () => {
|
|
31
|
-
await
|
|
36
|
+
const mongoClient = await (0, devtools_connect_1.connectMongoClient)(url, options, connectLogger, CompassMongoClient);
|
|
32
37
|
await mongoClient.db('admin').command({ ping: 1 });
|
|
38
|
+
return mongoClient;
|
|
33
39
|
})(),
|
|
34
40
|
(0, ssh_tunnel_1.waitForTunnelError)(tunnel),
|
|
35
41
|
]);
|
|
36
|
-
|
|
37
|
-
driver: (_b = (_a = mongoClient.options) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.driver,
|
|
38
|
-
url: (0, redact_1.redactConnectionString)(urlWithSshTunnel),
|
|
39
|
-
});
|
|
40
|
-
return [
|
|
41
|
-
mongoClient,
|
|
42
|
-
tunnel,
|
|
43
|
-
{ url: urlWithSshTunnel, options: driverOptions },
|
|
44
|
-
];
|
|
42
|
+
return [mongoClient, tunnel, { url, options }];
|
|
45
43
|
}
|
|
46
44
|
catch (err) {
|
|
47
|
-
log.error(mongoLogId(1001000013), 'Connect', 'Connection attempt failed', { error: err.message });
|
|
48
45
|
debug('connection error', err);
|
|
49
46
|
debug('force shutting down ssh tunnel ...');
|
|
50
|
-
await Promise.all([(0, ssh_tunnel_1.forceCloseTunnel)(tunnel), mongoClient.close()]).catch(() => {
|
|
47
|
+
await Promise.all([(0, ssh_tunnel_1.forceCloseTunnel)(tunnel), mongoClient === null || mongoClient === void 0 ? void 0 : mongoClient.close()]).catch(() => {
|
|
51
48
|
});
|
|
52
49
|
throw err;
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
|
-
exports.default =
|
|
56
|
-
function connectionOptionsToMongoClientParams(connectionOptions) {
|
|
57
|
-
const url = new mongodb_connection_string_url_1.default(connectionOptions.connectionString);
|
|
58
|
-
const searchParams = url.typedSearchParams();
|
|
59
|
-
const options = {
|
|
60
|
-
monitorCommands: true,
|
|
61
|
-
};
|
|
62
|
-
const isLoadBalanced = searchParams.get('loadBalanced') === 'true';
|
|
63
|
-
const isReplicaSet = url.isSRV || url.hosts.length > 1 || searchParams.has('replicaSet');
|
|
64
|
-
const hasDirectConnection = searchParams.has('directConnection');
|
|
65
|
-
if (!isReplicaSet && !isLoadBalanced && !hasDirectConnection) {
|
|
66
|
-
searchParams.set('directConnection', 'true');
|
|
67
|
-
}
|
|
68
|
-
if (!searchParams.has('tlsCertificateFile') &&
|
|
69
|
-
searchParams.has('tlsCertificateKeyFile')) {
|
|
70
|
-
searchParams.set('tlsCertificateFile', searchParams.get('tlsCertificateKeyFile'));
|
|
71
|
-
}
|
|
72
|
-
return [url.href, options];
|
|
73
|
-
}
|
|
74
|
-
async function resolveSrvRecord(url) {
|
|
75
|
-
let resolvedUrl;
|
|
76
|
-
try {
|
|
77
|
-
resolvedUrl = await (0, resolve_mongodb_srv_1.default)(url);
|
|
78
|
-
log.info(mongoLogId(1001000010), 'Connect', 'Resolved SRV record', {
|
|
79
|
-
from: (0, redact_1.redactConnectionString)(url),
|
|
80
|
-
to: (0, redact_1.redactConnectionString)(resolvedUrl),
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
log.error(mongoLogId(1001000011), 'Connect', 'Resolving SRV record failed', { from: (0, redact_1.redactConnectionString)(url), error: error.message });
|
|
85
|
-
throw error;
|
|
86
|
-
}
|
|
87
|
-
return resolvedUrl;
|
|
88
|
-
}
|
|
52
|
+
exports.default = connectMongoClientCompass;
|
|
89
53
|
//# sourceMappingURL=connect-mongo-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-mongo-client.js","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"connect-mongo-client.js","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":";;;;;AACA,qCAAsC;AACtC,mEAA8E;AAE9E,oDAAkC;AAClC,qCAA2E;AAE3E,kFAAmE;AAEnE,6CAIsB;AAEtB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAA,yBAAwB,EAAC,iBAAiB,CAAC,CAAC;AAEpD,KAAK,UAAU,yBAAyB,CACrD,iBAAoC,EACpC,cAA6C;IAQ7C,KAAK,CACH,4BAA4B,EAC5B,IAAA,gCAAuB,EAAC,iBAAiB,CAAC,CAC3C,CAAC;IAEF,MAAM,GAAG,GAAG,iBAAiB,CAAC,gBAAgB,CAAC;IAC/C,MAAM,OAAO,GAAuB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAM9D,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM,IAAA,0BAAa,EACjD,iBAAiB,CAAC,SAAS,CAC5B,CAAC;IAEF,IAAI,aAAa,EAAE;QACjB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACvC;IAED,MAAM,kBAAmB,SAAQ,qBAAW;QAC1C,YAAY,GAAW,EAAE,OAA4B;YACnD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACpB,IAAI,cAAc,EAAE;gBAClB,cAAc,CAAC,IAAI,CAAC,CAAC;aACtB;QACH,CAAC;KACF;IAED,MAAM,aAAa,GAAG,IAAI,gBAAY,EAAE,CAAC;IACzC,IAAA,6BAAU,EAAC,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,+BAAsB,CAAC,CAAC;IAE1E,IAAI,WAAoC,CAAC;IACzC,IAAI;QACF,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChD,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC/B,CAAC,KAAK,IAAI,EAAE;gBACV,MAAM,WAAW,GAAG,MAAM,IAAA,qCAAkB,EAC1C,GAAG,EACH,OAAO,EACP,aAAa,EACb,kBAAkB,CACnB,CAAC;gBACF,MAAM,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC,EAAE;YACJ,IAAA,+BAAkB,EAAC,MAAM,CAAC;SAC3B,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;KAChD;IAAC,OAAO,GAAQ,EAAE;QACjB,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC/B,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAA,6BAAgB,EAAC,MAAM,CAAC,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CACvE,GAAG,EAAE;QAEL,CAAC,CACF,CAAC;QACF,MAAM,GAAG,CAAC;KACX;AACH,CAAC;AAtED,4CAsEC"}
|
package/lib/connect.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { ConnectionOptions } from './connection-options';
|
|
1
|
+
import type { ConnectionOptions } from './connection-options';
|
|
2
2
|
import DataService from './data-service';
|
|
3
3
|
export default function connect(connectionOptions: ConnectionOptions): Promise<DataService>;
|
|
4
|
+
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,wBAA8B,OAAO,CACnC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,WAAW,CAAC,CAItB"}
|
package/lib/connection-info.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ConnectionOptions } from './connection-options';
|
|
1
|
+
import type { ConnectionOptions } from './connection-options';
|
|
2
2
|
export interface ConnectionInfo {
|
|
3
3
|
readonly id: string;
|
|
4
4
|
lastUsed?: Date;
|
|
5
5
|
favorite?: ConnectionFavoriteOptions;
|
|
6
6
|
connectionOptions: ConnectionOptions;
|
|
7
7
|
}
|
|
8
|
-
interface ConnectionFavoriteOptions {
|
|
8
|
+
export interface ConnectionFavoriteOptions {
|
|
9
9
|
name: string;
|
|
10
10
|
color?: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
//# sourceMappingURL=connection-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-info.d.ts","sourceRoot":"","sources":["../src/connection-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,cAAc;IAI7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAKpB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAKhB,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAKrC,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IAIxC,IAAI,EAAE,MAAM,CAAC;IAKb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-options.d.ts","sourceRoot":"","sources":["../src/connection-options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAIhC,gBAAgB,EAAE,MAAM,CAAC;IAKzB,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IAInC,IAAI,EAAE,MAAM,CAAC;IAKb,IAAI,EAAE,MAAM,CAAC;IAKb,QAAQ,EAAE,MAAM,CAAC;IAKjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ConnectionInfo } from './connection-info';
|
|
1
|
+
import type { ConnectionInfo } from './connection-info';
|
|
2
2
|
export interface ConnectionSecrets {
|
|
3
3
|
password?: string;
|
|
4
|
+
sshTunnelPassword?: string;
|
|
4
5
|
sshTunnelPassphrase?: string;
|
|
5
6
|
awsSessionToken?: string;
|
|
6
7
|
tlsCertificateKeyFilePassword?: string;
|
|
@@ -11,3 +12,4 @@ export declare function extractSecrets(connectionInfo: Readonly<ConnectionInfo>)
|
|
|
11
12
|
connectionInfo: ConnectionInfo;
|
|
12
13
|
secrets: ConnectionSecrets;
|
|
13
14
|
};
|
|
15
|
+
//# sourceMappingURL=connection-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-secrets.d.ts","sourceRoot":"","sources":["../src/connection-secrets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,EACxC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,cAAc,CAwDhB;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG;IACxE,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CA4DA"}
|
|
@@ -36,6 +36,9 @@ function mergeSecrets(connectionInfo, secrets) {
|
|
|
36
36
|
if (secrets.password) {
|
|
37
37
|
uri.password = secrets.password;
|
|
38
38
|
}
|
|
39
|
+
if (secrets.sshTunnelPassword && connectionOptions.sshTunnel) {
|
|
40
|
+
connectionOptions.sshTunnel.password = secrets.sshTunnelPassword;
|
|
41
|
+
}
|
|
39
42
|
if (secrets.sshTunnelPassphrase && connectionOptions.sshTunnel) {
|
|
40
43
|
connectionOptions.sshTunnel.identityKeyPassphrase =
|
|
41
44
|
secrets.sshTunnelPassphrase;
|
|
@@ -56,7 +59,7 @@ function mergeSecrets(connectionInfo, secrets) {
|
|
|
56
59
|
}
|
|
57
60
|
exports.mergeSecrets = mergeSecrets;
|
|
58
61
|
function extractSecrets(connectionInfo) {
|
|
59
|
-
var _a;
|
|
62
|
+
var _a, _b;
|
|
60
63
|
const connectionInfoWithoutSecrets = lodash_1.default.cloneDeep(connectionInfo);
|
|
61
64
|
const secrets = {};
|
|
62
65
|
const connectionOptions = connectionInfoWithoutSecrets.connectionOptions;
|
|
@@ -66,7 +69,11 @@ function extractSecrets(connectionInfo) {
|
|
|
66
69
|
secrets.password = uri.password;
|
|
67
70
|
uri.password = '';
|
|
68
71
|
}
|
|
69
|
-
if ((_a = connectionOptions.sshTunnel) === null || _a === void 0 ? void 0 : _a.
|
|
72
|
+
if ((_a = connectionOptions.sshTunnel) === null || _a === void 0 ? void 0 : _a.password) {
|
|
73
|
+
secrets.sshTunnelPassword = connectionOptions.sshTunnel.password;
|
|
74
|
+
delete connectionOptions.sshTunnel.password;
|
|
75
|
+
}
|
|
76
|
+
if ((_b = connectionOptions.sshTunnel) === null || _b === void 0 ? void 0 : _b.identityKeyPassphrase) {
|
|
70
77
|
secrets.sshTunnelPassphrase =
|
|
71
78
|
connectionOptions.sshTunnel.identityKeyPassphrase;
|
|
72
79
|
delete connectionOptions.sshTunnel.identityKeyPassphrase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-secrets.js","sourceRoot":"","sources":["../src/connection-secrets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuB;AACvB,+FAEuC;
|
|
1
|
+
{"version":3,"file":"connection-secrets.js","sourceRoot":"","sources":["../src/connection-secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { ConnectionInfo } from './connection-info';
|
|
1
|
+
import type { ConnectionInfo } from './connection-info';
|
|
2
|
+
import type { AmpersandMethodOptions } from './legacy/legacy-connection-model';
|
|
2
3
|
export declare class ConnectionStorage {
|
|
3
4
|
loadAll(): Promise<ConnectionInfo[]>;
|
|
4
5
|
save(connectionInfo: ConnectionInfo): Promise<void>;
|
|
5
6
|
delete(connectionOptions: ConnectionInfo): Promise<void>;
|
|
6
7
|
}
|
|
8
|
+
export declare function promisifyAmpersandMethod<T>(fn: (options: AmpersandMethodOptions<T>) => void): () => Promise<T>;
|
|
9
|
+
//# sourceMappingURL=connection-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-storage.d.ts","sourceRoot":"","sources":["../src/connection-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAM/E,qBAAa,iBAAiB;IAMtB,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAoBpC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnD,MAAM,CAAC,iBAAiB,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAU/D;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,EAAE,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC/C,MAAM,OAAO,CAAC,CAAC,CAAC,CAYlB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConnectionStorage = void 0;
|
|
3
|
+
exports.promisifyAmpersandMethod = exports.ConnectionStorage = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const legacy_connection_model_1 = require("./legacy/legacy-connection-model");
|
|
6
6
|
class ConnectionStorage {
|
|
@@ -31,8 +31,8 @@ class ConnectionStorage {
|
|
|
31
31
|
}
|
|
32
32
|
exports.ConnectionStorage = ConnectionStorage;
|
|
33
33
|
function promisifyAmpersandMethod(fn) {
|
|
34
|
-
return () => new Promise((resolve, reject) => {
|
|
35
|
-
fn({
|
|
34
|
+
return (...args) => new Promise((resolve, reject) => {
|
|
35
|
+
fn(...args, {
|
|
36
36
|
success: (model) => {
|
|
37
37
|
resolve(model);
|
|
38
38
|
},
|
|
@@ -42,4 +42,5 @@ function promisifyAmpersandMethod(fn) {
|
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
+
exports.promisifyAmpersandMethod = promisifyAmpersandMethod;
|
|
45
46
|
//# sourceMappingURL=connection-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-storage.js","sourceRoot":"","sources":["../src/connection-storage.ts"],"names":[],"mappings":";;;AAEA,+BAAgD;
|
|
1
|
+
{"version":3,"file":"connection-storage.js","sourceRoot":"","sources":["../src/connection-storage.ts"],"names":[],"mappings":";;;AAEA,+BAAgD;AAEhD,8EAG0C;AAE1C,MAAa,iBAAiB;IAM5B,KAAK,CAAC,OAAO;QAEX,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACrE,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,qBAAqB,GAAG,wBAAwB,CACpD,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACtD,CAAC;QAEF,MAAM,qBAAqB,EAAE,CAAC;QAC9B,OAAO,oBAAoB,CAAC,GAAG,CAAC,sDAA4B,CAAC,CAAC;IAChE,CAAC;IAUD,KAAK,CAAC,IAAI,CAAC,cAA8B;QACvC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,IAAA,eAAY,EAAC,cAAc,CAAC,EAAE,CAAC,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,sDAA4B,EAAC,cAAc,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAaD,KAAK,CAAC,MAAM,CAAC,iBAAiC;QAC5C,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE;YAGzB,OAAO;SACR;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,sDAA4B,EAAC,iBAAiB,CAAC,CAAC;QACpE,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AA5DD,8CA4DC;AAED,SAAgB,wBAAwB,CACtC,EAAgD;IAEhD,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CACjB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9B,EAAE,CAAC,GAAG,IAAI,EAAE;YACV,OAAO,EAAE,CAAC,KAAQ,EAAE,EAAE;gBACpB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YACD,KAAK,EAAE,CAAC,KAAQ,EAAE,KAAY,EAAE,EAAE;gBAChC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAdD,4DAcC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-title.d.ts","sourceRoot":"","sources":["../src/connection-title.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAgB/D"}
|
package/lib/data-service.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
import { 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, UpdateFilter, UpdateOptions, UpdateResult } from 'mongodb';
|
|
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';
|
|
4
4
|
import ConnectionStringUrl from 'mongodb-connection-string-url';
|
|
5
|
-
import { ConnectionOptions } from './connection-options';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import type { ConnectionOptions } from './connection-options';
|
|
6
|
+
import type { InstanceDetails } from './instance-detail-helper';
|
|
7
|
+
import { adaptCollectionInfo, adaptDatabaseInfo } from './instance-detail-helper';
|
|
8
|
+
import type { Callback, CollectionStats } from './types';
|
|
9
|
+
import type { ConnectionStatusWithPrivileges } from './run-command';
|
|
9
10
|
declare class DataService extends EventEmitter {
|
|
10
11
|
private readonly _connectionOptions;
|
|
11
12
|
private _isConnecting;
|
|
@@ -14,7 +15,7 @@ declare class DataService extends EventEmitter {
|
|
|
14
15
|
private _tunnel?;
|
|
15
16
|
private _lastSeenTopology;
|
|
16
17
|
private _isWritable;
|
|
17
|
-
private
|
|
18
|
+
private _topologyType;
|
|
18
19
|
private _id;
|
|
19
20
|
constructor(connectionOptions: ConnectionOptions);
|
|
20
21
|
getMongoClientConnectionOptions(): {
|
|
@@ -32,6 +33,7 @@ declare class DataService extends EventEmitter {
|
|
|
32
33
|
command(databaseName: string, comm: Document, callback: Callback<Document>): void;
|
|
33
34
|
isWritable(): boolean;
|
|
34
35
|
isMongos(): boolean;
|
|
36
|
+
currentTopologyType(): TopologyType;
|
|
35
37
|
connectionStatus(): Promise<ConnectionStatusWithPrivileges>;
|
|
36
38
|
private _getPrivilegesOrFallback;
|
|
37
39
|
listCollections(databaseName: string, filter?: Document, { nameOnly, privileges, }?: {
|
|
@@ -104,9 +106,9 @@ declare class DataService extends EventEmitter {
|
|
|
104
106
|
private _collectionName;
|
|
105
107
|
private _databaseName;
|
|
106
108
|
private _checkIsWritable;
|
|
107
|
-
private _checkIsMongos;
|
|
108
109
|
private _translateMessage;
|
|
109
110
|
private _cleanup;
|
|
110
111
|
private _startLogOp;
|
|
111
112
|
}
|
|
112
113
|
export default DataService;
|
|
114
|
+
//# sourceMappingURL=data-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../src/data-service.ts"],"names":[],"mappings":"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"}
|
package/lib/data-service.js
CHANGED
|
@@ -9,17 +9,19 @@ const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging")
|
|
|
9
9
|
const events_1 = require("events");
|
|
10
10
|
const lodash_1 = require("lodash");
|
|
11
11
|
const mongodb_connection_string_url_1 = __importDefault(require("mongodb-connection-string-url"));
|
|
12
|
+
const mongodb_ns_1 = __importDefault(require("mongodb-ns"));
|
|
12
13
|
const instance_detail_helper_1 = require("./instance-detail-helper");
|
|
13
14
|
const redact_1 = require("./redact");
|
|
14
15
|
const connect_mongo_client_1 = __importDefault(require("./connect-mongo-client"));
|
|
15
|
-
const get_port_1 = __importDefault(require("get-port"));
|
|
16
16
|
const run_command_1 = require("./run-command");
|
|
17
17
|
const { fetch: getIndexes } = require('mongodb-index-model');
|
|
18
|
-
const parseNamespace = require('mongodb-ns');
|
|
19
18
|
const { log, mongoLogId, debug } = (0, compass_logging_1.default)('COMPASS-DATA-SERVICE');
|
|
20
19
|
function uniqueBy(values, key) {
|
|
21
20
|
return Array.from(new Map(values.map((val) => [val[key], val])).values());
|
|
22
21
|
}
|
|
22
|
+
function isEmptyObject(obj) {
|
|
23
|
+
return Object.keys(obj).length === 0;
|
|
24
|
+
}
|
|
23
25
|
let id = 0;
|
|
24
26
|
class DataService extends events_1.EventEmitter {
|
|
25
27
|
constructor(connectionOptions) {
|
|
@@ -27,7 +29,7 @@ class DataService extends events_1.EventEmitter {
|
|
|
27
29
|
this._isConnecting = false;
|
|
28
30
|
this._lastSeenTopology = null;
|
|
29
31
|
this._isWritable = false;
|
|
30
|
-
this.
|
|
32
|
+
this._topologyType = 'Unknown';
|
|
31
33
|
this._id = id++;
|
|
32
34
|
this._connectionOptions = connectionOptions;
|
|
33
35
|
}
|
|
@@ -105,7 +107,10 @@ class DataService extends events_1.EventEmitter {
|
|
|
105
107
|
return this._isWritable;
|
|
106
108
|
}
|
|
107
109
|
isMongos() {
|
|
108
|
-
return this.
|
|
110
|
+
return this._topologyType === 'Sharded';
|
|
111
|
+
}
|
|
112
|
+
currentTopologyType() {
|
|
113
|
+
return this._topologyType;
|
|
109
114
|
}
|
|
110
115
|
async connectionStatus() {
|
|
111
116
|
const logop = this._startLogOp(mongoLogId(1001000100), 'Running connectionStatus');
|
|
@@ -151,7 +156,7 @@ class DataService extends events_1.EventEmitter {
|
|
|
151
156
|
try {
|
|
152
157
|
const [listedCollections, collectionsFromPrivileges] = await Promise.all([
|
|
153
158
|
listCollections(),
|
|
154
|
-
getCollectionsFromPrivileges(),
|
|
159
|
+
isEmptyObject(filter) ? getCollectionsFromPrivileges() : [],
|
|
155
160
|
]);
|
|
156
161
|
const collections = uniqueBy([...collectionsFromPrivileges, ...listedCollections], 'name').map((coll) => (0, instance_detail_helper_1.adaptCollectionInfo)({ db: databaseName, ...coll }));
|
|
157
162
|
logop(null, { collectionsCount: collections.length });
|
|
@@ -215,10 +220,7 @@ class DataService extends events_1.EventEmitter {
|
|
|
215
220
|
url: (0, redact_1.redactConnectionString)(this._connectionOptions.connectionString),
|
|
216
221
|
});
|
|
217
222
|
try {
|
|
218
|
-
const
|
|
219
|
-
? await (0, get_port_1.default)()
|
|
220
|
-
: 0;
|
|
221
|
-
const [client, tunnel, connectionOptions] = await (0, connect_mongo_client_1.default)(this._connectionOptions, this.setupListeners.bind(this), tunnelLocalPort);
|
|
223
|
+
const [client, tunnel, connectionOptions] = await (0, connect_mongo_client_1.default)(this._connectionOptions, this.setupListeners.bind(this));
|
|
222
224
|
const attr = {
|
|
223
225
|
isWritable: this.isWritable(),
|
|
224
226
|
isMongos: this.isMongos(),
|
|
@@ -372,6 +374,7 @@ class DataService extends events_1.EventEmitter {
|
|
|
372
374
|
}
|
|
373
375
|
fetch(ns, filter, options) {
|
|
374
376
|
const logop = this._startLogOp(mongoLogId(1001000043), 'Running raw find', { ns });
|
|
377
|
+
logop(null);
|
|
375
378
|
return this._collection(ns).find(filter, options);
|
|
376
379
|
}
|
|
377
380
|
findOneAndReplace(ns, filter, replacement, options, callback) {
|
|
@@ -622,10 +625,10 @@ class DataService extends events_1.EventEmitter {
|
|
|
622
625
|
this._client = client;
|
|
623
626
|
if (client) {
|
|
624
627
|
client.on('serverDescriptionChanged', (evt) => {
|
|
625
|
-
var _a;
|
|
628
|
+
var _a, _b;
|
|
626
629
|
log.info(mongoLogId(1001000018), this._logCtx(), 'Server description changed', {
|
|
627
630
|
address: evt.address,
|
|
628
|
-
error: (_a = evt.newDescription.error) !== null &&
|
|
631
|
+
error: (_b = (_a = evt.newDescription.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : null,
|
|
629
632
|
previousType: evt.previousDescription.type,
|
|
630
633
|
newType: evt.newDescription.type,
|
|
631
634
|
});
|
|
@@ -651,7 +654,7 @@ class DataService extends events_1.EventEmitter {
|
|
|
651
654
|
});
|
|
652
655
|
client.on('topologyDescriptionChanged', (evt) => {
|
|
653
656
|
this._isWritable = this._checkIsWritable(evt);
|
|
654
|
-
this.
|
|
657
|
+
this._topologyType = evt.newDescription.type;
|
|
655
658
|
const attr = {
|
|
656
659
|
isWritable: this.isWritable(),
|
|
657
660
|
isMongos: this.isMongos(),
|
|
@@ -820,17 +823,14 @@ class DataService extends events_1.EventEmitter {
|
|
|
820
823
|
});
|
|
821
824
|
}
|
|
822
825
|
_collectionName(ns) {
|
|
823
|
-
return
|
|
826
|
+
return (0, mongodb_ns_1.default)(ns).collection;
|
|
824
827
|
}
|
|
825
828
|
_databaseName(ns) {
|
|
826
|
-
return
|
|
829
|
+
return (0, mongodb_ns_1.default)(ns).database;
|
|
827
830
|
}
|
|
828
831
|
_checkIsWritable(evt) {
|
|
829
832
|
return [...evt.newDescription.servers.values()].some((server) => server.isWritable);
|
|
830
833
|
}
|
|
831
|
-
_checkIsMongos(evt) {
|
|
832
|
-
return evt.newDescription.type === 'Sharded';
|
|
833
|
-
}
|
|
834
834
|
_translateMessage(error) {
|
|
835
835
|
if (typeof error === 'string') {
|
|
836
836
|
error = { message: error };
|
|
@@ -848,7 +848,7 @@ class DataService extends events_1.EventEmitter {
|
|
|
848
848
|
this._tunnel = undefined;
|
|
849
849
|
this._mongoClientConnectionOptions = undefined;
|
|
850
850
|
this._isWritable = false;
|
|
851
|
-
this.
|
|
851
|
+
this._topologyType = 'Unknown';
|
|
852
852
|
this._isConnecting = false;
|
|
853
853
|
}
|
|
854
854
|
_startLogOp(logId, op, attr = {}) {
|