@pwn/is
Version:
Minimalistic predicate library
2 lines • 5.48 kB
JavaScript
!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof module&&module.exports?module.exports=b():a.is=b()}(this,function(){var a,b={not:{}},c=Object.prototype.hasOwnProperty,d=function(){var a=/(?:function|class)\s*(\w*)/,b=Object.prototype.toString,c=Function.prototype.toString;return function(d){var e,f;return null===d?"null":void 0===d?"undefined":(e=b.call(d),e=e.substring(8,e.length-1),"function"!=typeof d.constructor?e.toLowerCase():(f=c.call(d.constructor).match(a)[1],(f||e).toLowerCase()))}}(),e=Object.keys||function(a){var b=a.length,d=!{toString:null}.propertyIsEnumerable("toString");return function(e){var f,g,h=[];if(null===e||void 0===e)throw new TypeError("ownKeys called on non-object");for(f in e)c.call(e,f)&&h.push(f);if(d)for(g=0;b>g;g+=1)f=a[g],c.call(e,f)&&h.push(f);return h}}(["toString","toLocaleString","valueOf","isPrototypeOf","hasOwnProperty","propertyIsEnumerable","constructor"]);return a={addPredicate:function(a,d){if(/^(not|use)$/.test(a))throw new Error('"'+a+'" is a reserved name');if(c.call(b,a))throw new Error('predicate "'+a+'" already defined');if("function"!=typeof d)throw new TypeError("predicate must be a function");b[a]=d,b.not[a]=function(){return!d.apply(null,arguments)}}},b.use=function(c){"function"==typeof c&&c(a,b)},b.use(function(a){a.addPredicate("null",function(a){return null===a}),a.addPredicate("undefined",function(a){return void 0===a}),a.addPredicate("exist",function(a){return null!=a}),a.addPredicate("nil",function(a){return null==a})}),b.use(function(a){a.addPredicate("number",function(a){return"number"==typeof a}),a.addPredicate("numeral",function(a){var c=d(a);if("number"!==c&&"string"!==c)return!1;if(b.emptyString(a))return!1;try{a=Number(a)}catch(e){return!1}return b.finite(a)}),a.addPredicate("nan",function(a){return a!==a}),a.addPredicate("odd",function(a){return b.integer(a)&&a%2===1}),a.addPredicate("even",function(a){return b.integer(a)&&a%2===0}),Number.isFinite?a.addPredicate("finite",Number.isFinite):a.addPredicate("finite",function(a){return b.number(a)&&isFinite(a)}),a.addPredicate("infinite",function(a){return a===1/0||a===-1/0}),Number.isInteger?a.addPredicate("integer",Number.isInteger):a.addPredicate("integer",function(a){return b.finite(a)&&Math.floor(a)===a}),Number.isSafeInteger?a.addPredicate("safeInteger",Number.isSafeInteger):!function(){var c=Number.MAX_SAFE_INTEGER||Math.pow(2,53)-1,d=Number.MIN_SAFE_INTEGER||-c;a.addPredicate("safeInteger",function(a){return b.integer(a)&&a>=d&&c>=a})}()}),b.use(function(a){a.addPredicate("string",function(a){return"string"==typeof a}),a.addPredicate("emptyString",function(a){return b.string(a)&&/^\s*$/.test(a)}),a.addPredicate("substring",function(a,c,e){var f;return"string"!==d(c)?!1:(f=c.length,e=b.integer(e)?e:0,0>e&&(e=f+e),0>e||e>=f?!1:-1!==c.indexOf(a,e))}),String.prototype.startsWith&&String.prototype.endsWith?(a.addPredicate("prefix",function(a,b){return"string"===d(b)&&b.startsWith(a)}),a.addPredicate("suffix",function(a,b){return"string"===d(b)&&b.endsWith(a)})):!function(b){a.addPredicate("prefix",b()),a.addPredicate("suffix",b(!0))}(function(a){return function(b,c){var e,f,g,h;if("string"!==d(c))return!1;if(b=String(b),g=b.length,h=c.length,g>h)return!1;for(f=a?h-g:0,e=0;g>e;e+=1)if(c.charCodeAt(f+e)!==b.charCodeAt(e))return!1;return!0}})}),b.use(function(a){a.addPredicate("boolean",function(a){return a===!0||a===!1})}),b.use(function(a){a.addPredicate("object",function(a){return b.not.primitive(a)}),a.addPredicate("emptyObject",function(a){return b.object(a)&&0===e(a).length}),a.addPredicate("propertyDefined",function(a,c){var d,e,f;for(f=a,e=String(c).split(".");d=e.shift();){if(b.not.object(f)||!(d in f))return!1;f=f[d]}return!0}),a.addPredicate("conforms",function(a,d,f){var g,h,i,j,k;if(b.not.object(a)||b.not.object(d))return!1;if(h=e(d),j=h.length,f&&j!==e(a).length)return!1;for(i=0;j>i;i+=1)if(g=h[i],k=d[g],!("function"!=typeof k||c.call(a,g)&&k(a[g],g,a)))return!1;return!0})}),b.use(function(a){Array.isArray?a.addPredicate("array",Array.isArray):a.addPredicate("array",function(a){return"array"===d(a)}),a.addPredicate("arrayLikeObject",function(a){var c;return b.primitive(a)||b["function"](a)?!1:(c=a.length,b.integer(c)&&c>=0&&4294967295>=c)}),a.addPredicate("inArray",function(a,d,e,f){var g,h;if(b.not.arrayLikeObject(d))return!1;if(b["function"](e)?(f=e,e=0):(e=b.integer(e)?e:0,f=b["function"](f)?f:b.equal),h=d.length,0>e&&(e=h+e),0>e||e>=h)return!1;for(g=e;h>g;g+=1)if(c.call(d,g)&&f(a,d[g]))return!0;return!1})}),b.use(function(a){a.addPredicate("sameType",function(a,b){return typeof a==typeof b&&d(a)===d(b)}),a.addPredicate("primitive",function(a){return b.nil(a)||b.number(a)||b.string(a)||b["boolean"](a)||b.symbol(a)}),function(b,c){var d,e,f=c.length;for(e=0;f>e;e+=1)d=c[e],a.addPredicate(d,b(d.toLowerCase()))}(function(a){return function(b){return d(b)===a}},["date","error","function","map","regexp","set","symbol"])}),b.use(function(a){a.addPredicate("equal",function(a,b){return a===b||a!==a&&b!==b}),a.addPredicate("deepEqual",function(a,d){return b.not.sameType(a,d)?!1:b.primitive(a)?b.equal(a,d):b.array(a)?a.length!==d.length?!1:function(){var c,e;for(c=0,e=a.length;e>c;c+=1)if(b.not.deepEqual(a[c],d[c]))return!1;return!0}():function(){var f,g,h,i;if(g=e(a),i=g.length,i!==e(d).length)return!1;for(h=0;i>h;h+=1)if(f=g[h],!c.call(d,f)||b.not.deepEqual(a[f],d[f]))return!1;return!0}()})}),b});
//# sourceMappingURL=is.min.map