summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js')
-rwxr-xr-x[-rw-r--r--]deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js351
1 files changed, 166 insertions, 185 deletions
diff --git a/deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js b/deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js
index 9a5ffe18f4..8c3273eb01 100644..100755
--- a/deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js
+++ b/deps/npm/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js
@@ -1,14 +1,16 @@
+'use strict';
+
// Load modules
-var Crypto = require('crypto');
-var Path = require('path');
-var Util = require('util');
-var Escape = require('./escape');
+const Crypto = require('crypto');
+const Path = require('path');
+const Util = require('util');
+const Escape = require('./escape');
// Declare internals
-var internals = {};
+const internals = {};
// Clone object or array
@@ -21,15 +23,15 @@ exports.clone = function (obj, seen) {
return obj;
}
- seen = seen || { orig: [], copy: [] };
+ seen = seen || new Map();
- var lookup = seen.orig.indexOf(obj);
- if (lookup !== -1) {
- return seen.copy[lookup];
+ const lookup = seen.get(obj);
+ if (lookup) {
+ return lookup;
}
- var newObj;
- var cloneDeep = false;
+ let newObj;
+ let cloneDeep = false;
if (!Array.isArray(obj)) {
if (Buffer.isBuffer(obj)) {
@@ -42,7 +44,7 @@ exports.clone = function (obj, seen) {
newObj = new RegExp(obj);
}
else {
- var proto = Object.getPrototypeOf(obj);
+ const proto = Object.getPrototypeOf(obj);
if (proto &&
proto.isImmutable) {
@@ -59,14 +61,13 @@ exports.clone = function (obj, seen) {
cloneDeep = true;
}
- seen.orig.push(obj);
- seen.copy.push(newObj);
+ seen.set(obj, newObj);
if (cloneDeep) {
- var keys = Object.getOwnPropertyNames(obj);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var descriptor = Object.getOwnPropertyDescriptor(obj, key);
+ const keys = Object.getOwnPropertyNames(obj);
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const descriptor = Object.getOwnPropertyDescriptor(obj, key);
if (descriptor &&
(descriptor.get ||
descriptor.set)) {
@@ -84,9 +85,11 @@ exports.clone = function (obj, seen) {
// Merge all the properties of source into target, source wins in conflict, and by default null and undefined from source are applied
+
/*eslint-disable */
exports.merge = function (target, source, isNullOverride /* = true */, isMergeArrays /* = true */) {
/*eslint-enable */
+
exports.assert(target && typeof target === 'object', 'Invalid target value: must be an object');
exports.assert(source === null || source === undefined || typeof source === 'object', 'Invalid source value: must be null, undefined, or an object');
@@ -100,23 +103,23 @@ exports.merge = function (target, source, isNullOverride /* = true */, isMergeAr
target.length = 0; // Must not change target assignment
}
- for (var i = 0, il = source.length; i < il; ++i) {
+ for (let i = 0; i < source.length; ++i) {
target.push(exports.clone(source[i]));
}
return target;
}
- var keys = Object.keys(source);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var value = source[key];
+ const keys = Object.keys(source);
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const value = source[key];
if (value &&
typeof value === 'object') {
if (!target[key] ||
typeof target[key] !== 'object' ||
- (Array.isArray(target[key]) ^ Array.isArray(value)) ||
+ (Array.isArray(target[key]) !== Array.isArray(value)) ||
value instanceof Date ||
Buffer.isBuffer(value) ||
value instanceof RegExp) {
@@ -154,7 +157,7 @@ exports.applyToDefaults = function (defaults, options, isNullOverride) {
return null;
}
- var copy = exports.clone(defaults);
+ const copy = exports.clone(defaults);
if (options === true) { // If options is set to true, use defaults
return copy;
@@ -174,8 +177,8 @@ exports.cloneWithShallow = function (source, keys) {
return source;
}
- var storage = internals.store(source, keys); // Move shallow copy items to storage
- var copy = exports.clone(source); // Deep copy the rest
+ const storage = internals.store(source, keys); // Move shallow copy items to storage
+ const copy = exports.clone(source); // Deep copy the rest
internals.restore(copy, source, storage); // Shallow copy the stored items and restore
return copy;
};
@@ -183,10 +186,10 @@ exports.cloneWithShallow = function (source, keys) {
internals.store = function (source, keys) {
- var storage = {};
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var value = exports.reach(source, key);
+ const storage = {};
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const value = exports.reach(source, key);
if (value !== undefined) {
storage[key] = value;
internals.reachSet(source, key, undefined);
@@ -199,9 +202,9 @@ internals.store = function (source, keys) {
internals.restore = function (copy, source, storage) {
- var keys = Object.keys(storage);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
+ const keys = Object.keys(storage);
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
internals.reachSet(copy, key, storage[key]);
internals.reachSet(source, key, storage[key]);
}
@@ -210,11 +213,11 @@ internals.restore = function (copy, source, storage) {
internals.reachSet = function (obj, key, value) {
- var path = key.split('.');
- var ref = obj;
- for (var i = 0, il = path.length; i < il; ++i) {
- var segment = path[i];
- if (i + 1 === il) {
+ const path = key.split('.');
+ let ref = obj;
+ for (let i = 0; i < path.length; ++i) {
+ const segment = path[i];
+ if (i + 1 === path.length) {
ref[segment] = value;
}
@@ -235,13 +238,13 @@ exports.applyToDefaultsWithShallow = function (defaults, options, keys) {
return null;
}
- var copy = exports.cloneWithShallow(defaults, keys);
+ const copy = exports.cloneWithShallow(defaults, keys);
if (options === true) { // If options is set to true, use defaults
return copy;
}
- var storage = internals.store(options, keys); // Move shallow copy items to storage
+ const storage = internals.store(options, keys); // Move shallow copy items to storage
exports.merge(copy, options, false, false); // Deep copy the rest
internals.restore(copy, options, storage); // Shallow copy the stored items and restore
return copy;
@@ -254,7 +257,7 @@ exports.deepEqual = function (obj, ref, options, seen) {
options = options || { prototype: true };
- var type = typeof obj;
+ const type = typeof obj;
if (type !== typeof ref) {
return false;
@@ -287,11 +290,11 @@ exports.deepEqual = function (obj, ref, options, seen) {
return false;
}
- for (var i = 0, il = obj.length; i < il; ++i) {
+ for (let i = 0; i < obj.length; ++i) {
if (options.part) {
- var found = false;
- for (var r = 0, rl = ref.length; r < rl; ++r) {
- if (exports.deepEqual(obj[i], ref[r], options, seen)) {
+ let found = false;
+ for (let j = 0; j < ref.length; ++j) {
+ if (exports.deepEqual(obj[i], ref[j], options)) {
found = true;
break;
}
@@ -300,7 +303,7 @@ exports.deepEqual = function (obj, ref, options, seen) {
return found;
}
- if (!exports.deepEqual(obj[i], ref[i], options, seen)) {
+ if (!exports.deepEqual(obj[i], ref[i], options)) {
return false;
}
}
@@ -317,8 +320,8 @@ exports.deepEqual = function (obj, ref, options, seen) {
return false;
}
- for (var j = 0, jl = obj.length; j < jl; ++j) {
- if (obj[j] !== ref[j]) {
+ for (let i = 0; i < obj.length; ++i) {
+ if (obj[i] !== ref[i]) {
return false;
}
}
@@ -340,15 +343,15 @@ exports.deepEqual = function (obj, ref, options, seen) {
}
}
- var keys = Object.getOwnPropertyNames(obj);
+ const keys = Object.getOwnPropertyNames(obj);
if (!options.part && keys.length !== Object.getOwnPropertyNames(ref).length) {
return false;
}
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var descriptor = Object.getOwnPropertyDescriptor(obj, key);
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const descriptor = Object.getOwnPropertyDescriptor(obj, key);
if (descriptor.get) {
if (!exports.deepEqual(descriptor, Object.getOwnPropertyDescriptor(ref, key), options, seen)) {
return false;
@@ -365,18 +368,23 @@ exports.deepEqual = function (obj, ref, options, seen) {
// Remove duplicate items from array
-exports.unique = function (array, key) {
+exports.unique = (array, key) => {
- var index = {};
- var result = [];
+ let result;
+ if (key) {
+ result = [];
+ const index = new Set();
+ array.forEach((item) => {
- for (var i = 0, il = array.length; i < il; ++i) {
- var id = (key ? array[i][key] : array[i]);
- if (index[id] !== true) {
-
- result.push(array[i]);
- index[id] = true;
- }
+ const identifier = item[key];
+ if (!index.has(identifier)) {
+ index.add(identifier);
+ result.push(item);
+ }
+ });
+ }
+ else {
+ result = Array.from(new Set(array));
}
return result;
@@ -391,8 +399,8 @@ exports.mapToObject = function (array, key) {
return null;
}
- var obj = {};
- for (var i = 0, il = array.length; i < il; ++i) {
+ const obj = {};
+ for (let i = 0; i < array.length; ++i) {
if (key) {
if (array[i][key]) {
obj[array[i][key]] = true;
@@ -415,10 +423,10 @@ exports.intersect = function (array1, array2, justFirst) {
return [];
}
- var common = [];
- var hash = (Array.isArray(array1) ? exports.mapToObject(array1) : array1);
- var found = {};
- for (var i = 0, il = array2.length; i < il; ++i) {
+ const common = [];
+ const hash = (Array.isArray(array1) ? exports.mapToObject(array1) : array1);
+ const found = {};
+ for (let i = 0; i < array2.length; ++i) {
if (hash[array2[i]] && !found[array2[i]]) {
if (justFirst) {
return array2[i];
@@ -444,7 +452,7 @@ exports.contain = function (ref, values, options) {
object -> object (key:value)
*/
- var valuePairs = null;
+ let valuePairs = null;
if (typeof ref === 'object' &&
typeof values === 'object' &&
!Array.isArray(ref) &&
@@ -463,11 +471,13 @@ exports.contain = function (ref, values, options) {
exports.assert(typeof ref === 'string' || typeof ref === 'object', 'Reference must be string or an object');
exports.assert(values.length, 'Values array cannot be empty');
- var compare, compareFlags;
+ let compare;
+ let compareFlags;
if (options.deep) {
compare = exports.deepEqual;
- var hasOnly = options.hasOwnProperty('only'), hasPart = options.hasOwnProperty('part');
+ const hasOnly = options.hasOwnProperty('only');
+ const hasPart = options.hasOwnProperty('part');
compareFlags = {
prototype: hasOnly ? options.only : hasPart ? !options.part : false,
@@ -475,30 +485,27 @@ exports.contain = function (ref, values, options) {
};
}
else {
- compare = function (a, b) {
-
- return a === b;
- };
+ compare = (a, b) => a === b;
}
- var misses = false;
- var matches = new Array(values.length);
- for (var i = 0, il = matches.length; i < il; ++i) {
+ let misses = false;
+ const matches = new Array(values.length);
+ for (let i = 0; i < matches.length; ++i) {
matches[i] = 0;
}
if (typeof ref === 'string') {
- var pattern = '(';
- for (i = 0, il = values.length; i < il; ++i) {
- var value = values[i];
+ let pattern = '(';
+ for (let i = 0; i < values.length; ++i) {
+ const value = values[i];
exports.assert(typeof value === 'string', 'Cannot compare string reference to non-string value');
pattern += (i ? '|' : '') + exports.escapeRegex(value);
}
- var regex = new RegExp(pattern + ')', 'g');
- var leftovers = ref.replace(regex, function ($0, $1) {
+ const regex = new RegExp(pattern + ')', 'g');
+ const leftovers = ref.replace(regex, ($0, $1) => {
- var index = values.indexOf($1);
+ const index = values.indexOf($1);
++matches[index];
return ''; // Remove from string
});
@@ -506,8 +513,9 @@ exports.contain = function (ref, values, options) {
misses = !!leftovers;
}
else if (Array.isArray(ref)) {
- for (i = 0, il = ref.length; i < il; ++i) {
- for (var j = 0, jl = values.length, matched = false; j < jl && matched === false; ++j) {
+ for (let i = 0; i < ref.length; ++i) {
+ let matched = false;
+ for (let j = 0; j < values.length && matched === false; ++j) {
matched = compare(values[j], ref[i], compareFlags) && j;
}
@@ -520,10 +528,10 @@ exports.contain = function (ref, values, options) {
}
}
else {
- var keys = Object.keys(ref);
- for (i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var pos = values.indexOf(key);
+ const keys = Object.getOwnPropertyNames(ref);
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const pos = values.indexOf(key);
if (pos !== -1) {
if (valuePairs &&
!compare(valuePairs[key], ref[key], compareFlags)) {
@@ -539,8 +547,8 @@ exports.contain = function (ref, values, options) {
}
}
- var result = false;
- for (i = 0, il = matches.length; i < il; ++i) {
+ let result = false;
+ for (let i = 0; i < matches.length; ++i) {
result = result || !!matches[i];
if ((options.once && matches[i] > 1) ||
(!options.part && !matches[i])) {
@@ -563,9 +571,9 @@ exports.contain = function (ref, values, options) {
exports.flatten = function (array, target) {
- var result = target || [];
+ const result = target || [];
- for (var i = 0, il = array.length; i < il; ++i) {
+ for (let i = 0; i < array.length; ++i) {
if (Array.isArray(array[i])) {
exports.flatten(array[i], result);
}
@@ -594,20 +602,20 @@ exports.reach = function (obj, chain, options) {
options = { separator: options };
}
- var path = chain.split(options.separator || '.');
- var ref = obj;
- for (var i = 0, il = path.length; i < il; ++i) {
- var key = path[i];
+ const path = chain.split(options.separator || '.');
+ let ref = obj;
+ for (let i = 0; i < path.length; ++i) {
+ let key = path[i];
if (key[0] === '-' && Array.isArray(ref)) {
key = key.slice(1, key.length);
key = ref.length - key;
}
if (!ref ||
- !ref.hasOwnProperty(key) ||
+ !((typeof ref === 'object' || typeof ref === 'function') && key in ref) ||
(typeof ref !== 'object' && options.functions === false)) { // Only object and function can have properties
- exports.assert(!options.strict || i + 1 === il, 'Missing segment', key, 'in reach path ', chain);
+ exports.assert(!options.strict || i + 1 === path.length, 'Missing segment', key, 'in reach path ', chain);
exports.assert(typeof ref === 'object' || options.functions === true || typeof ref !== 'function', 'Invalid segment', key, 'in reach path ', chain);
ref = options.default;
break;
@@ -622,9 +630,9 @@ exports.reach = function (obj, chain, options) {
exports.reachTemplate = function (obj, template, options) {
- return template.replace(/{([^}]+)}/g, function ($0, chain) {
+ return template.replace(/{([^}]+)}/g, ($0, chain) => {
- var value = exports.reach(obj, chain, options);
+ const value = exports.reach(obj, chain, options);
return (value === undefined || value === null ? '' : value);
});
};
@@ -632,9 +640,9 @@ exports.reachTemplate = function (obj, template, options) {
exports.formatStack = function (stack) {
- var trace = [];
- for (var i = 0, il = stack.length; i < il; ++i) {
- var item = stack[i];
+ const trace = [];
+ for (let i = 0; i < stack.length; ++i) {
+ const item = stack[i];
trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]);
}
@@ -644,10 +652,10 @@ exports.formatStack = function (stack) {
exports.formatTrace = function (trace) {
- var display = [];
+ const display = [];
- for (var i = 0, il = trace.length; i < il; ++i) {
- var row = trace[i];
+ for (let i = 0; i < trace.length; ++i) {
+ const row = trace[i];
display.push((row[4] ? 'new ' : '') + row[3] + ' (' + row[0] + ':' + row[1] + ':' + row[2] + ')');
}
@@ -659,31 +667,27 @@ exports.callStack = function (slice) {
// http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
- var v8 = Error.prepareStackTrace;
- Error.prepareStackTrace = function (err, stack) {
+ const v8 = Error.prepareStackTrace;
+ Error.prepareStackTrace = function (_, stack) {
return stack;
};
- var capture = {};
- Error.captureStackTrace(capture, arguments.callee); /*eslint no-caller:0 */
- var stack = capture.stack;
+ const capture = {};
+ Error.captureStackTrace(capture, this); // arguments.callee is not supported in strict mode so we use this and slice the trace of this off the result
+ const stack = capture.stack;
Error.prepareStackTrace = v8;
- var trace = exports.formatStack(stack);
-
- if (slice) {
- return trace.slice(slice);
- }
+ const trace = exports.formatStack(stack);
- return trace;
+ return trace.slice(1 + slice);
};
exports.displayStack = function (slice) {
- var trace = exports.callStack(slice === undefined ? 1 : slice + 1);
+ const trace = exports.callStack(slice === undefined ? 1 : slice + 1);
return exports.formatTrace(trace);
};
@@ -698,7 +702,7 @@ exports.abort = function (message, hideStack) {
throw new Error(message || 'Unknown error');
}
- var stack = '';
+ let stack = '';
if (!hideStack) {
stack = exports.displayStack(1).join('\n\t');
}
@@ -717,17 +721,18 @@ exports.assert = function (condition /*, msg1, msg2, msg3 */) {
throw arguments[1];
}
- var msgs = [];
- for (var i = 1, il = arguments.length; i < il; ++i) {
+ let msgs = [];
+ for (let i = 1; i < arguments.length; ++i) {
if (arguments[i] !== '') {
msgs.push(arguments[i]); // Avoids Array.slice arguments leak, allowing for V8 optimizations
}
}
- msgs = msgs.map(function (msg) {
+ msgs = msgs.map((msg) => {
return typeof msg === 'string' ? msg : msg instanceof Error ? msg.message : exports.stringify(msg);
});
+
throw new Error(msgs.join(' ') || 'Unknown error');
};
@@ -772,7 +777,7 @@ exports.Bench.prototype.elapsed = function () {
exports.Bench.now = function () {
- var ts = process.hrtime();
+ const ts = process.hrtime();
return (ts[0] * 1e3) + (ts[1] / 1e6);
};
@@ -790,7 +795,8 @@ exports.escapeRegex = function (string) {
exports.base64urlEncode = function (value, encoding) {
- var buf = (Buffer.isBuffer(value) ? value : new Buffer(value, encoding || 'binary'));
+ exports.assert(typeof value === 'string' || Buffer.isBuffer(value), 'value must be string or buffer');
+ const buf = (Buffer.isBuffer(value) ? value : new Buffer(value, encoding || 'binary'));
return buf.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, '');
};
@@ -799,19 +805,18 @@ exports.base64urlEncode = function (value, encoding) {
exports.base64urlDecode = function (value, encoding) {
- if (value &&
- !/^[\w\-]*$/.test(value)) {
+ if (typeof value !== 'string') {
- return new Error('Invalid character');
+ return new Error('Value not a string');
}
- try {
- var buf = new Buffer(value, 'base64');
- return (encoding === 'buffer' ? buf : buf.toString(encoding || 'binary'));
- }
- catch (err) {
- return err;
+ if (!/^[\w\-]*$/.test(value)) {
+
+ return new Error('Invalid character');
}
+
+ const buf = new Buffer(value, 'base64');
+ return (encoding === 'buffer' ? buf : buf.toString(encoding || 'binary'));
};
@@ -838,13 +843,17 @@ exports.escapeJavaScript = function (string) {
return Escape.escapeJavaScript(string);
};
+exports.escapeJson = function (string) {
+
+ return Escape.escapeJson(string);
+};
exports.nextTick = function (callback) {
return function () {
- var args = arguments;
- process.nextTick(function () {
+ const args = arguments;
+ process.nextTick(() => {
callback.apply(null, args);
});
@@ -858,8 +867,8 @@ exports.once = function (method) {
return method;
}
- var once = false;
- var wrapped = function () {
+ let once = false;
+ const wrapped = function () {
if (!once) {
once = true;
@@ -873,36 +882,7 @@ exports.once = function (method) {
};
-exports.isAbsolutePath = function (path, platform) {
-
- if (!path) {
- return false;
- }
-
- if (Path.isAbsolute) { // node >= 0.11
- return Path.isAbsolute(path);
- }
-
- platform = platform || process.platform;
-
- // Unix
-
- if (platform !== 'win32') {
- return path[0] === '/';
- }
-
- // Windows
-
- return !!/^(?:[a-zA-Z]:[\\\/])|(?:[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/])/.test(path); // C:\ or \\something\something
-};
-
-
-exports.isInteger = function (value) {
-
- return (typeof value === 'number' &&
- parseFloat(value) === parseInt(value, 10) &&
- !isNaN(value));
-};
+exports.isInteger = Number.isSafeInteger;
exports.ignore = function () { };
@@ -917,27 +897,28 @@ exports.format = Util.format;
exports.transform = function (source, transform, options) {
exports.assert(source === null || source === undefined || typeof source === 'object' || Array.isArray(source), 'Invalid source object: must be null, undefined, an object, or an array');
+ const separator = (typeof options === 'object' && options !== null) ? (options.separator || '.') : '.';
if (Array.isArray(source)) {
- var results = [];
- for (var i = 0, il = source.length; i < il; ++i) {
+ const results = [];
+ for (let i = 0; i < source.length; ++i) {
results.push(exports.transform(source[i], transform, options));
}
return results;
}
- var result = {};
- var keys = Object.keys(transform);
+ const result = {};
+ const keys = Object.keys(transform);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var path = key.split('.');
- var sourcePath = transform[key];
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const path = key.split(separator);
+ const sourcePath = transform[key];
exports.assert(typeof sourcePath === 'string', 'All mappings must be "." delineated strings');
- var segment;
- var res = result;
+ let segment;
+ let res = result;
while (path.length > 1) {
segment = path.shift();
@@ -964,7 +945,7 @@ exports.uniqueFilename = function (path, extension) {
}
path = Path.resolve(path);
- var name = [Date.now(), process.pid, Crypto.randomBytes(8).toString('hex')].join('-') + extension;
+ const name = [Date.now(), process.pid, Crypto.randomBytes(8).toString('hex')].join('-') + extension;
return Path.join(path, name);
};
@@ -982,10 +963,10 @@ exports.stringify = function () {
exports.shallow = function (source) {
- var target = {};
- var keys = Object.keys(source);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
+ const target = {};
+ const keys = Object.keys(source);
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
target[key] = source[key];
}