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.
- package/lib/connect-mongo-client.d.ts +7 -6
- package/lib/connect-mongo-client.d.ts.map +1 -1
- package/lib/connect-mongo-client.js +44 -11
- package/lib/connect-mongo-client.js.map +1 -1
- package/lib/connect.d.ts +1 -1
- package/lib/connect.d.ts.map +1 -1
- package/lib/connect.js +2 -5
- package/lib/connect.js.map +1 -1
- package/lib/connection-options.d.ts +7 -0
- package/lib/connection-options.d.ts.map +1 -1
- package/lib/connection-secrets.d.ts +2 -0
- package/lib/connection-secrets.d.ts.map +1 -1
- package/lib/connection-secrets.js +21 -1
- package/lib/connection-secrets.js.map +1 -1
- package/lib/connection-storage.d.ts +2 -1
- package/lib/connection-storage.d.ts.map +1 -1
- package/lib/connection-storage.js +56 -12
- package/lib/connection-storage.js.map +1 -1
- package/lib/connection-title.d.ts.map +1 -1
- package/lib/connection-title.js +0 -3
- package/lib/connection-title.js.map +1 -1
- package/lib/csfle-collection-tracker.d.ts +39 -0
- package/lib/csfle-collection-tracker.d.ts.map +1 -0
- package/lib/csfle-collection-tracker.js +205 -0
- package/lib/csfle-collection-tracker.js.map +1 -0
- package/lib/data-service.d.ts +129 -12
- package/lib/data-service.d.ts.map +1 -1
- package/lib/data-service.js +217 -68
- package/lib/data-service.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/instance-detail-helper.d.ts +10 -2
- package/lib/instance-detail-helper.d.ts.map +1 -1
- package/lib/instance-detail-helper.js +31 -2
- package/lib/instance-detail-helper.js.map +1 -1
- package/lib/legacy/legacy-connection-model.d.ts.map +1 -1
- package/lib/legacy/legacy-connection-model.js +25 -1
- package/lib/legacy/legacy-connection-model.js.map +1 -1
- package/package.json +21 -17
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import type { MongoClientOptions } from 'mongodb';
|
|
2
1
|
import { MongoClient } from 'mongodb';
|
|
2
|
+
import type { DevtoolsConnectOptions } from '@mongodb-js/devtools-connect';
|
|
3
3
|
import type SSHTunnel from '@mongodb-js/ssh-tunnel';
|
|
4
4
|
import type { ConnectionOptions } from './connection-options';
|
|
5
|
-
export default function connectMongoClientCompass(connectionOptions: ConnectionOptions
|
|
6
|
-
MongoClient,
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export default function connectMongoClientCompass(connectionOptions: Readonly<ConnectionOptions>, setupListeners: (client: MongoClient) => void): Promise<[
|
|
6
|
+
metadataClient: MongoClient,
|
|
7
|
+
crudClient: MongoClient,
|
|
8
|
+
sshTunnel: SSHTunnel | undefined,
|
|
9
|
+
options: {
|
|
9
10
|
url: string;
|
|
10
|
-
options:
|
|
11
|
+
options: DevtoolsConnectOptions;
|
|
11
12
|
}
|
|
12
13
|
]>;
|
|
13
14
|
//# sourceMappingURL=connect-mongo-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-mongo-client.d.ts","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect-mongo-client.d.ts","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAMpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAS9D,wBAA8B,yBAAyB,CACrD,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAC9C,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAC5C,OAAO,CACR;IACE,cAAc,EAAE,WAAW;IAC3B,UAAU,EAAE,WAAW;IACvB,SAAS,EAAE,SAAS,GAAG,SAAS;IAChC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,sBAAsB,CAAA;KAAE;CAC1D,CACF,CAsGA"}
|
|
@@ -4,21 +4,40 @@ 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 mongodb_fle_1 = require("mongodb-fle");
|
|
7
8
|
const devtools_connect_1 = require("@mongodb-js/devtools-connect");
|
|
8
9
|
const events_1 = __importDefault(require("events"));
|
|
9
10
|
const redact_1 = require("./redact");
|
|
11
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
10
12
|
const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
|
|
11
13
|
const ssh_tunnel_1 = require("./ssh-tunnel");
|
|
12
14
|
const { debug, log } = (0, compass_logging_1.default)('COMPASS-CONNECT');
|
|
13
15
|
async function connectMongoClientCompass(connectionOptions, setupListeners) {
|
|
16
|
+
var _a, _b;
|
|
14
17
|
debug('connectMongoClient invoked', (0, redact_1.redactConnectionOptions)(connectionOptions));
|
|
15
18
|
const url = connectionOptions.connectionString;
|
|
16
|
-
const options = {
|
|
19
|
+
const options = {
|
|
20
|
+
monitorCommands: true,
|
|
21
|
+
useSystemCA: connectionOptions.useSystemCA,
|
|
22
|
+
autoEncryption: (_a = connectionOptions.fleOptions) === null || _a === void 0 ? void 0 : _a.autoEncryption,
|
|
23
|
+
};
|
|
24
|
+
if (options.autoEncryption && process.env.COMPASS_CSFLE_LIBRARY_PATH) {
|
|
25
|
+
options.autoEncryption = {
|
|
26
|
+
...options.autoEncryption,
|
|
27
|
+
extraOptions: {
|
|
28
|
+
...(_b = options.autoEncryption) === null || _b === void 0 ? void 0 : _b.extraOptions,
|
|
29
|
+
csflePath: process.env.COMPASS_CSFLE_LIBRARY_PATH,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
17
33
|
const [tunnel, socks5Options] = await (0, ssh_tunnel_1.openSshTunnel)(connectionOptions.sshTunnel);
|
|
18
34
|
if (socks5Options) {
|
|
19
35
|
Object.assign(options, socks5Options);
|
|
20
36
|
}
|
|
21
|
-
|
|
37
|
+
const BaseMongoClient = process.env.COMPASS_CSFLE_SUPPORT === 'true'
|
|
38
|
+
? mongodb_fle_1.MongoClient
|
|
39
|
+
: mongodb_1.MongoClient;
|
|
40
|
+
class CompassMongoClient extends BaseMongoClient {
|
|
22
41
|
constructor(url, options) {
|
|
23
42
|
super(url, options);
|
|
24
43
|
if (setupListeners) {
|
|
@@ -28,23 +47,37 @@ async function connectMongoClientCompass(connectionOptions, setupListeners) {
|
|
|
28
47
|
}
|
|
29
48
|
const connectLogger = new events_1.default();
|
|
30
49
|
(0, devtools_connect_1.hookLogger)(connectLogger, log.unbound, 'compass', redact_1.redactConnectionString);
|
|
31
|
-
|
|
50
|
+
async function connectSingleClient(overrideOptions) {
|
|
51
|
+
const client = await (0, devtools_connect_1.connectMongoClient)(url, lodash_1.default.cloneDeep({ ...options, ...overrideOptions }), connectLogger, CompassMongoClient);
|
|
52
|
+
await client.db('admin').command({ ping: 1 });
|
|
53
|
+
return client;
|
|
54
|
+
}
|
|
55
|
+
let metadataClient;
|
|
56
|
+
let crudClient;
|
|
32
57
|
try {
|
|
33
58
|
debug('waiting for MongoClient to connect ...');
|
|
34
|
-
|
|
35
|
-
(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
})(),
|
|
59
|
+
[metadataClient, crudClient] = await Promise.race([
|
|
60
|
+
Promise.all([
|
|
61
|
+
connectSingleClient({ autoEncryption: undefined }),
|
|
62
|
+
options.autoEncryption ? connectSingleClient({}) : undefined,
|
|
63
|
+
]),
|
|
40
64
|
(0, ssh_tunnel_1.waitForTunnelError)(tunnel),
|
|
41
65
|
]);
|
|
42
|
-
return [
|
|
66
|
+
return [
|
|
67
|
+
metadataClient,
|
|
68
|
+
crudClient !== null && crudClient !== void 0 ? crudClient : metadataClient,
|
|
69
|
+
tunnel,
|
|
70
|
+
{ url, options },
|
|
71
|
+
];
|
|
43
72
|
}
|
|
44
73
|
catch (err) {
|
|
45
74
|
debug('connection error', err);
|
|
46
75
|
debug('force shutting down ssh tunnel ...');
|
|
47
|
-
await Promise.all([
|
|
76
|
+
await Promise.all([
|
|
77
|
+
(0, ssh_tunnel_1.forceCloseTunnel)(tunnel),
|
|
78
|
+
crudClient === null || crudClient === void 0 ? void 0 : crudClient.close(),
|
|
79
|
+
metadataClient === null || metadataClient === void 0 ? void 0 : metadataClient.close(),
|
|
80
|
+
]).catch(() => {
|
|
48
81
|
});
|
|
49
82
|
throw err;
|
|
50
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-mongo-client.js","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":";;;;;AACA,qCAAsC;AACtC,mEAA8E;
|
|
1
|
+
{"version":3,"file":"connect-mongo-client.js","sourceRoot":"","sources":["../src/connect-mongo-client.ts"],"names":[],"mappings":"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"}
|
package/lib/connect.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ConnectionOptions } from './connection-options';
|
|
2
|
-
import DataService from './data-service';
|
|
2
|
+
import type { DataService } from './data-service';
|
|
3
3
|
export default function connect(connectionOptions: ConnectionOptions): Promise<DataService>;
|
|
4
4
|
//# sourceMappingURL=connect.d.ts.map
|
package/lib/connect.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,wBAA8B,OAAO,CACnC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,WAAW,CAAC,CAItB"}
|
package/lib/connect.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const data_service_1 =
|
|
3
|
+
const data_service_1 = require("./data-service");
|
|
7
4
|
async function connect(connectionOptions) {
|
|
8
|
-
const dataService = new data_service_1.
|
|
5
|
+
const dataService = new data_service_1.DataServiceImpl(connectionOptions);
|
|
9
6
|
await dataService.connect();
|
|
10
7
|
return dataService;
|
|
11
8
|
}
|
package/lib/connect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":";;AAEA,iDAAiD;AAElC,KAAK,UAAU,OAAO,CACnC,iBAAoC;IAEpC,MAAM,WAAW,GAAG,IAAI,8BAAe,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAND,0BAMC"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { AutoEncryptionOptions } from 'mongodb';
|
|
1
2
|
export interface ConnectionOptions {
|
|
2
3
|
connectionString: string;
|
|
3
4
|
sshTunnel?: ConnectionSshOptions;
|
|
5
|
+
useSystemCA?: boolean;
|
|
6
|
+
fleOptions?: ConnectionFleOptions;
|
|
7
|
+
}
|
|
8
|
+
export interface ConnectionFleOptions {
|
|
9
|
+
storeCredentials: boolean;
|
|
10
|
+
autoEncryption?: AutoEncryptionOptions;
|
|
4
11
|
}
|
|
5
12
|
export interface ConnectionSshOptions {
|
|
6
13
|
host: string;
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"connection-options.d.ts","sourceRoot":"","sources":["../src/connection-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAIhC,gBAAgB,EAAE,MAAM,CAAC;IAKzB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAKjC,WAAW,CAAC,EAAE,OAAO,CAAC;IAKtB,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IAInC,gBAAgB,EAAE,OAAO,CAAC;IAK1B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;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,4 +1,5 @@
|
|
|
1
1
|
import type { ConnectionInfo } from './connection-info';
|
|
2
|
+
import type { AutoEncryptionOptions } from 'mongodb';
|
|
2
3
|
export interface ConnectionSecrets {
|
|
3
4
|
password?: string;
|
|
4
5
|
sshTunnelPassword?: string;
|
|
@@ -6,6 +7,7 @@ export interface ConnectionSecrets {
|
|
|
6
7
|
awsSessionToken?: string;
|
|
7
8
|
tlsCertificateKeyFilePassword?: string;
|
|
8
9
|
proxyPassword?: string;
|
|
10
|
+
autoEncryption?: AutoEncryptionOptions;
|
|
9
11
|
}
|
|
10
12
|
export declare function mergeSecrets(connectionInfo: Readonly<ConnectionInfo>, secrets: ConnectionSecrets | undefined): ConnectionInfo;
|
|
11
13
|
export declare function extractSecrets(connectionInfo: Readonly<ConnectionInfo>): {
|
|
@@ -1 +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;
|
|
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;AACxD,OAAO,KAAK,EAGV,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB,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;IACvB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,EACxC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,cAAc,CA4DhB;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG;IACxE,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CA+EA"}
|
|
@@ -26,6 +26,7 @@ exports.extractSecrets = exports.mergeSecrets = void 0;
|
|
|
26
26
|
const lodash_1 = __importDefault(require("lodash"));
|
|
27
27
|
const mongodb_connection_string_url_1 = __importStar(require("mongodb-connection-string-url"));
|
|
28
28
|
function mergeSecrets(connectionInfo, secrets) {
|
|
29
|
+
var _a, _b;
|
|
29
30
|
const connectionInfoWithSecrets = lodash_1.default.cloneDeep(connectionInfo);
|
|
30
31
|
if (!secrets) {
|
|
31
32
|
return connectionInfoWithSecrets;
|
|
@@ -43,6 +44,9 @@ function mergeSecrets(connectionInfo, secrets) {
|
|
|
43
44
|
connectionOptions.sshTunnel.identityKeyPassphrase =
|
|
44
45
|
secrets.sshTunnelPassphrase;
|
|
45
46
|
}
|
|
47
|
+
if (secrets.autoEncryption && ((_a = connectionOptions.fleOptions) === null || _a === void 0 ? void 0 : _a.autoEncryption)) {
|
|
48
|
+
lodash_1.default.merge((_b = connectionOptions.fleOptions) === null || _b === void 0 ? void 0 : _b.autoEncryption, secrets.autoEncryption);
|
|
49
|
+
}
|
|
46
50
|
if (secrets.tlsCertificateKeyFilePassword) {
|
|
47
51
|
searchParams.set('tlsCertificateKeyFilePassword', secrets.tlsCertificateKeyFilePassword);
|
|
48
52
|
}
|
|
@@ -59,7 +63,7 @@ function mergeSecrets(connectionInfo, secrets) {
|
|
|
59
63
|
}
|
|
60
64
|
exports.mergeSecrets = mergeSecrets;
|
|
61
65
|
function extractSecrets(connectionInfo) {
|
|
62
|
-
var _a, _b;
|
|
66
|
+
var _a, _b, _c;
|
|
63
67
|
const connectionInfoWithoutSecrets = lodash_1.default.cloneDeep(connectionInfo);
|
|
64
68
|
const secrets = {};
|
|
65
69
|
const connectionOptions = connectionInfoWithoutSecrets.connectionOptions;
|
|
@@ -99,6 +103,22 @@ function extractSecrets(connectionInfo) {
|
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
105
|
connectionInfoWithoutSecrets.connectionOptions.connectionString = uri.href;
|
|
106
|
+
if ((_c = connectionOptions.fleOptions) === null || _c === void 0 ? void 0 : _c.autoEncryption) {
|
|
107
|
+
const { autoEncryption } = connectionOptions.fleOptions;
|
|
108
|
+
const kmsProviders = ['aws', 'local', 'azure', 'gcp', 'kmip'];
|
|
109
|
+
const secretPaths = [
|
|
110
|
+
'kmsProviders.aws.secretAccessKey',
|
|
111
|
+
'kmsProviders.aws.sessionToken',
|
|
112
|
+
'kmsProviders.local.key',
|
|
113
|
+
'kmsProviders.azure.clientSecret',
|
|
114
|
+
'kmsProviders.gcp.privateKey',
|
|
115
|
+
...kmsProviders.map((p) => `tlsOptions.${p}.tlsCertificateKeyFilePassword`),
|
|
116
|
+
];
|
|
117
|
+
connectionOptions.fleOptions.autoEncryption = lodash_1.default.omit(autoEncryption, secretPaths);
|
|
118
|
+
if (connectionOptions.fleOptions.storeCredentials) {
|
|
119
|
+
secrets.autoEncryption = lodash_1.default.pick(autoEncryption, secretPaths);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
102
122
|
return { connectionInfo: connectionInfoWithoutSecrets, secrets };
|
|
103
123
|
}
|
|
104
124
|
exports.extractSecrets = extractSecrets;
|
|
@@ -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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"}
|
|
@@ -3,7 +3,8 @@ import type { AmpersandMethodOptions } from './legacy/legacy-connection-model';
|
|
|
3
3
|
export declare class ConnectionStorage {
|
|
4
4
|
loadAll(): Promise<ConnectionInfo[]>;
|
|
5
5
|
save(connectionInfo: ConnectionInfo): Promise<void>;
|
|
6
|
-
delete(
|
|
6
|
+
delete(connectionInfo: ConnectionInfo): Promise<void>;
|
|
7
|
+
load(id: string): Promise<ConnectionInfo | undefined>;
|
|
7
8
|
}
|
|
8
9
|
export declare function promisifyAmpersandMethod<T>(fn: (options: AmpersandMethodOptions<T>) => void): () => Promise<T>;
|
|
9
10
|
//# sourceMappingURL=connection-storage.d.ts.map
|
|
@@ -1 +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,
|
|
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,EACV,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;AAS1C,qBAAa,iBAAiB;IAMtB,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA6CpC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCnD,MAAM,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAe5D;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,32 +1,76 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.promisifyAmpersandMethod = exports.ConnectionStorage = void 0;
|
|
4
7
|
const uuid_1 = require("uuid");
|
|
5
8
|
const legacy_connection_model_1 = require("./legacy/legacy-connection-model");
|
|
9
|
+
const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
|
|
10
|
+
const { log, mongoLogId } = (0, compass_logging_1.default)('COMPASS-DATA-SERVICE');
|
|
6
11
|
class ConnectionStorage {
|
|
7
12
|
async loadAll() {
|
|
8
13
|
const { ConnectionCollection } = require('mongodb-connection-model');
|
|
9
14
|
const connectionCollection = new ConnectionCollection();
|
|
10
15
|
const fetchConnectionModels = promisifyAmpersandMethod(connectionCollection.fetch.bind(connectionCollection));
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
try {
|
|
17
|
+
await fetchConnectionModels();
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
log.error(mongoLogId(1001000101), 'Connection Storage', 'Failed to load connection, error while fetching models', { message: err.message });
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
return connectionCollection
|
|
24
|
+
.map((model) => {
|
|
25
|
+
try {
|
|
26
|
+
return (0, legacy_connection_model_1.convertConnectionModelToInfo)(model);
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
log.error(mongoLogId(1001000102), 'Connection Storage', 'Failed to load connection, error while converting from model', { message: err.message });
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
.filter(Boolean);
|
|
13
33
|
}
|
|
14
34
|
async save(connectionInfo) {
|
|
15
|
-
|
|
16
|
-
|
|
35
|
+
try {
|
|
36
|
+
if (!connectionInfo.id) {
|
|
37
|
+
throw new Error('id is required');
|
|
38
|
+
}
|
|
39
|
+
if (!(0, uuid_1.validate)(connectionInfo.id)) {
|
|
40
|
+
throw new Error('id must be a uuid');
|
|
41
|
+
}
|
|
42
|
+
const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionInfo);
|
|
43
|
+
await new Promise((resolve, reject) => {
|
|
44
|
+
model.save(undefined, {
|
|
45
|
+
success: resolve,
|
|
46
|
+
error: reject,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
17
49
|
}
|
|
18
|
-
|
|
19
|
-
|
|
50
|
+
catch (err) {
|
|
51
|
+
log.error(mongoLogId(1001000103), 'Connection Storage', 'Failed to save connection', { message: err.message });
|
|
52
|
+
throw err;
|
|
20
53
|
}
|
|
21
|
-
const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionInfo);
|
|
22
|
-
model.save();
|
|
23
54
|
}
|
|
24
|
-
async delete(
|
|
25
|
-
if (!
|
|
55
|
+
async delete(connectionInfo) {
|
|
56
|
+
if (!connectionInfo.id) {
|
|
26
57
|
return;
|
|
27
58
|
}
|
|
28
|
-
|
|
29
|
-
|
|
59
|
+
try {
|
|
60
|
+
const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionInfo);
|
|
61
|
+
model.destroy();
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
log.error(mongoLogId(1001000104), 'Connection Storage', 'Failed to delete connection', { message: err.message });
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async load(id) {
|
|
69
|
+
if (!id) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const connections = await this.loadAll();
|
|
73
|
+
return connections.find((connection) => id === connection.id);
|
|
30
74
|
}
|
|
31
75
|
}
|
|
32
76
|
exports.ConnectionStorage = ConnectionStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-storage.js","sourceRoot":"","sources":["../src/connection-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection-storage.js","sourceRoot":"","sources":["../src/connection-storage.ts"],"names":[],"mappings":";;;;;;AAEA,+BAAgD;AAKhD,8EAG0C;AAC1C,kFAAmE;AAEnE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAA,yBAAwB,EAAC,sBAAsB,CAAC,CAAC;AAE7E,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,IAAI;YACF,MAAM,qBAAqB,EAAE,CAAC;SAC/B;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CACP,UAAU,CAAC,UAAa,CAAC,EACzB,oBAAoB,EACpB,wDAAwD,EACxD,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CACpC,CAAC;YAEF,OAAO,EAAE,CAAC;SACX;QAED,OAAO,oBAAoB;aACxB,GAAG,CAAC,CAAC,KAA4B,EAAE,EAAE;YACpC,IAAI;gBACF,OAAO,IAAA,sDAA4B,EAAC,KAAK,CAAC,CAAC;aAC5C;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CACP,UAAU,CAAC,UAAa,CAAC,EACzB,oBAAoB,EACpB,8DAA8D,EAC9D,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CACpC,CAAC;aACH;QACH,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAUD,KAAK,CAAC,IAAI,CAAC,cAA8B;QACvC,IAAI;YACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;aACnC;YAED,IAAI,CAAC,IAAA,eAAY,EAAC,cAAc,CAAC,EAAE,CAAC,EAAE;gBACpC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;aACtC;YAED,MAAM,KAAK,GAAG,MAAM,IAAA,sDAA4B,EAAC,cAAc,CAAC,CAAC;YACjE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACpC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;oBACpB,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CACP,UAAU,CAAC,UAAa,CAAC,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CACpC,CAAC;YAEF,MAAM,GAAG,CAAC;SACX;IACH,CAAC;IAaD,KAAK,CAAC,MAAM,CAAC,cAA8B;QACzC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE;YAGtB,OAAO;SACR;QAED,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,IAAA,sDAA4B,EAAC,cAAc,CAAC,CAAC;YACjE,KAAK,CAAC,OAAO,EAAE,CAAC;SACjB;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CACP,UAAU,CAAC,UAAa,CAAC,EACzB,oBAAoB,EACpB,6BAA6B,EAC7B,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CACpC,CAAC;YAEF,MAAM,GAAG,CAAC;SACX;IACH,CAAC;IAOD,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,IAAI,CAAC,EAAE,EAAE;YACP,OAAO,SAAS,CAAC;SAClB;QAQD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAEzC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AArID,8CAqIC;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"}
|
|
@@ -1 +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,
|
|
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,CAY/D"}
|
package/lib/connection-title.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-title.js","sourceRoot":"","sources":["../src/connection-title.ts"],"names":[],"mappings":";;;;;;AAAA,kGAA6D;AAG7D,SAAgB,kBAAkB,CAAC,IAAoB;;IACrD,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,EAAE;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KAC3B;IAED,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,uCAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC1E,
|
|
1
|
+
{"version":3,"file":"connection-title.js","sourceRoot":"","sources":["../src/connection-title.ts"],"names":[],"mappings":";;;;;;AAAA,kGAA6D;AAG7D,SAAgB,kBAAkB,CAAC,IAAoB;;IACrD,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,EAAE;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KAC3B;IAED,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,uCAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QAEV,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,YAAY,CAAC;KAChE;AACH,CAAC;AAZD,gDAYC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { MongoClient, Document } from 'mongodb';
|
|
2
|
+
import type { DataService } from './data-service';
|
|
3
|
+
import type { CollectionInfo, CollectionInfoNameOnly } from './run-command';
|
|
4
|
+
export interface CSFLECollectionTracker {
|
|
5
|
+
isUpdateAllowed(ns: string, originalDocument: Document): Promise<boolean>;
|
|
6
|
+
knownSchemaForCollection(ns: string): Promise<{
|
|
7
|
+
hasSchema: boolean;
|
|
8
|
+
encryptedFields: string[];
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
declare type FieldPath = string[];
|
|
12
|
+
interface CSFLECollectionInfo {
|
|
13
|
+
serverEnforcedEncryptedFields?: FieldPath[];
|
|
14
|
+
clientEnforcedEncryptedFields?: FieldPath[];
|
|
15
|
+
hasServerSchema?: boolean;
|
|
16
|
+
lastUpdated?: Date;
|
|
17
|
+
}
|
|
18
|
+
export declare class CSFLECollectionTrackerImpl implements CSFLECollectionTracker {
|
|
19
|
+
_nsToInfo: Map<string, CSFLECollectionInfo>;
|
|
20
|
+
_dataService: Pick<DataService, 'on' | 'listCollections'>;
|
|
21
|
+
_crudClient: MongoClient;
|
|
22
|
+
constructor(dataService: Pick<DataService, 'on' | 'listCollections'>, crudClient: MongoClient);
|
|
23
|
+
isUpdateAllowed(ns: string, originalDocument: Document): Promise<boolean>;
|
|
24
|
+
knownSchemaForCollection(ns: string): Promise<{
|
|
25
|
+
hasSchema: boolean;
|
|
26
|
+
encryptedFields: string[];
|
|
27
|
+
}>;
|
|
28
|
+
_processClientSchemaDefinitions(): void;
|
|
29
|
+
_fetchCSFLECollectionInfo(ns: string): Promise<CSFLECollectionInfo>;
|
|
30
|
+
_getCSFLECollectionInfo(ns: string): CSFLECollectionInfo;
|
|
31
|
+
_updateCollectionInfoFromDataService(opts: {
|
|
32
|
+
databaseName: string;
|
|
33
|
+
nameOnly?: boolean;
|
|
34
|
+
}, result: CollectionInfoNameOnly & Partial<CollectionInfo>): void;
|
|
35
|
+
_createHookedMetadataClient(wrappedClient: MongoClient): MongoClient;
|
|
36
|
+
_checkListCollectionsForLibmongocryptResult(dbName: string, filter: Document, collectionInfos: CollectionInfo[]): Error | undefined;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=csfle-collection-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csfle-collection-tracker.d.ts","sourceRoot":"","sources":["../src/csfle-collection-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAEX,QAAQ,EAET,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EAEvB,MAAM,eAAe,CAAC;AAWvB,MAAM,WAAW,sBAAsB;IAgBrC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAa1E,wBAAwB,CACtB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC/D;AAMD,aAAK,SAAS,GAAG,MAAM,EAAE,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,6BAA6B,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5C,6BAA6B,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AA2ED,qBAAa,0BAA2B,YAAW,sBAAsB;IACvE,SAAS,mCAA0C;IACnD,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,iBAAiB,CAAC,CAAC;IAC1D,WAAW,EAAE,WAAW,CAAC;gBAGvB,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,iBAAiB,CAAC,EACxD,UAAU,EAAE,WAAW;IAyBnB,eAAe,CACnB,EAAE,EAAE,MAAM,EACV,gBAAgB,EAAE,QAAQ,GACzB,OAAO,CAAC,OAAO,CAAC;IA+Bb,wBAAwB,CAC5B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAc7D,+BAA+B,IAAI,IAAI;IAoBjC,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0BzE,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB;IASxD,oCAAoC,CAClC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAClD,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,GACvD,IAAI;IAuBP,2BAA2B,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW;IAmDpE,2CAA2C,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,EAChB,eAAe,EAAE,cAAc,EAAE,GAChC,KAAK,GAAG,SAAS;CA+CrB"}
|