UNPKG

1.17 kBJavaScriptView Raw
1module.exports = parseOptions
2
3const getUserAgent = require('universal-user-agent')
4const pick = require('lodash.pick')
5
6const pkg = require('../package.json')
7
8const OPTION_NAMES = [
9 'timeout',
10 'baseUrl',
11 'agent',
12 'headers'
13]
14
15function parseOptions (userOptions) {
16 if (!userOptions) {
17 userOptions = {}
18 }
19
20 if (userOptions.headers) {
21 userOptions.headers = Object.keys(userOptions.headers).reduce((newObj, key) => {
22 newObj[key.toLowerCase()] = userOptions.headers[key]
23 return newObj
24 }, {})
25 }
26
27 const options = pick(userOptions, OPTION_NAMES)
28
29 const clientDefaults = {
30 headers: options.headers || {},
31 request: {}
32 }
33
34 if (options.baseUrl) {
35 clientDefaults.baseUrl = options.baseUrl
36 }
37
38 if (options.timeout) {
39 clientDefaults.request.timeout = options.timeout
40 }
41
42 if (options.agent) {
43 clientDefaults.request.agent = options.agent
44 }
45
46 const userAgentOption = clientDefaults.headers['user-agent']
47 const defaultUserAgent = `octokit.js/${pkg.version} ${getUserAgent()}`
48
49 clientDefaults.headers['user-agent'] = [userAgentOption, defaultUserAgent].filter(Boolean).join(' ')
50
51 return clientDefaults
52}