diff options
Diffstat (limited to 'node_modules/got/source/merge.js')
-rw-r--r-- | node_modules/got/source/merge.js | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/node_modules/got/source/merge.js b/node_modules/got/source/merge.js deleted file mode 100644 index 900f09a..0000000 --- a/node_modules/got/source/merge.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; -const {URL} = require('url'); -const is = require('@sindresorhus/is'); -const knownHookEvents = require('./known-hook-events'); - -const merge = (target, ...sources) => { - for (const source of sources) { - for (const [key, sourceValue] of Object.entries(source)) { - if (is.undefined(sourceValue)) { - continue; - } - - const targetValue = target[key]; - if (is.urlInstance(targetValue) && (is.urlInstance(sourceValue) || is.string(sourceValue))) { - target[key] = new URL(sourceValue, targetValue); - } else if (is.plainObject(sourceValue)) { - if (is.plainObject(targetValue)) { - target[key] = merge({}, targetValue, sourceValue); - } else { - target[key] = merge({}, sourceValue); - } - } else if (is.array(sourceValue)) { - target[key] = merge([], sourceValue); - } else { - target[key] = sourceValue; - } - } - } - - return target; -}; - -const mergeOptions = (...sources) => { - sources = sources.map(source => source || {}); - const merged = merge({}, ...sources); - - const hooks = {}; - for (const hook of knownHookEvents) { - hooks[hook] = []; - } - - for (const source of sources) { - if (source.hooks) { - for (const hook of knownHookEvents) { - hooks[hook] = hooks[hook].concat(source.hooks[hook]); - } - } - } - - merged.hooks = hooks; - - return merged; -}; - -const mergeInstances = (instances, methods) => { - const handlers = instances.map(instance => instance.defaults.handler); - const size = instances.length - 1; - - return { - methods, - options: mergeOptions(...instances.map(instance => instance.defaults.options)), - handler: (options, next) => { - let iteration = -1; - const iterate = options => handlers[++iteration](options, iteration === size ? next : iterate); - - return iterate(options); - } - }; -}; - -module.exports = merge; -module.exports.options = mergeOptions; -module.exports.instances = mergeInstances; |