123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 'use strict';
- function hasKey(obj, keys) {
- var o = obj;
- keys.slice(0, -1).forEach(function (key) {
- o = o[key] || {};
- });
- var key = keys[keys.length - 1];
- return key in o;
- }
- function isNumber(x) {
- if (typeof x === 'number') { return true; }
- if ((/^0x[0-9a-f]+$/i).test(x)) { return true; }
- return (/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/).test(x);
- }
- function isConstructorOrProto(obj, key) {
- return (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';
- }
- module.exports = function (args, opts) {
- if (!opts) { opts = {}; }
- var flags = {
- bools: {},
- strings: {},
- unknownFn: null,
- };
- if (typeof opts.unknown === 'function') {
- flags.unknownFn = opts.unknown;
- }
- if (typeof opts.boolean === 'boolean' && opts.boolean) {
- flags.allBools = true;
- } else {
- [].concat(opts.boolean).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true;
- });
- }
- var aliases = {};
- function aliasIsBoolean(key) {
- return aliases[key].some(function (x) {
- return fl
|