UNPKG

node-vitals

Version:

Do more with less. A simple, high-performing, functional JavaScript library.

45 lines (44 loc) 20.9 kB
/* vitals-strict.js v4.1.3 (http://vitalsjs.com) * Copyright (c) 2016 Adam A Smith <adam@imaginate.life> * The Apache License (http://vitalsjs.com/license) */ (function(h,n){function x(b,h){return"object"===b||!h&&"function"===b}function u(b,h){return(b=b&&h&&b.nodeType?!1:b)&&!h&&b.Object!==Object?!1:!!b}function b(b){b.vitals=n;b.Vitals=n}var C=x(typeof exports)&&u(exports,!0),m=x(typeof module)&&u(module,!0),w=x(typeof global,!0)&&u(global),r=x(typeof window)&&u(window),z=x(typeof self)&&u(self),D=x(typeof h)&&u(h);h=C&&m&&w?global:r&&window!==(h&&h.window)?window:z?self:D?h:Function("return this")();r&&b(window);z&&b(self);b(h);C&&m&&(module.exports=== exports?module.exports=n:b(exports));"function"===typeof define&&define.amd&&"object"===typeof define.amd&&define(function(){return n})})(this,function(h){function n(b){b="vitals."+b;var c=function(c,e){var a;e=e?b:b+"."+e;a=Error(c+" for "+e+" call.");a.__vitals=!0;a.vitals=!0;return a};c.type=function(c,e){var a;e=e?b:b+"."+e;a=new TypeError("Invalid "+(c+" param")+" in "+e+" call.");a.__vitals=!0;a.vitals=!0;return a};c.range=function(c,e,a){a=a?b:b+"."+a;c="The "+(c+" param")+" was out-of-range for a "+ a+" call.";e=new RangeError(c+(e?" The valid options are: "+e:""));e.__vitals=!0;e.vitals=!0;return e};return c}function x(b,c,f){var e,a;e=b.length;c=c?0>c?e+c:c:0;c=0>c?0:c;f=f===h||f>e?e:0>f?e+f:f;if(c>=f)return[];e=Array(f-c);--c;for(a=0;++c<f;)e[a++]=b[c];return e}var u=function(){var b=Object.prototype.hasOwnProperty;return function(c){var f,e;f={};for(e in c)b.call(c,e)&&(f[e]=c[e]);return f}}();(function(){var b=String.prototype.includes?function(b,d){return b.includes(d)}:function(b,d){return-1!== b.indexOf(d)};return function(c,f){f=String(f);return c?f?b(c,f):!0:!f}})();var b=function(){var b={nil:function(a){return null===a},undefined:function(a){return a===h},bool:function(a){return"boolean"===typeof a},str:function(a){return"string"===typeof a},_str:function(a){return!!a&&"string"===typeof a},num:function(a){return"number"===typeof a&&a===a},_num:function(a){return!!a&&"number"===typeof a&&a===a},nan:function(a){return a!==a}},c=Object.prototype.toString;b.obj=function(a){return!!a&&"object"=== typeof a};b._obj=function(a){return(a=!!a&&typeof a)&&("object"===a||"function"===a)};b.func=function(a){return!!a&&"function"===typeof a};b.arr=function(a){return!!a&&"object"===typeof a&&"[object Array]"===c.call(a)};b._arr=function(a){if(!b.obj(a))return!1;a=c.call(a);return"[object Array]"===a||"[object Arguments]"===a};b.regex=function(a){return!!a&&"object"===typeof a&&"[object RegExp]"===c.call(a)};b.date=function(a){return!!a&&"object"===typeof a&&"[object Date]"===c.call(a)};b.err=function(a){return!!a&& "object"===typeof a&&"[object Error]"===c.call(a)};b.args=function(a){return!!a&&"object"===typeof a&&"[object Arguments]"===c.call(a)};(function(){if(!b.args(arguments)){b._arr=function(a){return!!a&&"object"===typeof a&&("[object Array]"===c.call(a)||"callee"in a)};b.args=function(a){return!!a&&"object"===typeof a&&"callee"in a};try{b.args({})}catch(a){b._arr=b.arr,b.args=function(){return!1}}}})();b.doc=function(a){return!!a&&"object"===typeof a&&9===a.nodeType};b.elem=function(a){return!!a&&"object"=== typeof a&&1===a.nodeType};var f=Object.prototype.hasOwnProperty;b.empty=function(a){var b;if(!a)return!0;if("function"===typeof a)return!a.length;if("object"!==typeof a)return!1;if("[object Array]"===c.call(a))return!a.length;for(b in a)if(f.call(a,b))return!1;return!0};var e=/^(?:cr|lf|crlf)$/i;b.eol=function(a){return e.test(a)};b.frozen=function(){if(!Object.isFrozen)return function(a){return!1};try{return Object.isFrozen(function(){}),Object.isFrozen}catch(a){return function(a){return"object"=== typeof a&&Object.isFrozen(a)}}}();b.whole=function(a){return!(a%1)};b.odd=function(a){return!!(a%2)};b.even=function(a){return!(a%2)};b.un={};b.un.bool=function(a){return a===h||"boolean"===typeof a};b.un.str=function(a){return a===h||"string"===typeof a};b.un.num=function(a){return a===h||"number"===typeof a&&a===a};b.un.obj=function(a){return a===h||!!a&&"object"===typeof a};b.un.func=function(a){return a===h||!!a&&"function"===typeof a};b.un.arr=function(a){return a===h||!!a&&"object"===typeof a&& "[object Array]"===c.call(a)};b.un.regex=function(a){return a===h||!!a&&"object"===typeof a&&"[object RegExp]"===c.call(a)};b.nil.bool=function(a){return null===a||"boolean"===typeof a};b.nil.str=function(a){return null===a||"string"===typeof a};b.nil.num=function(a){return null===a||"number"===typeof a&&a===a};b.nil.obj=function(a){return null===a||!!a&&"object"===typeof a};b.nil.func=function(a){return null===a||!!a&&"function"===typeof a};b.nil.arr=function(a){return null===a||!!a&&"object"=== typeof a&&"[object Array]"===c.call(a)};b.nil.regex=function(a){return null===a||!!a&&"object"===typeof a&&"[object RegExp]"===c.call(a)};b.nil.un={};b.nil.un.bool=function(a){return null===a||a===h||"boolean"===typeof a};b.nil.un.str=function(a){return null===a||a===h||"string"===typeof a};b.nil.un.num=function(a){return null===a||a===h||"number"===typeof a&&a===a};b.nil.un.obj=function(a){return null===a||a===h||!!a&&"object"===typeof a};b.nil.un.func=function(a){return null===a||a===h||!!a&&"undefined"=== typeof a};b.nil.un.arr=function(a){return null===a||a===h||!!a&&"object"===typeof a&&"[object Array]"===c.call(a)};b.nil.un.regex=function(a){return null===a||a===h||!!a&&"object"===typeof a&&"[object RegExp]"===c.call(a)};return b}();(function(){var b=Object.prototype.toString,c=String.prototype.includes?function(b,c){return b.includes(c)}:function(b,c){return-1!==b.indexOf(c)};return function(f,e){var a;e&&"object"===typeof e&&"[object RegExp]"===b.call(e)?a=e.test(f):(a=String(e),a=f?a?c(f,a): !0:!a);return a}})();var C=function(){var b=Object.prototype.hasOwnProperty;return function(c,f){for(var e in f)b.call(f,e)&&(c[e]=f[e]);return c}}(),m=function(){var b=Object.prototype.hasOwnProperty;return function(c,f){return!!c&&b.call(c,f)}}(),w=function(){var b=String.prototype.includes?function(b,d){return b.includes(d)}:function(b,d){return-1!==b.indexOf(d)};return function(c){var f;if(!c)return[""];f=b(c,", ")?", ":b(c,",")?",":b(c,"|")?"|":" ";return c.split(f)}}(),r=function(){function d(a, c){var d,e;if(2>arguments.length)throw g("No type or val");if(!b._str(a))throw g.type("types");if(A["*"](a))return!0;a:{e=a;var f;A["="](e)&&(e+="|undefined");e=e.toLowerCase();e=e.replace(x,"");e=e.split("|");for(d=e.length;d--;){f="_"+e[d];if(!m(u,f)){e=null;break a}e[d]=u[f]}e=e.length?e:null}if(!e)throw g.range("types",C);d=a;f=A["?"](d);d=A["!"](d);d=(f&&d?0:f||d)?!d&&f:h;if(2<arguments.length)a:{f=arguments;var E;for(E=f.length;--E;)if(!r(e,f[E],d)){e=!1;break a}e=!0}else e=r(e,c,d);return e} function c(a,b){var d;for(d=a.length;d--;)if(!b(a[d]))return!1;return!0}function f(a){if(b.nil(a))return!1;if(!b._obj(a))throw g.type("val","frozen");return b.frozen(a)}function e(a){if(!b.num(a))throw g.type("val","whole");return b.whole(a)}function a(a){if(!b.num(a))throw g.type("val","odd");if(!b.whole(a))throw g.range("val","whole numbers","odd");return b.odd(a)}function p(a){if(!b.num(a))throw g.type("val","even");if(!b.whole(a))throw g.range("val","whole numbers","even");return b.even(a)}function r(a, b,d){var c;for(c=a.length;c--;)if(a[c](b,d))return!0;return!1}d["null"]=function(a){switch(arguments.length){case 0:throw g("Missing a val","null");case 1:return b.nil(a);default:return c(arguments,b.nil)}};d.nil=d["null"];d.undefined=function(a){switch(arguments.length){case 0:throw g("Missing a val","undefined");case 1:return b.undefined(a);default:return c(arguments,b.undefined)}};d["boolean"]=function(a){switch(arguments.length){case 0:throw g("Missing a val","boolean");case 1:return b.bool(a); default:return c(arguments,b.bool)}};d.bool=d["boolean"];d.string=function(a){switch(arguments.length){case 0:throw g("Missing a val","string");case 1:return b.str(a);default:return c(arguments,b.str)}};d.str=d.string;d._string=function(a){switch(arguments.length){case 0:throw g("Missing a val","_string");case 1:return b._str(a);default:return c(arguments,b._str)}};d._str=d._string;d.number=function(a){switch(arguments.length){case 0:throw g("Missing a val","number");case 1:return b.num(a);default:return c(arguments, b.num)}};d.num=d.number;d._number=function(a){switch(arguments.length){case 0:throw g("Missing a val","_number");case 1:return b._num(a);default:return c(arguments,b._num)}};d._num=d._number;d.nan=function(a){switch(arguments.length){case 0:throw g("Missing a val","nan");case 1:return b.nan(a);default:return c(arguments,b.nan)}};d.object=function(a){switch(arguments.length){case 0:throw g("Missing a val","object");case 1:return b.obj(a);default:return c(arguments,b.obj)}};d.obj=d.object;d._object= function(a){switch(arguments.length){case 0:throw g("Missing a val","_object");case 1:return b._obj(a);default:return c(arguments,b._obj)}};d._obj=d._object;d.func=function(a){switch(arguments.length){case 0:throw g("Missing a val","function");case 1:return b.func(a);default:return c(arguments,b.func)}};d.fn=d.func;try{d["function"]=d.func}catch(K){}d.array=function(a){switch(arguments.length){case 0:throw g("Missing a val","array");case 1:return b.arr(a);default:return c(arguments,b.arr)}};d.arr= d.array;d._array=function(a){switch(arguments.length){case 0:throw g("Missing a val","_array");case 1:return b._arr(a);default:return c(arguments,b._arr)}};d._arr=d._array;d.regexp=function(a){switch(arguments.length){case 0:throw g("Missing a val","regexp");case 1:return b.regex(a);default:return c(arguments,b.regex)}};d.regex=d.regexp;d.re=d.regexp;d.date=function(a){switch(arguments.length){case 0:throw g("Missing a val","date");case 1:return b.date(a);default:return c(arguments,b.date)}};d.error= function(a){switch(arguments.length){case 0:throw g("Missing a val","error");case 1:return b.err(a);default:return c(arguments,b.err)}};d.err=d.error;d.args=function(a){switch(arguments.length){case 0:throw g("Missing a val","args");case 1:return b.args(a);default:return c(arguments,b.args)}};d.document=function(a){switch(arguments.length){case 0:throw g("Missing a val","document");case 1:return b.doc(a);default:return c(arguments,b.doc)}};d.doc=d.document;d.element=function(a){switch(arguments.length){case 0:throw g("Missing a val", "element");case 1:return b.elem(a);default:return c(arguments,b.elem)}};d.elem=d.element;d.empty=function(a){switch(arguments.length){case 0:throw g("Missing a val","empty");case 1:return b.empty(a);default:return c(arguments,b.empty)}};d.frozen=function(a){switch(arguments.length){case 0:throw g("Missing a val","frozen");case 1:return f(a);default:return c(arguments,f)}};d.whole=function(a){switch(arguments.length){case 0:throw g("Missing a val","whole");case 1:return e(a);default:return c(arguments, e)}};d.odd=function(b){switch(arguments.length){case 0:throw g("Missing a val","odd");case 1:return a(b);default:return c(arguments,a)}};d.even=function(a){switch(arguments.length){case 0:throw g("Missing a val","even");case 1:return p(a);default:return c(arguments,p)}};var u=function(){function a(b,e,f){for(var g in e)m(e,g)&&d(b,g,e[g],f);return c}function d(a,e,f,g){f=m(d,a)?d[a](f):f;g=!1!==g;c["_"+e]=function(a,c){c=b.bool(c)?c:g;return b.nil(a)?c:f(a)};return c}var c={};d.arrays=function(a){return function(c){var d; if(!b.arr(c))return!1;for(d=c.length;d--;)if(!a(c[d]))return!1;return!0}};d.maps=function(a){return function(c){var d;if(!b.obj(c))return!1;for(d in c)if(m(c,d)&&!a(c[d]))return!1;return!0}};c=a("primitives",{undefined:b.undefined,"boolean":b.bool,string:b.str,number:b.num,nan:b.nan},!1);c=d("primitives","null",b.nil);c=a("js_objects",{object:b.obj,regexp:b.regex,array:b.arr,date:b.date,error:b.err});c=d("js_objects","arguments",b.args);c=d("js_objects","function",b.func,!1);c=a("dom_objects",{element:b.elem, document:b.doc});c=d("others","empty",b.empty);c=a("arrays",{nulls:b.nil,booleans:b.bool,strings:b.str,numbers:b.num,nans:b.nan,objects:b.obj,functions:b.func,regexps:b.regex,arrays:b.arr,dates:b.date,errors:b.err,elements:b.elem,documents:b.doc});c=a("maps",{nullmap:b.nil,booleanmap:b.bool,stringmap:b.str,numbermap:b.num,nanmap:b.nan,objectmap:b.obj,functionmap:b.func,regexpmap:b.regex,arraymap:b.arr,datemap:b.date,errormap:b.err,elementmap:b.elem,documentmap:b.doc});return c=function(a){var b,d; for(b in a)m(a,b)&&(d="_"+a[b],b="_"+b,c[b]=c[d]);return c}({nil:"null",bool:"boolean",str:"string",num:"number",obj:"object",func:"function",fn:"function",regex:"regexp",re:"regexp",arr:"array",err:"error",args:"arguments",elem:"element",doc:"document",nils:"nulls",strs:"strings",nums:"numbers",bools:"booleans",objs:"objects",funcs:"functions",fns:"functions",regexs:"regexps",res:"regexps",arrs:"arrays",errs:"errors",elems:"elements",docs:"documents",nilmap:"nullmap",strmap:"stringmap",nummap:"numbermap", boolmap:"booleanmap",objmap:"objectmap",funcmap:"functionmap",fnmap:"functionmap",regexmap:"regexpmap",remap:"regexpmap",arrmap:"arraymap",errmap:"errormap",elemmap:"elementmap",docmap:"documentmap"})}(),x=/[^a-z\|]/g,A=function(a,b,c,d,e){return{"|":function(b){return a.test(b)},"!":function(a){return b.test(a)},"?":function(a){return c.test(a)},"=":function(a){return d.test(a)},"*":function(a){return e.test(a)}}}(/\|/,/\!/,/\?/,/\=/,/\*|any/),g=n("is"),C="https://github.com/imaginate/vitals/wiki/vitals.is-types"; return d}(),z=function(){function d(a,d,H,F,g,q){var t,k;if(!b.obj(a))throw l.type("obj");b.str(d)&&(d=w(d));if(!b.obj(d))throw l.type("props");t=b.arr(d);k=arguments.length;if(t&&3>k)throw l("No val defined");!t&&2<k&&(q=g,g=F,F=H,H=h,++k);if(4===k||5===k)k=c(k,F,g,q),F=k[0],g=k[1],q=k[2];if(!r("!obj=",F))throw l.type("descriptor");if(!r("str=",g))throw l.type("strongType");if(!r("func=",q))throw l.type("setter");if(g){if(t&&!r(g+"=",H))throw l("The val param is not a valid strongType");if(!t&&!f(g, d))throw l("A props value was not a valid strongType");}return e(a,d,H,F,g,q)}function c(a,d,c,e){switch(a){case 4:b.str(d)?(c=d,d=h):b.func(d)&&(e=d,d=h);break;case 5:b.func(c)&&(e=c,c=h,b.str(d)&&(c=d,d=h))}return[d,c,e]}function f(a,d){var c,e;a+="=";for(c in d)if(m(d,c)){e=d[c];if(b.obj(e)&&A(e)){if(m(e,"writable"))continue;e=e.value}if(!r(a,e))return!1}return!0}function e(d,c,e,f,B,q){f=D(f||null,!!B||!!q);B=K(B);if(b.arr(c))if(B||q){var h=c,k=f,l;f={};c=h.length;for(l=-1;++l<c;)f[h[l]]=x(e, k,B,q);q=f}else q=a(c,e,f);else if(B||q){k=c;e=f;f={};for(h in k)if(m(k,h)){c=f;l=h;var p;a:{p=k[h];var r=B,G=q,y=void 0,y=u(e);if(A(p)){y=C(y,p);if(m(y,"writable")||g(y)){p=y;break a}p=y.value;var n=void 0,w=void 0,n={};for(w in y)m(y,w)&&"value"!==w&&(n[w]=y[w]);y=n}p=y=z(p,y,r,G)}c[l]=p}q=f}else{q=c;h=f;e={};for(k in q)m(q,k)&&(B=e,f=k,c=q[k],l=void 0,l=u(h),c=A(c)?c:{value:c},c=C(l,c),B[f]=c);q=e}return L(d,q)}function a(a,b,c){var d,e,f,h;d=g(c)?function(a,b){return u(b)}:G;e={};f=a.length;for(h= -1;++h<f;)e[a[h]]=d(b,c);return e}function p(a,b){var c,d,e;c={};d=a.length;for(e=-1;++e<d;)c[a[e]]=b;return c}function G(a,b){var c;c=u(b);c.value=a;return c}function x(a,b,c,d){b=u(b);return b=z(a,b,c,d)}function z(a,b,c,d){var e;b.get=function(){return a};b.set=c&&d?function(b){if(!c(b))throw e=new TypeError("Invalid type for object property value."),e.__setter=!0,e.__type=!0,e;a=d(b,a)}:c?function(b){if(!c(b))throw e=new TypeError("Invalid type for object property value."),e.__setter=!0,e.__type= !0,e;a=b}:function(b){a=d(b,a)};return b}function A(a){var c;if(!b.obj(a))return!1;for(c in a)if(m(a,c)&&!m(O,c))return!1;return!0}function g(a){return m(a,"get")||m(a,"set")}function D(a,c){var d;if(d=c)d=a,d=m(d,"value")||m(d,"writable");d&&(d={},b.bool(a.enumerable)&&(d.enumerable=a.enumerable),b.bool(a.configurable)&&(d.configurable=a.configurable),a=d);d=c||g(a)?J:I;d=u(d);return C(d,a)}function K(a){return a&&function(b){return r(a,b)}}function M(a,b){for(var c in b)if(m(b,c)&&!m(a,c))return!1; return!0}d.config=function(a,c,d){if(!b.obj(a))throw l.type("obj","config");b.str(c)&&(c=w(c));if(!b.obj(c))throw l.type("props","config");if(b.arr(c)){if(!b.obj(d))throw l.type("descriptor","config");c=p(c,d)}else if(!r("objMap",c))throw l.type("props","config");if(!M(a,c))throw l("A given prop was not defined in the obj","config");return L(a,c)};d.property=function(a,c,d,e,f,p){var t;if(!b.obj(a))throw l.type("obj","property");if(!b.str(c))throw l.type("key","property");t=arguments.length;if(3> t)throw l("No val or descriptor defined","property");if(2<t&&6>t){var k=d,v=e,n=f,w=p;switch(t){case 4:b.str(v)?(n=v,v=h):b.func(v)&&(w=v,v=h);break;case 5:b.func(n)&&(w=n,n=h,b.str(v)&&(n=v,v=h))}b.obj(k)&&A(k)&&(v=k,k=v.value);t=[k,v,n,w];d=t[0];e=t[1];f=t[2];p=t[3]}if(!r("!obj=",e))throw l.type("descriptor","property");if(!r("str=",f))throw l.type("strongType","property");if(!r("func=",p))throw l.type("setter","property");if(f&&!r(f+"=",d))throw l("The val param is not a valid strongType","property"); if(e&&(f||p)&&m(e,"writable"))throw l("A data descriptor may not be used with a strongType/setter","property");t=d;v=f;n=p;k=e||null;k=D(k,!!v||!!n);k=(v=K(v))||n?x(t,k,v,n):g(k)?u(k):G(t,k);return N(a,c,k)};d.prop=d.property;d.property.config=function(a,c,d){if(!b.obj(a))throw l.type("obj","property.config");if(!b.str(c))throw l.type("key","property.config");if(!b.obj(d))throw l.type("descriptor","property.config");if(!m(a,c))throw l("The key was not defined in the obj","property.config");return N(a, c,d)};d.prop.config=d.property.config;d.properties=function(a,d,g,p,m,q){var n,k;if(!b.obj(a))throw l.type("obj","properties");b.str(d)&&(d=w(d));if(!b.obj(d))throw l.type("props","properties");n=b.arr(d);k=arguments.length;if(n&&3>k)throw l("No val defined","properties");!n&&2<k&&(q=m,m=p,p=g,g=h,++k);if(4===k||5===k)k=c(k,p,m,q),p=k[0],m=k[1],q=k[2];if(!r("!obj=",p))throw l.type("descriptor","properties");if(!r("str=",m))throw l.type("strongType","properties");if(!r("func=",q))throw l.type("setter", "properties");if(m){if(n&&!r(m+"=",g))throw l("The val param is not a valid strongType","properties");if(!n&&!f(m,d))throw l("A props value was not a valid strongType","properties");}return e(a,d,g,p,m,q)};d.props=d.properties;d.properties.config=function(a,c,d){if(!b.obj(a))throw l.type("obj","properties.config");b.str(c)&&(c=w(c));if(!b.obj(c))throw l.type("props","properties.config");if(b.arr(c)){if(!b.obj(d))throw l.type("descriptor","properties.config");c=p(c,d)}else if(!r("objMap",c))throw l.type("props", "properties.config");if(!M(a,c))throw l("A given prop was not defined in the obj","properties.config");return L(a,c)};d.props.config=d.properties.config;var I={writable:!0,enumerable:!0,configurable:!0},J={enumerable:!0,configurable:!0},O={get:!0,set:!0,value:!0,writable:!0,enumerable:!0,configurable:!0},E=!!Object.defineProperties&&function(){var a,b,c;b={};a={enumerable:!1,value:b};try{for(c in Object.defineProperty(b,"prop",a),b)if("prop"===c)return!1}catch(d){return!1}return b.prop===b}(),N=E? Object.defineProperty:function(a,b,c){a[b]=m(c,"get")?c.get():c.value;return a},L=E?Object.defineProperties:function(a,b){var c,d;for(d in b)m(b,d)&&(c=b[d],a[d]=m(c,"get")?c.get():c.value);return a},l=n("amend");return d}(),D=function(){function d(a,c,d,h,m,n){var g;if(!b.nil.obj(a))throw e.type("proto");return 1<arguments.length?(g=x(arguments),g[0]=f(a),z.apply(null,g)):f(a)}function c(){}d.object=function(a,c,d,h,m,n){var g;if(!b.nil.obj(a))throw e.type("proto","object");return 1<arguments.length? (g=x(arguments),g[0]=f(a),z.apply(null,g)):f(a)};d.obj=d.object;var f=Object.create||function(a){c.prototype=a;a=new c;c.prototype=null;return a},e=n("create");return d}(),I=function(){function d(a,d){if(b.nil(a))return null;if(!b._obj(a))throw e.type("obj");if(!b.un.bool(d))throw e.type("deep");return d?c(a):f(a)}function c(a,d){for(var e in a)m(a,e)&&b._obj(a[e])&&c(a[e]);return f(a)}d.object=function(a,d){if(b.nil(a))return null;if(!b._obj(a))throw e.type("obj","object");if(!b.un.bool(d))throw e.type("deep", "object");return d?c(a):f(a)};d.obj=d.object;var f=function(){if(!Object.freeze)return function(a){return a};try{return Object.freeze(function(){}),Object.freeze}catch(a){return function(a){return b.func(a)?a:Object.freeze(a)}}}(),e=n("freeze");return d}(),J=function(){function d(a,d){if(b.nil(a))return null;if(!b._obj(a))throw e.type("obj");if(!b.un.bool(d))throw e.type("deep");return d?f(a):c(a)}d.object=function(a,d){if(b.nil(a))return null;if(!b._obj(a))throw e.type("obj","seal");if(!b.un.bool(d))throw e.type("deep", "seal");return d?f(a):c(a)};d.obj=d.object;var c=Object.seal?Object.seal:function(a){return a},f=Object.seal?function p(d){for(var e in d)m(d,e)&&b._obj(d[e])&&p(d[e]);return c(d)}:function(b){return b},e=n("seal");return d}();return{amend:z,create:D,freeze:I,seal:J}}());