-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathparse-url.js
39 lines (33 loc) · 965 Bytes
/
parse-url.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var url = require('url');
module.exports = function parseDbUrl (dbUrl) {
if (typeof dbUrl === 'object') {
if (dbUrl.adapter != null) return dbUrl
else throw new Error("'adapter' is required in config objects")
}
var parsed = url.parse(dbUrl, true)
if (parsed.auth) {
var auth = parsed.auth.split(':')
parsed.user = auth[0];
parsed.password = auth[1];
}
var adapter = parsed.protocol.replace(':', '')
var database = parsed.pathname;
// Trim leading slash for non-sqlite3 databases
if (adapter !== 'sqlite3' && database) {
var database = database.substring(1)
}
if (parsed.port) {
var port = parseInt(parsed.port, 10)
if (isNaN(port)) port = void(0)
}
var config = {
adapter: adapter,
host: parsed.hostname,
port: port,
database: database,
user: parsed.user,
password: parsed.password
}
for (var k in parsed.query) config[k] = parsed.query[k]
return config;
}