mongodb-core
Advanced tools
Comparing version 3.2.2 to 3.2.3
@@ -5,2 +5,13 @@ # Change Log | ||
<a name="3.2.3"></a> | ||
## [3.2.3](https://github.com/mongodb-js/mongodb-core/compare/v3.2.2...v3.2.3) (2019-04-05) | ||
### Bug Fixes | ||
* **uri_parser:** restore original compression parsing ([70a7d94](https://github.com/mongodb-js/mongodb-core/commit/70a7d94)) | ||
* **uri_parser:** support URI Options spec tests ([c067dbc](https://github.com/mongodb-js/mongodb-core/commit/c067dbc)) | ||
<a name="3.2.2"></a> | ||
@@ -7,0 +18,0 @@ ## [3.2.2](https://github.com/mongodb-js/mongodb-core/compare/v3.2.1...v3.2.2) (2019-03-22) |
@@ -200,6 +200,13 @@ 'use strict'; | ||
heartbeatfrequencyms: 'heartbeatFrequencyMS', | ||
appname: 'appName', | ||
retrywrites: 'retryWrites', | ||
uuidrepresentation: 'uuidRepresentation', | ||
zlibcompressionlevel: 'zlibCompressionLevel' | ||
zlibcompressionlevel: 'zlibCompressionLevel', | ||
tlsallowinvalidcertificates: 'tlsAllowInvalidCertificates', | ||
tlsallowinvalidhostnames: 'tlsAllowInvalidHostnames', | ||
tlsinsecure: 'tlsInsecure', | ||
tlscafile: 'tlsCAFile', | ||
tlscertificatekeyfile: 'tlsCertificateKeyFile', | ||
tlscertificatekeyfilepassword: 'tlsCertificateKeyFilePassword', | ||
wtimeout: 'wTimeoutMS', | ||
j: 'journal' | ||
}; | ||
@@ -229,2 +236,3 @@ | ||
} else if (key === 'readconcernlevel') { | ||
obj['readConcernLevel'] = value; | ||
key = 'readconcern'; | ||
@@ -275,2 +283,6 @@ value = { level: value }; | ||
if (key === 'readpreferencetags' && Array.isArray(value)) { | ||
value = splitArrayOfMultipleReadPreferenceTags(value); | ||
} | ||
// set the actual value | ||
@@ -293,2 +305,16 @@ if (options.caseTranslate && CASE_TRANSLATION[key]) { | ||
function splitArrayOfMultipleReadPreferenceTags(value) { | ||
const parsedTags = []; | ||
for (let i = 0; i < value.length; i++) { | ||
parsedTags[i] = {}; | ||
value[i].split(',').forEach(individualTag => { | ||
const splitTag = individualTag.split(':'); | ||
parsedTags[i][splitTag[0]] = splitTag[1]; | ||
}); | ||
} | ||
return parsedTags; | ||
} | ||
/** | ||
@@ -371,2 +397,4 @@ * Modifies the parsed connection string object taking into account expectations we | ||
checkTLSOptions(parsedQueryString); | ||
for (const key in parsedQueryString) { | ||
@@ -392,2 +420,62 @@ const value = parsedQueryString[key]; | ||
/** | ||
* Checks a query string for invalid tls options according to the URI options spec. | ||
* | ||
* @param {string} queryString The query string to check | ||
* @throws {MongoParseError} | ||
*/ | ||
function checkTLSOptions(queryString) { | ||
const queryStringKeys = Object.keys(queryString); | ||
if ( | ||
queryStringKeys.indexOf('tlsInsecure') !== -1 && | ||
(queryStringKeys.indexOf('tlsAllowInvalidCertificates') !== -1 || | ||
queryStringKeys.indexOf('tlsAllowInvalidHostnames') !== -1) | ||
) { | ||
throw new MongoParseError( | ||
'The `tlsInsecure` option cannot be used with `tlsAllowInvalidCertificates` or `tlsAllowInvalidHostnames`.' | ||
); | ||
} | ||
const tlsValue = assertTlsOptionsAreEqual('tls', queryString, queryStringKeys); | ||
const sslValue = assertTlsOptionsAreEqual('ssl', queryString, queryStringKeys); | ||
if (tlsValue != null && sslValue != null) { | ||
if (tlsValue !== sslValue) { | ||
throw new MongoParseError('All values of `tls` and `ssl` must be the same.'); | ||
} | ||
} | ||
} | ||
/** | ||
* Checks a query string to ensure all tls/ssl options are the same. | ||
* | ||
* @param {string} key The key (tls or ssl) to check | ||
* @param {string} queryString The query string to check | ||
* @throws {MongoParseError} | ||
* @return The value of the tls/ssl option | ||
*/ | ||
function assertTlsOptionsAreEqual(optionName, queryString, queryStringKeys) { | ||
const queryStringHasTLSOption = queryStringKeys.indexOf(optionName) !== -1; | ||
let optionValue; | ||
if (Array.isArray(queryString[optionName])) { | ||
optionValue = queryString[optionName][0]; | ||
} else { | ||
optionValue = queryString[optionName]; | ||
} | ||
if (queryStringHasTLSOption) { | ||
if (Array.isArray(queryString[optionName])) { | ||
const firstValue = queryString[optionName][0]; | ||
queryString[optionName].forEach(tlsValue => { | ||
if (tlsValue !== firstValue) { | ||
throw new MongoParseError('All values of ${optionName} must be the same.'); | ||
} | ||
}); | ||
} | ||
} | ||
return optionValue; | ||
} | ||
const PROTOCOL_MONGODB = 'mongodb'; | ||
@@ -394,0 +482,0 @@ const PROTOCOL_MONGODB_SRV = 'mongodb+srv'; |
{ | ||
"name": "mongodb-core", | ||
"version": "3.2.2", | ||
"version": "3.2.3", | ||
"description": "Core MongoDB driver functionality, no bells and whistles and meant for integration not end applications", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
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
567344
13844