mongodb-data-service 21.14.0 → 21.16.1
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 +28 -63
- 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 +2 -1
- package/lib/connection-secrets.d.ts.map +1 -0
- package/lib/connection-secrets.js +15 -13
- 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 +7 -6
- 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 +16 -9
- package/lib/data-service.d.ts.map +1 -0
- package/lib/data-service.js +38 -34
- 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 +5 -5
- package/lib/instance-detail-helper.d.ts.map +1 -0
- package/lib/instance-detail-helper.js +16 -17
- package/lib/instance-detail-helper.js.map +1 -1
- package/lib/legacy/legacy-connection-model.d.ts +6 -4
- package/lib/legacy/legacy-connection-model.d.ts.map +1 -0
- package/lib/legacy/legacy-connection-model.js +29 -25
- package/lib/legacy/legacy-connection-model.js.map +1 -1
- package/lib/redact.d.ts +4 -3
- package/lib/redact.d.ts.map +1 -0
- package/lib/redact.js +1 -1
- package/lib/redact.js.map +1 -1
- 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 +24 -18
- package/lib/ssh-tunnel.js.map +1 -1
- package/lib/types.d.ts +6 -3
- 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,85 +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
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
url: redact_1.redactConnectionString(urlWithSshTunnel),
|
|
21
|
-
options: driverOptions,
|
|
22
|
-
});
|
|
23
|
-
const mongoClient = new mongodb_1.MongoClient(urlWithSshTunnel, driverOptions);
|
|
24
|
-
if (setupListeners) {
|
|
25
|
-
setupListeners(mongoClient);
|
|
12
|
+
const { debug, log } = (0, compass_logging_1.default)('COMPASS-CONNECT');
|
|
13
|
+
async function connectMongoClientCompass(connectionOptions, setupListeners) {
|
|
14
|
+
debug('connectMongoClient invoked', (0, redact_1.redactConnectionOptions)(connectionOptions));
|
|
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
|
-
ssh_tunnel_1.waitForTunnelError(tunnel),
|
|
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: 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([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 options = {
|
|
59
|
-
monitorCommands: true,
|
|
60
|
-
};
|
|
61
|
-
const isLoadBalanced = url.searchParams.get('loadBalanced') === 'true';
|
|
62
|
-
const isReplicaSet = url.isSRV || url.hosts.length > 1 || url.searchParams.has('replicaSet');
|
|
63
|
-
const hasDirectConnection = url.searchParams.has('directConnection');
|
|
64
|
-
if (!isReplicaSet && !isLoadBalanced && !hasDirectConnection) {
|
|
65
|
-
url.searchParams.set('directConnection', 'true');
|
|
66
|
-
}
|
|
67
|
-
if (!url.searchParams.has('tlsCertificateFile') &&
|
|
68
|
-
url.searchParams.has('tlsCertificateKeyFile')) {
|
|
69
|
-
url.searchParams.set('tlsCertificateFile', url.searchParams.get('tlsCertificateKeyFile'));
|
|
70
|
-
}
|
|
71
|
-
return [url.href, options];
|
|
72
|
-
}
|
|
73
|
-
async function resolveSrvRecord(url) {
|
|
74
|
-
let resolvedUrl;
|
|
75
|
-
try {
|
|
76
|
-
resolvedUrl = await resolve_mongodb_srv_1.default(url);
|
|
77
|
-
log.info(mongoLogId(1001000010), 'Connect', 'Resolved SRV record', {
|
|
78
|
-
from: redact_1.redactConnectionString(url),
|
|
79
|
-
to: redact_1.redactConnectionString(resolvedUrl),
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
log.error(mongoLogId(1001000011), 'Connect', 'Resolving SRV record failed', { from: redact_1.redactConnectionString(url), error: error.message });
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
86
|
-
return resolvedUrl;
|
|
87
|
-
}
|
|
52
|
+
exports.default = connectMongoClientCompass;
|
|
88
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,4 +1,4 @@
|
|
|
1
|
-
import { ConnectionInfo } from './connection-info';
|
|
1
|
+
import type { ConnectionInfo } from './connection-info';
|
|
2
2
|
export interface ConnectionSecrets {
|
|
3
3
|
password?: string;
|
|
4
4
|
sshTunnelPassphrase?: string;
|
|
@@ -11,3 +11,4 @@ export declare function extractSecrets(connectionInfo: Readonly<ConnectionInfo>)
|
|
|
11
11
|
connectionInfo: ConnectionInfo;
|
|
12
12
|
secrets: ConnectionSecrets;
|
|
13
13
|
};
|
|
14
|
+
//# 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,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,CAoDhB;AAED,wBAAgB,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG;IACxE,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAuDA"}
|
|
@@ -32,6 +32,7 @@ function mergeSecrets(connectionInfo, secrets) {
|
|
|
32
32
|
}
|
|
33
33
|
const connectionOptions = connectionInfoWithSecrets.connectionOptions;
|
|
34
34
|
const uri = new mongodb_connection_string_url_1.default(connectionOptions.connectionString);
|
|
35
|
+
const searchParams = uri.typedSearchParams();
|
|
35
36
|
if (secrets.password) {
|
|
36
37
|
uri.password = secrets.password;
|
|
37
38
|
}
|
|
@@ -40,15 +41,15 @@ function mergeSecrets(connectionInfo, secrets) {
|
|
|
40
41
|
secrets.sshTunnelPassphrase;
|
|
41
42
|
}
|
|
42
43
|
if (secrets.tlsCertificateKeyFilePassword) {
|
|
43
|
-
|
|
44
|
+
searchParams.set('tlsCertificateKeyFilePassword', secrets.tlsCertificateKeyFilePassword);
|
|
44
45
|
}
|
|
45
46
|
if (secrets.proxyPassword) {
|
|
46
|
-
|
|
47
|
+
searchParams.set('proxyPassword', secrets.proxyPassword);
|
|
47
48
|
}
|
|
48
49
|
if (secrets.awsSessionToken) {
|
|
49
|
-
const authMechanismProperties = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(
|
|
50
|
+
const authMechanismProperties = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(searchParams.get('authMechanismProperties'));
|
|
50
51
|
authMechanismProperties.set('AWS_SESSION_TOKEN', secrets.awsSessionToken);
|
|
51
|
-
|
|
52
|
+
searchParams.set('authMechanismProperties', authMechanismProperties.toString());
|
|
52
53
|
}
|
|
53
54
|
connectionInfoWithSecrets.connectionOptions.connectionString = uri.href;
|
|
54
55
|
return connectionInfoWithSecrets;
|
|
@@ -60,6 +61,7 @@ function extractSecrets(connectionInfo) {
|
|
|
60
61
|
const secrets = {};
|
|
61
62
|
const connectionOptions = connectionInfoWithoutSecrets.connectionOptions;
|
|
62
63
|
const uri = new mongodb_connection_string_url_1.default(connectionOptions.connectionString);
|
|
64
|
+
const searchParams = uri.typedSearchParams();
|
|
63
65
|
if (uri.password) {
|
|
64
66
|
secrets.password = uri.password;
|
|
65
67
|
uri.password = '';
|
|
@@ -69,24 +71,24 @@ function extractSecrets(connectionInfo) {
|
|
|
69
71
|
connectionOptions.sshTunnel.identityKeyPassphrase;
|
|
70
72
|
delete connectionOptions.sshTunnel.identityKeyPassphrase;
|
|
71
73
|
}
|
|
72
|
-
if (
|
|
74
|
+
if (searchParams.has('tlsCertificateKeyFilePassword')) {
|
|
73
75
|
secrets.tlsCertificateKeyFilePassword =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
searchParams.get('tlsCertificateKeyFilePassword') || undefined;
|
|
77
|
+
searchParams.delete('tlsCertificateKeyFilePassword');
|
|
76
78
|
}
|
|
77
|
-
if (
|
|
78
|
-
secrets.proxyPassword =
|
|
79
|
-
|
|
79
|
+
if (searchParams.has('proxyPassword')) {
|
|
80
|
+
secrets.proxyPassword = searchParams.get('proxyPassword') || undefined;
|
|
81
|
+
searchParams.delete('proxyPassword');
|
|
80
82
|
}
|
|
81
|
-
const authMechanismProperties = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(
|
|
83
|
+
const authMechanismProperties = new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(searchParams.get('authMechanismProperties'));
|
|
82
84
|
if (authMechanismProperties.has('AWS_SESSION_TOKEN')) {
|
|
83
85
|
secrets.awsSessionToken = authMechanismProperties.get('AWS_SESSION_TOKEN');
|
|
84
86
|
authMechanismProperties.delete('AWS_SESSION_TOKEN');
|
|
85
87
|
if (authMechanismProperties.toString()) {
|
|
86
|
-
|
|
88
|
+
searchParams.set('authMechanismProperties', authMechanismProperties.toString());
|
|
87
89
|
}
|
|
88
90
|
else {
|
|
89
|
-
|
|
91
|
+
searchParams.delete('authMechanismProperties');
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
connectionInfoWithoutSecrets.connectionOptions.connectionString = uri.href;
|
|
@@ -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 {
|
|
@@ -15,24 +15,24 @@ class ConnectionStorage {
|
|
|
15
15
|
if (!connectionInfo.id) {
|
|
16
16
|
throw new Error('id is required');
|
|
17
17
|
}
|
|
18
|
-
if (!uuid_1.validate(connectionInfo.id)) {
|
|
18
|
+
if (!(0, uuid_1.validate)(connectionInfo.id)) {
|
|
19
19
|
throw new Error('id must be a uuid');
|
|
20
20
|
}
|
|
21
|
-
const model = await legacy_connection_model_1.convertConnectionInfoToModel(connectionInfo);
|
|
21
|
+
const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionInfo);
|
|
22
22
|
model.save();
|
|
23
23
|
}
|
|
24
24
|
async delete(connectionOptions) {
|
|
25
25
|
if (!connectionOptions.id) {
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
|
-
const model = await legacy_connection_model_1.convertConnectionInfoToModel(connectionOptions);
|
|
28
|
+
const model = await (0, legacy_connection_model_1.convertConnectionInfoToModel)(connectionOptions);
|
|
29
29
|
model.destroy();
|
|
30
30
|
}
|
|
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, }?: {
|
|
@@ -41,7 +43,10 @@ declare class DataService extends EventEmitter {
|
|
|
41
43
|
listDatabases({ nameOnly, privileges, }?: {
|
|
42
44
|
nameOnly?: true;
|
|
43
45
|
privileges?: ConnectionStatusWithPrivileges['authInfo']['authenticatedUserPrivileges'] | null;
|
|
44
|
-
}): Promise<
|
|
46
|
+
}): Promise<{
|
|
47
|
+
_id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
}[]>;
|
|
45
50
|
connect(): Promise<void>;
|
|
46
51
|
estimatedCount(ns: string, options: EstimatedDocumentCountOptions, callback: Callback<number>): void;
|
|
47
52
|
count(ns: string, filter: Filter<Document>, options: CountDocumentsOptions, callback: Callback<number>): void;
|
|
@@ -90,7 +95,9 @@ declare class DataService extends EventEmitter {
|
|
|
90
95
|
private setupListeners;
|
|
91
96
|
private get _initializedClient();
|
|
92
97
|
private get _defaultDb();
|
|
93
|
-
databaseStats(name: string): Promise<
|
|
98
|
+
databaseStats(name: string): Promise<ReturnType<typeof adaptDatabaseInfo> & {
|
|
99
|
+
name: string;
|
|
100
|
+
}>;
|
|
94
101
|
private _buildCollectionDetail;
|
|
95
102
|
private _buildCollectionStats;
|
|
96
103
|
private _buildDatabaseDetail;
|
|
@@ -99,9 +106,9 @@ declare class DataService extends EventEmitter {
|
|
|
99
106
|
private _collectionName;
|
|
100
107
|
private _databaseName;
|
|
101
108
|
private _checkIsWritable;
|
|
102
|
-
private _checkIsMongos;
|
|
103
109
|
private _translateMessage;
|
|
104
110
|
private _cleanup;
|
|
105
111
|
private _startLogOp;
|
|
106
112
|
}
|
|
107
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":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EAIV,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EAEpB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,6BAA6B,EAC7B,cAAc,EACd,MAAM,EACN,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAEf,kBAAkB,EAElB,kBAAkB,EAOlB,mBAAmB,EAGnB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAGlB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EACV,QAAQ,EAER,eAAe,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAuBpE,cAAM,WAAY,SAAQ,YAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,6BAA6B,CAAC,CAGpC;IAEF,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAY;IAM5B,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,GAAG,CAAS;gBAER,iBAAiB,EAAE,iBAAiB;IAMhD,+BAA+B,IAC3B;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAA;KAAE,GAC5C,SAAS;IAIb,OAAO,CAAC,OAAO;IAIf,oBAAoB,IAAI,QAAQ,CAAC,iBAAiB,CAAC;IAInD,mBAAmB,IAAI,mBAAmB;IAI1C,iBAAiB,IAAI,kBAAkB;IAWvC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IA8B5E,WAAW,CACT,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,GACpC,IAAI;IA4BP,eAAe,CACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,IAAI;IA2BD,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAAG,IAAI,CAAC;IAgBzD,OAAO,CACL,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IAgBP,UAAU,IAAI,OAAO;IASrB,QAAQ,IAAI,OAAO;IAUnB,mBAAmB,IAAI,YAAY;IAI7B,gBAAgB,IAAI,OAAO,CAAC,8BAA8B,CAAC;YAmBnD,wBAAwB;IAiBhC,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,QAAa,EACrB,EACE,QAAQ,EACR,UAAiB,GAClB,GAAE;QACD,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,UAAU,CAAC,EACP,8BAA8B,CAAC,UAAU,CAAC,CAAC,6BAA6B,CAAC,GACzE,IAAI,CAAC;KACL,GACL,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAAE,CAAC;IAgF9C,aAAa,CAAC,EAClB,QAAQ,EACR,UAAiB,GAClB,GAAE;QACD,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,UAAU,CAAC,EACP,8BAA8B,CAAC,UAAU,CAAC,CAAC,6BAA6B,CAAC,GACzE,IAAI,CAAC;KACL,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IA6E3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C9B,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,6BAA6B,EACtC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GACzB,IAAI;IAoBP,KAAK,CACH,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GACzB,IAAI;IAmBP,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GACvC,IAAI;IA2BP,WAAW,CACT,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GACzB,IAAI;IAuBP,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAsB5E,SAAS,CACP,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,IAAI;IAwBP,UAAU,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC/B,IAAI;IAoBD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAsB7D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAyB7D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IA0BvE,SAAS,CACP,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,iBAAiB;IACpB,SAAS,CACP,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAAE,EACpB,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACpC,IAAI;IACP,SAAS,CACP,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACpC,IAAI;IAiCP,IAAI,CACF,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAC7B,IAAI;IAsBP,KAAK,CACH,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,OAAO,EAAE,WAAW,GACnB,UAAU;IAqBb,iBAAiB,CACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,WAAW,EAAE,QAAQ,EACrB,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IA8BP,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IA6BP,OAAO,CACL,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IA2BP,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAuBnE,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IA8B1C,SAAS,CACP,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,GAC5C,IAAI;IAwBP,UAAU,CACR,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,EAAE,EAChB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,GAC7C,IAAI;IA2BP,OAAO,CACL,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,EAAE,EAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAWtC,gBAAgB,CACd,EAAE,EAAE,MAAM,EAIV,KAAK,EAAE,QAAQ,GAAG;QAAE,OAAO,CAAC,EAAE,KAAK,CAAA;KAAE,EACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IAiCP,SAAS,CACP,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,EACzC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IAyBP,UAAU,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC,GAC1C,IAAI;IA2BP,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAmClE,mBAAmB,IAAI,IAAI,GAAG,mBAAmB;IAOjD,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAsB/C,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAqBvC,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GACvC,IAAI;IAoCP,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI;IAoCP,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAWvD,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,EACE,KAAK,EACL,IAAI,EACJ,MAAM,GACP,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAA;KAAO,EACtE,OAAO,GAAE,gBAAqB,GAC7B,iBAAiB;IA8BpB,YAAY,IAAI,aAAa;IAQ7B,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ1E,WAAW,IAAI,OAAO;IAYtB,OAAO,CAAC,cAAc;IA6KtB,OAAO,KAAK,kBAAkB,GAK7B;IAED,OAAO,KAAK,UAAU,GAErB;IAQK,aAAa,CACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBnE,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,qBAAqB;IAqC7B,OAAO,CAAC,oBAAoB;IAe5B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU;IAYnC,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,WAAW;CA8BpB;AAED,eAAe,WAAW,CAAC"}
|