mongodb-data-service 22.8.0 → 22.9.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 (57) hide show
  1. package/lib/connect-mongo-client.d.ts +4 -2
  2. package/lib/connect-mongo-client.d.ts.map +1 -1
  3. package/lib/connect-mongo-client.js +45 -18
  4. package/lib/connect-mongo-client.js.map +1 -1
  5. package/lib/connection-options.d.ts +4 -1
  6. package/lib/connection-options.d.ts.map +1 -1
  7. package/lib/csfle-collection-tracker.js +24 -35
  8. package/lib/csfle-collection-tracker.js.map +1 -1
  9. package/lib/data-service.d.ts +8 -0
  10. package/lib/data-service.d.ts.map +1 -1
  11. package/lib/data-service.js +85 -60
  12. package/lib/data-service.js.map +1 -1
  13. package/lib/index-detail-helper.js +4 -4
  14. package/lib/index-detail-helper.js.map +1 -1
  15. package/lib/index.d.ts +3 -8
  16. package/lib/index.d.ts.map +1 -1
  17. package/lib/index.js +1 -14
  18. package/lib/index.js.map +1 -1
  19. package/lib/instance-detail-helper.d.ts +1 -1
  20. package/lib/instance-detail-helper.d.ts.map +1 -1
  21. package/lib/instance-detail-helper.js +35 -46
  22. package/lib/instance-detail-helper.js.map +1 -1
  23. package/lib/redact.js +2 -3
  24. package/lib/redact.js.map +1 -1
  25. package/lib/run-command.js +1 -2
  26. package/lib/run-command.js.map +1 -1
  27. package/lib/ssh-tunnel.js +3 -3
  28. package/lib/ssh-tunnel.js.map +1 -1
  29. package/package.json +14 -19
  30. package/lib/connection-info.d.ts +0 -12
  31. package/lib/connection-info.d.ts.map +0 -1
  32. package/lib/connection-info.js +0 -3
  33. package/lib/connection-info.js.map +0 -1
  34. package/lib/connection-secrets.d.ts +0 -17
  35. package/lib/connection-secrets.d.ts.map +0 -1
  36. package/lib/connection-secrets.js +0 -135
  37. package/lib/connection-secrets.js.map +0 -1
  38. package/lib/connection-storage.d.ts +0 -8
  39. package/lib/connection-storage.d.ts.map +0 -1
  40. package/lib/connection-storage.js +0 -79
  41. package/lib/connection-storage.js.map +0 -1
  42. package/lib/connection-title.d.ts +0 -3
  43. package/lib/connection-title.d.ts.map +0 -1
  44. package/lib/connection-title.js +0 -22
  45. package/lib/connection-title.js.map +0 -1
  46. package/lib/encrypt.d.ts +0 -16
  47. package/lib/encrypt.d.ts.map +0 -1
  48. package/lib/encrypt.js +0 -104
  49. package/lib/encrypt.js.map +0 -1
  50. package/lib/import-export-connection.d.ts +0 -16
  51. package/lib/import-export-connection.d.ts.map +0 -1
  52. package/lib/import-export-connection.js +0 -123
  53. package/lib/import-export-connection.js.map +0 -1
  54. package/lib/legacy/legacy-connection-model.d.ts +0 -95
  55. package/lib/legacy/legacy-connection-model.d.ts.map +0 -1
  56. package/lib/legacy/legacy-connection-model.js +0 -264
  57. package/lib/legacy/legacy-connection-model.js.map +0 -1
