docs: function parser (defaults, validators, mappers) {
    return function (opts) {
      const merged = mergeObjects(defaults, opts)
  
      Object.keys(merged).forEach((key) => {
        if (validators[key] && ! validators[key](merged[key]))
          throw new Error('Failed to validate ' + key)
  
        if (mappers && mappers[key])
          merged[key] = mappers[key](merged[key])
      })
  
      return merged
    }
  }