Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/decodeUri.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv } = require('./utils')

module.exports = (envVarName, defaultUri) => urlgrey(getEnv(envVarName, defaultUri))
2 changes: 1 addition & 1 deletion lib/unpackApiKeysConfig.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

const assert = require('assert')
const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { decodeArray } = require('./utils')

module.exports = (envVarName, defaultUri) => {
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackKOPPSConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv, typeConversion } = require('./utils')

module.exports = (envVarName, defaultUri, options) => {
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackLDAPConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv, typeConversion } = require('./utils')

const ldapDefaults = {
Expand Down
6 changes: 3 additions & 3 deletions lib/unpackMongodbConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv, typeConversion } = require('./utils')

module.exports = (envVarName, defaultUri, options) => {
Expand All @@ -14,8 +14,8 @@ module.exports = (envVarName, defaultUri, options) => {
const outp = {
username: envObj.username(),
password: envObj.password(),
host: envObj._parsed.host,
db: envObj._parsed.pathname && envObj._parsed.pathname.replace(/\//, ''),
host: envObj.host(),
db: envObj.path() && envObj.path() !== '/' ? envObj.path().replace(/^\//, '') : null,
uri,
authDatabase: '',
ssl: false
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackNodeApiConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv, typeConversion } = require('./utils')

module.exports = (envVarName, defaultUri, options) => {
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackRedisConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const qs = require('qs')
const { getEnv, typeConversion } = require('./utils')

Expand Down
2 changes: 1 addition & 1 deletion lib/unpackSMTPConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv, typeConversion } = require('./utils')

module.exports = (envVarName, defaultUri, options) => {
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackSQLServerConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Example: file://path/to/your/sqlite.db
*/

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv } = require('./utils')

const _isCorrectURI = (envObj) => /^mssql/.test(envObj.protocol())
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackSequelizeConfig.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv } = require('./utils')
const unpackSqliteConfig = require('./unpackSqliteConfig')
const unpackSQLServerConfig = require('./unpackSQLServerConfig')
Expand Down
2 changes: 1 addition & 1 deletion lib/unpackSqliteConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Example: file://path/to/your/sqlite.db
*/

const urlgrey = require('urlgrey')
const urlgrey = require('./urlgrey')
const { getEnv } = require('./utils')

const _isSqlliteURI = (envObj) => /^sqlite/.test(envObj.protocol())
Expand Down
79 changes: 79 additions & 0 deletions lib/urlgrey.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
'use strict'

const qs = require('qs')
const urlgreyImport = require('urlgrey')

const parseUrl =
typeof urlgreyImport === 'function'
? urlgreyImport
: urlgreyImport && typeof urlgreyImport.default === 'function'
? urlgreyImport.default
: null

if (!parseUrl) {
throw new TypeError('Unsupported urlgrey export shape')
}

const callGetter = (obj, getterName, legacyName) => {
if (typeof obj[getterName] === 'function') {
return obj[getterName]()
}
if (typeof obj[legacyName] === 'function') {
return obj[legacyName]()
}
return undefined
}

const decodeMaybe = (value) => {
if (typeof value !== 'string') {
return value
}
try {
return decodeURIComponent(value)
// eslint-disable-next-line no-unused-vars
} catch (err) {
return value
}
}

const normalizeInput = (url) => {
if (typeof url === 'string' && url.startsWith('?')) {
return `http://localhost/${url}`
}
return url
}

module.exports = (url) => {
const parsed = parseUrl(normalizeInput(url))
const adapted = Object.create(parsed)

adapted.protocol = () => callGetter(parsed, 'getProtocol', 'protocol')
adapted.hostname = () => callGetter(parsed, 'getHostname', 'hostname')
adapted.port = () => callGetter(parsed, 'getPort', 'port')
adapted.path = () => callGetter(parsed, 'getPath', 'path')
adapted.query = () => {
const queryString = adapted.queryString()
if (!queryString) {
return {}
}
return qs.parse(queryString)
}
adapted.queryString = () => callGetter(parsed, 'getQueryString', 'queryString')
adapted.username = () => decodeMaybe(callGetter(parsed, 'getUsername', 'username'))
adapted.password = () => decodeMaybe(callGetter(parsed, 'getPassword', 'password'))

adapted.host = () => {
const hostname = adapted.hostname()
const port = adapted.port()

if (!hostname) {
return hostname
}
if (port === null || port === undefined || port === '') {
return hostname
}
return `${hostname}:${port}`
}

return adapted
}
13 changes: 7 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kth-node-configuration",
"version": "2.2.0",
"version": "3.0.0-0",
"description": "Configuration module for Node.js projects",
"main": "lib/index.js",
"files": [
Expand All @@ -27,7 +27,7 @@
},
"dependencies": {
"qs": "^6.15.3",
"urlgrey": "^0.4.4"
"urlgrey": "^2.1.0"
},
"author": {
"name": "KTH",
Expand Down