@@ -1,135 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.extractSecrets = exports.mergeSecrets = void 0;
30
- const lodash_1 = __importDefault(require("lodash"));
31
- const mongodb_connection_string_url_1 = __importStar(require("mongodb-connection-string-url"));
32
- function mergeSecrets(connectionInfo, secrets) {
33
- var _a;
34
- const connectionInfoWithSecrets = lodash_1.default.cloneDeep(connectionInfo);
35
- if (!secrets) {
36
- return connectionInfoWithSecrets;
37
- }
38
- const connectionOptions = connectionInfoWithSecrets.connectionOptions;
39
- const uri = new mongodb_connection_string_url_1.default(connectionOptions.connectionString);
40
- const searchParams = uri.typedSearchParams();
41
- if (secrets.password) {
42
- uri.password = secrets.password;
43
- }
44
- if (secrets.sshTunnelPassword && connectionOptions.sshTunnel) {
45
- connectionOptions.sshTunnel.password = secrets.sshTunnelPassword;
46
- }
47
- if (secrets.sshTunnelPassphrase && connectionOptions.sshTunnel) {
48
- connectionOptions.sshTunnel.identityKeyPassphrase =
49
- secrets.sshTunnelPassphrase;
50
- }
51
- if (secrets.autoEncryption && ((_a = connectionOptions.fleOptions) === null || _a === void 0 ? void 0 : _a.autoEncryption)) {
52
- lodash_1.default.merge(connectionOptions.fleOptions.autoEncryption, secrets.autoEncryption);
53
- }
54
- if (secrets.tlsCertificateKeyFilePassword) {
55
- searchParams.set('tlsCertificateKeyFilePassword', secrets.tlsCertificateKeyFilePassword);
56
- }
57
- if (secrets.proxyPassword) {
58
- searchParams.set('proxyPassword', secrets.proxyPassword);
59
- }
60
- if (secrets.awsSessionToken) {
61
- const authMechanismProperties = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(searchParams.get('authMechanismProperties'));
62
- authMechanismProperties.set('AWS_SESSION_TOKEN', secrets.awsSessionToken);
63
- searchParams.set('authMechanismProperties', authMechanismProperties.toString());
64
- }
65
- connectionInfoWithSecrets.connectionOptions.connectionString = uri.href;
66
- return connectionInfoWithSecrets;
67
- }
68
- exports.mergeSecrets = mergeSecrets;
69
- function extractSecrets(connectionInfo) {
70
- var _a, _b, _c;
71
- const connectionInfoWithoutSecrets = lodash_1.default.cloneDeep(connectionInfo);
72
- const secrets = {};
73
- const connectionOptions = connectionInfoWithoutSecrets.connectionOptions;
74
- const uri = new mongodb_connection_string_url_1.default(connectionOptions.connectionString);
75
- const searchParams = uri.typedSearchParams();
76
- if (uri.password) {
77
- secrets.password = uri.password;
78
- uri.password = '';
79
- }
80
- if ((_a = connectionOptions.sshTunnel) === null || _a === void 0 ? void 0 : _a.password) {
81
- secrets.sshTunnelPassword = connectionOptions.sshTunnel.password;
82
- delete connectionOptions.sshTunnel.password;
83
- }
84
- if ((_b = connectionOptions.sshTunnel) === null || _b === void 0 ? void 0 : _b.identityKeyPassphrase) {
85
- secrets.sshTunnelPassphrase =
86
- connectionOptions.sshTunnel.identityKeyPassphrase;
87
- delete connectionOptions.sshTunnel.identityKeyPassphrase;
88
- }
89
- if (searchParams.has('tlsCertificateKeyFilePassword')) {
90
- secrets.tlsCertificateKeyFilePassword =
91
- searchParams.get('tlsCertificateKeyFilePassword') || undefined;
92
- searchParams.delete('tlsCertificateKeyFilePassword');
93
- }
94
- if (searchParams.has('proxyPassword')) {
95
- secrets.proxyPassword = searchParams.get('proxyPassword') || undefined;
96
- searchParams.delete('proxyPassword');
97
- }
98
- const authMechanismProperties = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(searchParams.get('authMechanismProperties'));
99
- if (authMechanismProperties.has('AWS_SESSION_TOKEN')) {
100
- secrets.awsSessionToken = authMechanismProperties.get('AWS_SESSION_TOKEN');
101
- authMechanismProperties.delete('AWS_SESSION_TOKEN');
102
- if (authMechanismProperties.toString()) {
103
- searchParams.set('authMechanismProperties', authMechanismProperties.toString());
104
- }
105
- else {
106
- searchParams.delete('authMechanismProperties');
107
- }
108
- }
109
- connectionInfoWithoutSecrets.connectionOptions.connectionString = uri.href;
110
- if ((_c = connectionOptions.fleOptions) === null || _c === void 0 ? void 0 : _c.autoEncryption) {
111
- const { autoEncryption } = connectionOptions.fleOptions;
112
- const kmsProviders = ['aws', 'local', 'azure', 'gcp', 'kmip'];
113
- const secretPaths = [
114
- 'kmsProviders.aws.secretAccessKey',
115
- 'kmsProviders.aws.sessionToken',
116
- 'kmsProviders.local.key',
117
- 'kmsProviders.azure.clientSecret',
118
- 'kmsProviders.gcp.privateKey',
119
- ...kmsProviders.map((p) => `tlsOptions.${p}.tlsCertificateKeyFilePassword`),
120
- ];
121
- connectionOptions.fleOptions.autoEncryption = lodash_1.default.omit(autoEncryption, secretPaths);
122
- if (connectionOptions.fleOptions.autoEncryption.kmsProviders)
123
- connectionOptions.fleOptions.autoEncryption.kmsProviders =
124
- omitPropertiesWhoseValuesAreEmptyObjects(connectionOptions.fleOptions.autoEncryption.kmsProviders);
125
- if (connectionOptions.fleOptions.storeCredentials) {
126
- secrets.autoEncryption = lodash_1.default.pick(autoEncryption, secretPaths);
127
- }
128
- }
129
- return { connectionInfo: connectionInfoWithoutSecrets, secrets };
130
- }
131
- exports.extractSecrets = extractSecrets;
132
- function omitPropertiesWhoseValuesAreEmptyObjects(obj) {
133
- return Object.fromEntries(Object.entries(obj).filter(([, value]) => Object.keys(value).length > 0));
134
- }
135
- //# sourceMappingURL=connection-secrets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-secrets.js","sourceRoot":"","sources":["../src/connection-secrets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuB;AACvB,+FAEuC;AAkBvC,SAAgB,YAAY,CAC1B,cAAwC,EACxC,OAAsC;;IAEtC,MAAM,yBAAyB,GAAG,gBAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE9D,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,yBAAyB,CAAC;KAClC;IAED,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,iBAAiB,CAAC;IAEtE,MAAM,GAAG,GAAG,IAAI,uCAAgB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAsB,CAAC;IAEjE,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;KACjC;IAED,IAAI,OAAO,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,SAAS,EAAE;QAC5D,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;KAClE;IAED,IAAI,OAAO,CAAC,mBAAmB,IAAI,iBAAiB,CAAC,SAAS,EAAE;QAC9D,iBAAiB,CAAC,SAAS,CAAC,qBAAqB;YAC/C,OAAO,CAAC,mBAAmB,CAAC;KAC/B;IAED,IAAI,OAAO,CAAC,cAAc,KAAI,MAAA,iBAAiB,CAAC,UAAU,0CAAE,cAAc,CAAA,EAAE;QAC1E,gBAAC,CAAC,KAAK,CACL,iBAAiB,CAAC,UAAU,CAAC,cAAc,EAC3C,OAAO,CAAC,cAAc,CACvB,CAAC;KACH;IAED,IAAI,OAAO,CAAC,6BAA6B,EAAE;QACzC,YAAY,CAAC,GAAG,CACd,+BAA+B,EAC/B,OAAO,CAAC,6BAA6B,CACtC,CAAC;KACH;IAED,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;KAC1D;IAED,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,MAAM,uBAAuB,GAC3B,IAAI,4DAA4B,CAC9B,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAC5C,CAAC;QAEJ,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAE1E,YAAY,CAAC,GAAG,CACd,yBAAyB,EACzB,uBAAuB,CAAC,QAAQ,EAAE,CACnC,CAAC;KACH;IAED,yBAAyB,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC;IAExE,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAhED,oCAgEC;AAED,SAAgB,cAAc,CAAC,cAAwC;;IAIrE,MAAM,4BAA4B,GAAG,gBAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,iBAAiB,CAAC;IACzE,MAAM,GAAG,GAAG,IAAI,uCAAgB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAsB,CAAC;IAEjE,IAAI,GAAG,CAAC,QAAQ,EAAE;QAChB,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAChC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;KACnB;IAED,IAAI,MAAA,iBAAiB,CAAC,SAAS,0CAAE,QAAQ,EAAE;QACzC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjE,OAAO,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC7C;IAED,IAAI,MAAA,iBAAiB,CAAC,SAAS,0CAAE,qBAAqB,EAAE;QACtD,OAAO,CAAC,mBAAmB;YACzB,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,CAAC;QACpD,OAAO,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,CAAC;KAC1D;IAED,IAAI,YAAY,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE;QACrD,OAAO,CAAC,6BAA6B;YACnC,YAAY,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,SAAS,CAAC;QACjE,YAAY,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;KACtD;IAED,IAAI,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;QACrC,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC;QACvE,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACtC;IAED,MAAM,uBAAuB,GAC3B,IAAI,4DAA4B,CAC9B,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAC5C,CAAC;IAEJ,IAAI,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;QACpD,OAAO,CAAC,eAAe,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC3E,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEpD,IAAI,uBAAuB,CAAC,QAAQ,EAAE,EAAE;YACtC,YAAY,CAAC,GAAG,CACd,yBAAyB,EACzB,uBAAuB,CAAC,QAAQ,EAAE,CACnC,CAAC;SACH;aAAM;YACL,YAAY,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;SAChD;KACF;IAED,4BAA4B,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC;IAE3E,IAAI,MAAA,iBAAiB,CAAC,UAAU,0CAAE,cAAc,EAAE;QAChD,MAAM,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC;QACxD,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;QACvE,MAAM,WAAW,GAAG;YAClB,kCAAkC;YAClC,+BAA+B;YAC/B,wBAAwB;YACxB,iCAAiC;YACjC,6BAA6B;YAC7B,GAAG,YAAY,CAAC,GAAG,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,gCAAgC,CACvD;SACF,CAAC;QACF,iBAAiB,CAAC,UAAU,CAAC,cAAc,GAAG,gBAAC,CAAC,IAAI,CAClD,cAAc,EACd,WAAW,CACZ,CAAC;QAKF,IAAI,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY;YAC1D,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY;gBACtD,wCAAwC,CACtC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CACzD,CAAC;QACN,IAAI,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACjD,OAAO,CAAC,cAAc,GAAG,gBAAC,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;SAC9D;KACF;IAED,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE,OAAO,EAAE,CAAC;AACnE,CAAC;AA3FD,wCA2FC;AAED,SAAS,wCAAwC,CAE/C,GAAM;IACN,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC3D,CAAC;AAClB,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { ConnectionInfo } from './connection-info';
2
- export declare class ConnectionStorage {
3
- loadAll(): Promise<ConnectionInfo[]>;
4
- save(connectionInfo: ConnectionInfo): Promise<void>;
5
- delete(connectionInfo: ConnectionInfo): Promise<void>;
6
- load(id: string): Promise<ConnectionInfo | undefined>;
7
- }
8
- //# sourceMappingURL=connection-storage.d.ts.map
@@ -1 +0,0 @@
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;AAaxD,qBAAa,iBAAiB;IAMtB,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA6CpC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCnD,MAAM,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAe5D"}
@@ -1,79 +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.ConnectionStorage = void 0;
7
- const uuid_1 = require("uuid");
8
- const legacy_connection_model_1 = require("./legacy/legacy-connection-model");
9
- const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
10
- const compass_utils_1 = require("@mongodb-js/compass-utils");
11
- const { log, mongoLogId } = (0, compass_logging_1.default)('COMPASS-DATA-SERVICE');
12
- class ConnectionStorage {
13
- async loadAll() {
14
- const { ConnectionCollection } = require('mongodb-connection-model');
15
- const connectionCollection = new ConnectionCollection();
16
- const fetchConnectionModels = (0, compass_utils_1.promisifyAmpersandMethod)(connectionCollection.fetch.bind(connectionCollection));
17
- try {
18
- await fetchConnectionModels();
19
- }
20
- catch (err) {
21
- log.error(mongoLogId(1001000101), 'Connection Storage', 'Failed to load connection, error while fetching models', { message: err.message });
22
- return [];
23
- }
24
- return connectionCollection
25
- .map((model) => {
26
- try {
27
- return (0, legacy_connection_model_1.convertConnectionModelToInfo)(model);
28
- }
29
- catch (err) {
30
- log.error(mongoLogId(1001000102), 'Connection Storage', 'Failed to load connection, error while converting from model', { message: err.message });
31
- }
32
- })
33
- .filter(Boolean);
34
- }
35
- async save(connectionInfo) {
36
- try {
37
- if (!connectionInfo.id) {
38
- throw new Error('id is required');
39
- }
40
- if (!(0, uuid_1.validate)(connectionInfo.id)) {
41
- throw new Error('id must be a uuid');
42
- }
43
- const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionInfo);
44
- await new Promise((resolve, reject) => {
45
- model.save(undefined, {
46
- success: resolve,
47
- error: reject,
48
- validate: false,
49
- });
50
- });
51
- }
52
- catch (err) {
53
- log.error(mongoLogId(1001000103), 'Connection Storage', 'Failed to save connection', { message: err.message });
54
- throw err;
55
- }
56
- }
57
- async delete(connectionInfo) {
58
- if (!connectionInfo.id) {
59
- return;
60
- }
61
- try {
62
- const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionInfo);
63
- model.destroy();
64
- }
65
- catch (err) {
66
- log.error(mongoLogId(1001000104), 'Connection Storage', 'Failed to delete connection', { message: err.message });
67
- throw err;
68
- }
69
- }
70
- async load(id) {
71
- if (!id) {
72
- return undefined;
73
- }
74
- const connections = await this.loadAll();
75
- return connections.find((connection) => id === connection.id);
76
- }
77
- }
78
- exports.ConnectionStorage = ConnectionStorage;
79
- //# sourceMappingURL=connection-storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-storage.js","sourceRoot":"","sources":["../src/connection-storage.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ConnectionInfo } from './connection-info';
2
- export declare function getConnectionTitle(info: ConnectionInfo): string;
3
- //# sourceMappingURL=connection-title.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,22 +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.getConnectionTitle = void 0;
7
- const mongodb_connection_string_url_1 = __importDefault(require("mongodb-connection-string-url"));
8
- function getConnectionTitle(info) {
9
- var _a;
10
- if ((_a = info.favorite) === null || _a === void 0 ? void 0 : _a.name) {
11
- return info.favorite.name;
12
- }
13
- try {
14
- const url = new mongodb_connection_string_url_1.default(info.connectionOptions.connectionString);
15
- return url.hosts.join(',');
16
- }
17
- catch (e) {
18
- return info.connectionOptions.connectionString || 'Connection';
19
- }
20
- }
21
- exports.getConnectionTitle = getConnectionTitle;
22
- //# sourceMappingURL=connection-title.js.map
@@ -1 +0,0 @@
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"}
package/lib/encrypt.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export declare class Encrypter {
2
- private _passphrase;
3
- private _cachedKey?;
4
- private _encryptVersionBuffer;
5
- constructor(passphrase: string);
6
- private _getKey;
7
- encrypt(plaintext: string): Promise<string>;
8
- }
9
- export declare class Decrypter {
10
- private _passphrase;
11
- private _cachedKeys;
12
- constructor(passphrase: string);
13
- private _getKey;
14
- decrypt(encryptedBase64: string): Promise<string>;
15
- }
16
- //# sourceMappingURL=encrypt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../src/encrypt.ts"],"names":[],"mappings":"AA0BA,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,qBAAqB,CAA6B;gBAE9C,UAAU,EAAE,MAAM;YAIhB,OAAO;IAwBf,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmClD;AAKD,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA6B;gBAEpC,UAAU,EAAE,MAAM;YAIhB,OAAO;IAwBf,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwCxD"}
package/lib/encrypt.js DELETED
@@ -1,104 +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.Decrypter = exports.Encrypter = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const crypto_1 = __importDefault(require("crypto"));
9
- const util_1 = require("util");
10
- const kEncryptVersionOffset = 0;
11
- const kEncryptVersionLength = 2;
12
- const kSaltOffset = kEncryptVersionOffset + kEncryptVersionLength;
13
- const kSaltLength = 16;
14
- const kIvOffset = kSaltOffset + kSaltLength;
15
- const kIvLength = 16;
16
- const kAuthTagOffset = kIvOffset + kIvLength;
17
- const kAuthTagLength = 16;
18
- const kCiphertextOffset = kAuthTagOffset + kAuthTagLength;
19
- const randomBytes = (0, util_1.promisify)(crypto_1.default.randomBytes);
20
- const pbkdf2 = (0, util_1.promisify)(crypto_1.default.pbkdf2);
21
- class Encrypter {
22
- constructor(passphrase) {
23
- this._encryptVersionBuffer = Buffer.from([0x00, 0x01]);
24
- this._passphrase = passphrase;
25
- }
26
- async _getKey() {
27
- if (this._cachedKey) {
28
- return this._cachedKey;
29
- }
30
- const salt = await randomBytes(kSaltLength);
31
- const key = await pbkdf2(Buffer.from(this._passphrase, 'utf8'), salt, 100000, 32, 'sha512');
32
- return (this._cachedKey = { salt, key });
33
- }
34
- async encrypt(plaintext) {
35
- const { salt, key } = await this._getKey();
36
- const iv = await randomBytes(kIvLength);
37
- const cipher = crypto_1.default.createCipheriv('aes-256-gcm', key, iv, {
38
- authTagLength: kAuthTagLength,
39
- });
40
- const ciphertext = [];
41
- ciphertext.push(cipher.update(Buffer.from(plaintext, 'utf8')));
42
- ciphertext.push(cipher.final());
43
- const authTag = cipher.getAuthTag();
44
- assert_1.default.deepStrictEqual([
45
- this._encryptVersionBuffer.length,
46
- salt.length,
47
- iv.length,
48
- authTag.length,
49
- ], [kEncryptVersionLength, kSaltLength, kIvLength, kAuthTagLength]);
50
- return Buffer.concat([
51
- this._encryptVersionBuffer,
52
- salt,
53
- iv,
54
- authTag,
55
- ...ciphertext,
56
- ]).toString('base64');
57
- }
58
- }
59
- exports.Encrypter = Encrypter;
60
- class Decrypter {
61
- constructor(passphrase) {
62
- this._cachedKeys = new Map();
63
- this._passphrase = passphrase;
64
- }
65
- async _getKey(salt) {
66
- const cacheKey = salt.toString('base64');
67
- let key = this._cachedKeys.get(cacheKey);
68
- if (!key) {
69
- key = await pbkdf2(Buffer.from(this._passphrase, 'utf8'), salt, 100000, 32, 'sha512');
70
- this._cachedKeys.set(cacheKey, key);
71
- }
72
- return key;
73
- }
74
- async decrypt(encryptedBase64) {
75
- const encrypted = Buffer.from(encryptedBase64, 'base64');
76
- const version = encrypted
77
- .subarray(kEncryptVersionOffset, kEncryptVersionOffset + kEncryptVersionLength)
78
- .readUInt16BE();
79
- const salt = encrypted.subarray(kSaltOffset, kSaltOffset + kSaltLength);
80
- const iv = encrypted.subarray(kIvOffset, kIvOffset + kIvLength);
81
- const authTag = encrypted.subarray(kAuthTagOffset, kAuthTagOffset + kAuthTagLength);
82
- const ciphertext = encrypted.subarray(kCiphertextOffset);
83
- if (version !== 0x0001) {
84
- throw new Error(`Unknown encrypted data version: 0x${version.toString(16)}`);
85
- }
86
- const key = await this._getKey(salt);
87
- const cipher = crypto_1.default.createDecipheriv('aes-256-gcm', key, iv);
88
- cipher.setAuthTag(authTag);
89
- const plaintext = [];
90
- plaintext.push(cipher.update(ciphertext));
91
- try {
92
- plaintext.push(cipher.final());
93
- }
94
- catch (err) {
95
- if (err === null || err === void 0 ? void 0 : err.message.includes('unable to authenticate data')) {
96
- throw new Error('Cannot decrypt due to corrupt data or wrong passphrase');
97
- }
98
- throw err;
99
- }
100
- return Buffer.concat(plaintext).toString('utf8');
101
- }
102
- }
103
- exports.Decrypter = Decrypter;
104
- //# sourceMappingURL=encrypt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../src/encrypt.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { ConnectionInfo } from './connection-info';
2
- export interface ExportImportConnectionOptions {
3
- passphrase?: string;
4
- filter?: (info: ConnectionInfo) => boolean;
5
- trackingProps?: Record<string, unknown> | undefined;
6
- }
7
- export interface ExportConnectionOptions extends ExportImportConnectionOptions {
8
- loadConnections?: () => Promise<ConnectionInfo[]> | ConnectionInfo[];
9
- removeSecrets?: boolean;
10
- }
11
- export interface ImportConnectionOptions extends ExportImportConnectionOptions {
12
- saveConnections?: (connections: ConnectionInfo[]) => Promise<void> | void;
13
- }
14
- export declare function exportConnections(options?: ExportConnectionOptions): Promise<string>;
15
- export declare function importConnections(connectionList: string, options?: ImportConnectionOptions): Promise<void>;
16
- //# sourceMappingURL=import-export-connection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-export-connection.d.ts","sourceRoot":"","sources":["../src/import-export-connection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAkBxD,MAAM,WAAW,6BAA6B;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CACrD;AAED,MAAM,WAAW,uBAAwB,SAAQ,6BAA6B;IAC5E,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,uBAAwB,SAAQ,6BAA6B;IAC5E,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3E;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAgBD,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAuGf"}
@@ -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
- exports.importConnections = exports.exportConnections = void 0;
7
- const bson_1 = require("bson");
8
- const lodash_1 = require("lodash");
9
- const connection_secrets_1 = require("./connection-secrets");
10
- const connection_storage_1 = require("./connection-storage");
11
- const encrypt_1 = require("./encrypt");
12
- const compass_logging_1 = __importDefault(require("@mongodb-js/compass-logging"));
13
- const { log, mongoLogId, track } = (0, compass_logging_1.default)('COMPASS-CONNECTION-IMPORT-EXPORT');
14
- const kCurrentVersion = 1;
15
- const kFileTypeDescription = 'Compass Connections';
16
- async function exportConnections(options = {}) {
17
- const { loadConnections = async () => new connection_storage_1.ConnectionStorage().loadAll(), filter = (info) => { var _a; return (_a = info.favorite) === null || _a === void 0 ? void 0 : _a.name; }, passphrase = '', removeSecrets = false, trackingProps = undefined, } = options;
18
- if (passphrase && removeSecrets) {
19
- throw new Error('Cannot both specify to remove secrets and provide a passphrase for encrypting secrets');
20
- }
21
- const allConnections = await loadConnections();
22
- let exportConnections = (0, lodash_1.cloneDeep)(allConnections.filter(filter));
23
- log.info(mongoLogId(1001000151), 'Connection Export', 'Exporting connections', {
24
- hasPassphrase: !!passphrase,
25
- removeSecrets,
26
- count: exportConnections.length,
27
- });
28
- if (trackingProps !== undefined) {
29
- track('Connection Exported', {
30
- ...trackingProps,
31
- count: exportConnections.length,
32
- });
33
- }
34
- if (passphrase || removeSecrets) {
35
- const encrypter = new encrypt_1.Encrypter(passphrase);
36
- exportConnections = await Promise.all(exportConnections.map(async (originalInfo) => {
37
- const { connectionInfo, secrets } = (0, connection_secrets_1.extractSecrets)(originalInfo);
38
- if (removeSecrets) {
39
- return connectionInfo;
40
- }
41
- const encrypted = await encrypter.encrypt(bson_1.EJSON.stringify({ secrets }, { relaxed: false }));
42
- return { ...connectionInfo, connectionSecrets: encrypted };
43
- }));
44
- }
45
- const exportResult = {
46
- type: kFileTypeDescription,
47
- version: kCurrentVersion,
48
- connections: exportConnections,
49
- };
50
- return bson_1.EJSON.stringify(exportResult, undefined, 2, { relaxed: false });
51
- }
52
- exports.exportConnections = exportConnections;
53
- class CompassImportError extends Error {
54
- constructor(message, extraProperties) {
55
- super(message);
56
- Object.assign(this, extraProperties);
57
- }
58
- }
59
- async function saveConnectionsToDefaultStorage(connections) {
60
- const storage = new connection_storage_1.ConnectionStorage();
61
- await Promise.all(connections.map((conn) => storage.save(conn)));
62
- }
63
- async function importConnections(connectionList, options = {}) {
64
- const { saveConnections = saveConnectionsToDefaultStorage, filter = () => true, passphrase = '', trackingProps = undefined, } = options;
65
- let connections;
66
- try {
67
- const parsed = bson_1.EJSON.parse(connectionList);
68
- if (typeof parsed !== 'object' ||
69
- !parsed ||
70
- parsed.type !== kFileTypeDescription) {
71
- throw new CompassImportError('Input is in unrecognized format (expected Compass import file)');
72
- }
73
- const { version } = parsed;
74
- if (!version || version !== kCurrentVersion) {
75
- throw new CompassImportError(`Input is in unrecognized format (expected version ${kCurrentVersion}, got ${String(version)})`);
76
- }
77
- log.info(mongoLogId(1001000152), 'Connection Import', 'Reading import file', {
78
- hasPassphrase: !!passphrase,
79
- count: parsed.connections.length,
80
- });
81
- if (trackingProps !== undefined) {
82
- track('Connection Imported', {
83
- ...trackingProps,
84
- count: parsed.connections.length,
85
- });
86
- }
87
- let decrypter;
88
- connections = await Promise.all(parsed.connections.map(async (originalEntry) => {
89
- var _a;
90
- const { connectionSecrets, ...entry } = originalEntry !== null && originalEntry !== void 0 ? originalEntry : {};
91
- if (connectionSecrets) {
92
- if (!passphrase) {
93
- throw new CompassImportError('Input file contains encrypted secrets but no passphrase was provided', { passphraseRequired: true });
94
- }
95
- decrypter !== null && decrypter !== void 0 ? decrypter : (decrypter = new encrypt_1.Decrypter(passphrase));
96
- const { secrets } = (_a = bson_1.EJSON.parse(await decrypter.decrypt(connectionSecrets))) !== null && _a !== void 0 ? _a : {};
97
- if (!secrets) {
98
- throw new CompassImportError('Input file contained invalid encrypted data');
99
- }
100
- return (0, connection_secrets_1.mergeSecrets)(entry, secrets);
101
- }
102
- return entry;
103
- }));
104
- }
105
- catch (err) {
106
- if (err instanceof CompassImportError) {
107
- throw err;
108
- }
109
- const newErr = new CompassImportError(`Could not parse connections list: ${String(err.message)}`);
110
- newErr.stack = err.stack;
111
- throw newErr;
112
- }
113
- connections = connections.filter(filter);
114
- log.info(mongoLogId(1001000149), 'Connection Import', 'Starting connection import', {
115
- count: connections.length,
116
- });
117
- await saveConnections(connections);
118
- log.info(mongoLogId(1001000150), 'Connection Import', 'Connection import complete', {
119
- count: connections.length,
120
- });
121
- }
122
- exports.importConnections = importConnections;
123
- //# sourceMappingURL=import-export-connection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-export-connection.js","sourceRoot":"","sources":["../src/import-export-connection.ts"],"names":[],"mappings":"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"}