@mongodb-js/devtools-connect
Advanced tools
Comparing version 3.1.0 to 3.2.0
@@ -14,3 +14,3 @@ import type { ConnectLogEmitter } from './index'; | ||
private stateShareServer; | ||
constructor(options: Pick<DevtoolsConnectOptions, 'productDocsLink' | 'productName' | 'oidc' | 'parentHandle'>, logger: ConnectLogEmitter, systemCA: string | undefined); | ||
constructor(options: Pick<DevtoolsConnectOptions, 'productDocsLink' | 'productName' | 'oidc' | 'parentHandle'>, logger: ConnectLogEmitter, ca: string); | ||
getStateShareServer(): Promise<string>; | ||
@@ -20,3 +20,2 @@ destroy(): Promise<void>; | ||
export interface DevtoolsConnectOptions extends MongoClientOptions { | ||
useSystemCA?: boolean; | ||
productDocsLink: string; | ||
@@ -23,0 +22,0 @@ productName: string; |
@@ -32,3 +32,2 @@ "use strict"; | ||
const fast_failure_connect_1 = require("./fast-failure-connect"); | ||
const system_ca_1 = require("system-ca"); | ||
const oidc_plugin_1 = require("@mongodb-js/oidc-plugin"); | ||
@@ -242,3 +241,3 @@ const lodash_merge_1 = __importDefault(require("lodash.merge")); | ||
class DevtoolsConnectionState { | ||
constructor(options, logger, systemCA) { | ||
constructor(options, logger, ca) { | ||
this.stateShareClient = null; | ||
@@ -259,5 +258,3 @@ this.stateShareServer = null; | ||
redirectServerRequestHandler: handler_1.oidcServerRequestHandler.bind(null, options), | ||
...(systemCA | ||
? addToOIDCPluginHttpOptions(options.oidc, { ca: systemCA }) | ||
: {}), | ||
...addToOIDCPluginHttpOptions(options.oidc, { ca }), | ||
}); | ||
@@ -285,12 +282,11 @@ } | ||
try { | ||
let systemCA; | ||
if (clientOptions.useSystemCA) { | ||
const systemCAOpts = { includeNodeCertificates: true }; | ||
const ca = await (0, system_ca_1.systemCertsAsync)(systemCAOpts); | ||
logger.emit('devtools-connect:used-system-ca', { | ||
caCount: ca.length, | ||
asyncFallbackError: systemCAOpts.asyncFallbackError, | ||
}); | ||
systemCA = ca.join('\n'); | ||
} | ||
const { ca, asyncFallbackError, systemCertsError, systemCACount } = await (0, devtools_proxy_support_1.systemCA)({ | ||
ca: clientOptions.ca, | ||
tlsCAFile: clientOptions.tlsCAFile || getConnectionStringParam(uri, 'tlsCAFile'), | ||
}); | ||
logger.emit('devtools-connect:used-system-ca', { | ||
caCount: systemCACount, | ||
asyncFallbackError, | ||
systemCertsError, | ||
}); | ||
const proxyAgent = clientOptions.proxy && | ||
@@ -301,3 +297,3 @@ (0, devtools_proxy_support_1.useOrCreateAgent)('createConnection' in clientOptions.proxy | ||
...clientOptions.proxy, | ||
...(systemCA ? { ca: systemCA } : {}), | ||
ca, | ||
}, clientOptions.applyProxyToOIDC ? undefined : 'mongodb://'); | ||
@@ -332,4 +328,4 @@ cleanupOnClientClose.push(() => proxyAgent?.destroy()); | ||
const state = clientOptions.parentState ?? | ||
new DevtoolsConnectionState(clientOptions, logger, systemCA); | ||
const mongoClientOptions = (0, lodash_merge_1.default)({}, clientOptions, shouldAddOidcCallbacks ? state.oidcPlugin.mongoClientOptions : {}, systemCA ? { ca: systemCA } : {}); | ||
new DevtoolsConnectionState(clientOptions, logger, ca); | ||
const mongoClientOptions = (0, lodash_merge_1.default)({}, clientOptions, shouldAddOidcCallbacks ? state.oidcPlugin.mongoClientOptions : {}, { ca }); | ||
mongoClientOptions.lookup = (hostname, options, callback) => { | ||
@@ -381,15 +377,21 @@ return dns_1.default.lookup(hostname, { verbatim: false, ...options }, callback); | ||
exports.connectMongoClient = connectMongoClient; | ||
function hasProxyHostOption(uri, clientOptions) { | ||
if (clientOptions.proxyHost || clientOptions.proxyPort) | ||
return true; | ||
let cs; | ||
function getMaybeConectionString(uri) { | ||
try { | ||
cs = new mongodb_connection_string_url_1.default(uri, { looseValidation: true }); | ||
return new mongodb_connection_string_url_1.default(uri, { looseValidation: true }); | ||
} | ||
catch { | ||
return false; | ||
return null; | ||
} | ||
const sp = cs.typedSearchParams(); | ||
return sp.has('proxyHost') || sp.has('proxyPort'); | ||
} | ||
function getConnectionStringParam(uri, key) { | ||
return (getMaybeConectionString(uri) | ||
?.typedSearchParams() | ||
.get(key) ?? null); | ||
} | ||
function hasProxyHostOption(uri, clientOptions) { | ||
if (clientOptions.proxyHost || clientOptions.proxyPort) | ||
return true; | ||
const sp = getMaybeConectionString(uri)?.typedSearchParams(); | ||
return sp?.has('proxyHost') || sp?.has('proxyPort') || false; | ||
} | ||
function isHumanOidcFlow(uri, clientOptions) { | ||
@@ -402,13 +404,6 @@ if ((clientOptions.authMechanism && | ||
} | ||
let cs; | ||
try { | ||
cs = new mongodb_connection_string_url_1.default(uri, { looseValidation: true }); | ||
} | ||
catch { | ||
return false; | ||
} | ||
const sp = cs.typedSearchParams(); | ||
const authMechanism = clientOptions.authMechanism ?? sp.get('authMechanism'); | ||
const sp = getMaybeConectionString(uri)?.typedSearchParams(); | ||
const authMechanism = clientOptions.authMechanism ?? sp?.get('authMechanism'); | ||
return (authMechanism === 'MONGODB-OIDC' && | ||
!new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(sp.get('authMechanismProperties')).get('ENVIRONMENT')); | ||
!new mongodb_connection_string_url_1.CommaAndColonSeparatedRecord(sp?.get('authMechanismProperties')).get('ENVIRONMENT')); | ||
} | ||
@@ -415,0 +410,0 @@ exports.isHumanOidcFlow = isHumanOidcFlow; |
@@ -65,2 +65,3 @@ "use strict"; | ||
asyncFallbackError: ev.asyncFallbackError?.message, | ||
systemCertsError: ev.systemCertsError?.message, | ||
}); | ||
@@ -67,0 +68,0 @@ }); |
@@ -51,2 +51,3 @@ import { ProxyEventMap } from '@mongodb-js/devtools-proxy-support'; | ||
asyncFallbackError: Error | undefined; | ||
systemCertsError: Error | undefined; | ||
} | ||
@@ -53,0 +54,0 @@ export interface ConnectEventMap extends MongoDBOIDCLogEventsMap, ProxyEventMap { |
{ | ||
"name": "@mongodb-js/devtools-connect", | ||
"version": "3.1.0", | ||
"version": "3.2.0", | ||
"description": "A connection establishment utility for MongoDB developer tools", | ||
@@ -50,8 +50,7 @@ "homepage": "https://github.com/mongodb-js/devtools-shared/tree/main/packages/devtools-connect", | ||
"dependencies": { | ||
"@mongodb-js/devtools-proxy-support": "^0.2.0", | ||
"@mongodb-js/devtools-proxy-support": "^0.3.0", | ||
"@mongodb-js/oidc-http-server-pages": "1.1.2", | ||
"lodash.merge": "^4.6.2", | ||
"mongodb-connection-string-url": "^3.0.0", | ||
"socks": "^2.7.3", | ||
"system-ca": "^2.0.0" | ||
"socks": "^2.7.3" | ||
}, | ||
@@ -96,3 +95,3 @@ "peerDependencies": { | ||
}, | ||
"gitHead": "cb955eba7effce5aabd90f41119484f253fb1755" | ||
"gitHead": "64b898106d63c9da98f49fe4d9748caad465bad6" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12
86110
956
+ Added@mongodb-js/devtools-proxy-support@0.3.10(transitive)
+ Added@mongodb-js/socksv5@0.0.10(transitive)
+ Addedlru-cache@11.0.1(transitive)
- Removedsystem-ca@^2.0.0
- Removed@mongodb-js/devtools-proxy-support@0.2.0(transitive)
- Removedlru-cache@7.18.3(transitive)
- Removedproxy-agent@6.4.0(transitive)
- Removedproxy-from-env@1.1.0(transitive)
- Removedsocksv5@0.0.6(transitive)